zoukankan      html  css  js  c++  java
  • TPC-C测试

      TPC发布的测试标准之一,是专门针对联机事务处理系统(OLTP)的测试标准。1992年发布1.0版本。最新版本5.11,2010年发布。

       测试规范中模拟了一个比较复杂并具有代表意义的OLTP应用环境,并对系统配置规定了具体详细的要求,如数据库的结构、事务的类型和比例、事务相应时间限制等。

    TPC-C标准中应用环境的体系结构

    TPC-C标准中的数据库结构

    TPC-C标准中规定的事务类型和比例

    TPC-C标准中规定的五种事务

    1.新订单(New-Order):对于任意一个客户端,从固定的仓库随机选取  5-15  件商品,创建新订单,其中 1%的订单要由假想的用户操作失败而回滚。

    主要特点:中量级、读写频繁、要求响应快。

    2.支付操作(Payment):对于任意一个客户端,从固定的仓库随机选取一个辖区及其内用户,采用随机的金额支付一笔订单,并作相应历史纪录。

    主要特点:轻量级,读写频繁,要求响应快。

    3.订单状态查询(Order-Status):对于任意一个客户端,从固定的仓库随机选取一个辖区及其内用户,读取其最后一条订单,显示订单内每件商品的状态。

    主要特点:中量级,只读频率低,要求响应快。

    4.发货(Delivery):对于任意一个客户端,随机选取一个发货包,更新被处理订单的用户余额,并把该订单从新订单中删除。

    主要特点:1-10 个批量,读写频率低,较宽松的响应时间

    5.库存状态查询(Stock-Level):对于任意一个客户端,从固定的仓库和辖区随机选取最后 20 条订单,查看订单中所有的货物的库存,计算并显示所有库存低于随机生成域值的商品数量。

    主要特点:重量级,只读频率低,较宽松的响应时间。

    TPC-C标准中规定的各类事务响应时间

    TPC-C标准中的事务处理流程图

    TPCC测试步骤:

    准备工作:

    1.安装postgresQL9.2.4,安装目录为/usr/local/pgsql,几台测试机都已装好。

    2. 创建数据目录,用于存放数据库数据。

    mkdir    /usr/local/pgsql/data

    chown   postgres  /usr/local/pgsql/data  //将数据目录的所有权赋予postgres用户,这个用户是专门用来登录数据库的用户,安装linux时已经创建,密码也是postgres。

    3. 切换用户到postgres: su postgres

    4. 初始化数据库,到/usr/local/pgsql/bin  目录下,运行初始化脚本:

    ./initdb  -D  /usr/local/pgsql/data    //-D就是指定数据目录的意思,这个目录可以按照需要任意改变。

    5. 启动数据库服务器,到/usr/local/pgsql/bin  目录下,

    ./postgres  -D /usr/local/pgsql/data  

    6. 在psql下创建数据库用户benchmarksql:

    切换到postgres用户,到/usr/local/pgsql/bin下运行:

    ./psql      //默认以管理员用户登录默认数据库postgres(这里是数据库名,和前面的操作系统用户不同)

    create user benchmarksql  with superuser password ‘123456’;

    7. 退出psql:q  ,再以benchmarksql用户登录:

    ./psql  -U benchmarksql  -d postgres   //-d 指定数据库名

    8. Benchmarksql是java程序,需要安装jdk,因为我们用的是benchmarksql的老版本,要求的jdk版本是5.0,安装后配置环境变量。

    JDK安装

     1、修改文件可执行权限

          #chmod +x jdk-1_5_0_22-linux-i586-rpm.bin

      2、文件解压

          #./jdk-1_5_0_22-linux-i586-rpm.bin

          出现一行字:Do you aggree to the above license terms? [yes or no]
          安装程序在问您是否愿意遵守上面的许可协议。当然要同意,输入"y" 或 "yes" 回车

          解压后的文件是jdk-1_5_0_22-linux-i586.rpm包。

      3、执行安装

           #rpm -ivh jdk-1_5_0_22-linux-i586.rpm

           安装软件会将JDK自动安装到 /usr/java/目录下

    JDK配置 

       1、设置环境变量

            #vi /etc/profile

            在文件最后添加如下内容

            #set java environment
            JAVA_HOME=/usr/java/jdk1.5.0_22
            CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
            PATH=$JAVA_HOME/bin:$PATH
            export JAVA_HOME CLASSPATH PATH

             保存后退出

        2、使用设置快速生效

             让设置的环境变量立即生效 ,可以使用如下命令:

        source /etc/profile

        3、验证

              #java -version

             如果看到JVM版本及相关信息,即安装成功!屏幕输出:
               java version "1.5.0_22"
               Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
               Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode, sharing)

    (JDK卸载

            1、查看rpm安装的JDK版本

                #rpm -qa|grep jdk

                可能看到如下类似的信息:

                jdk-1.5.0_22-fcs.x86_64

           2、卸载JDK

               #rpm -e --nodeps jdk-1.5.0_22-fcs.x86_64)

    Benchmarksql操作:

    1. 修改参数文件

    Benchmarksql下载到zip格式的程序包,解压就可以用,安装目录在/root/software/Benchmarksql2.3.2(2.3.3),

    到此目录下进入run目录,打开postgres.properties,修改参数:driver=org.postgresql.Driver

    conn=jdbc:postgresql://222.29.193.207:5432/postgres

    //指定要连接的数据库服务器的IP,如果本机就是localhost,5432是端口号不用动,postgres是要连接的数据库名。

    user=benchmarksql   //数据库用户名

    password=123456    //数据库用户benchmarksql的密码

    2. 创建TPC-C标准规定的9个表:

    ./runSQL.sh  postgres.properties  sqlTableCreates

    这时候可以在psql输入dt命令查看有没有生成9个表 。

    3. 加载数据:

    ./loadData.sh postgres.properties  numWarehouses  10 //warehouses个数决定测试的数据量,根据情况指定

    4. 创建索引:

    ./runSQL.sh postgres.properties  sqlIndexCreates

    5. 运行测试:

    ./runBenchmark.sh postgres.properties

    这时会弹出java的图形化界面,修改

    warehouses的值,要和之前导入的个数要相同;

    terminals的值,是warehouses的10倍;

    测试时间,TPC-C标准规定的测试时间是2个小时,我们在试探性阶段可以设置的短一些;

    最后点击创建terminals、开始测试即可。

    运行结束,在run目录下的reports目录中生成测试报告。

    6. 下一轮测试:

    下一次测试需要重新加载数据,首先运行删除索引脚本,然后清空所有数据:

    ./runSQL.sh postgres.properties  sqlIndexDrops

    ./runSQL.sh postgres.properties  sqlTableTruncates

    然后执行3-5步骤即可。

    注:以上命令全部基于Linux,Windows下只需将.sh脚本换为.bat即可。

     附上几张设置及测试结果图:(两颗物理CPU Intel(R) Xeon(R) CPU E5-2620  2.10GHz,6核,24颗逻辑CPU,)PG shared_buffer 10GB:

  • 相关阅读:
    Laravel + Vue 之 OPTIONS 请求的处理
    Vue2.0 keep-alive 组件的最佳实践
    Vue.js 登录注册实现
    数仓项目04:环境搭建(MysqlHA+Hive)
    CentOS7_JDK安装和环境变量配置
    改环境变量改出问题了,vi,ls这些命令都不能用了,怎么办
    CentOS7配置网络
    curl命令下载jdk
    CentOS7设置IP地址
    ODPS
  • 原文地址:https://www.cnblogs.com/songyuejie/p/4587772.html
Copyright © 2011-2022 走看看