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:
TPC-C测试的更多相关文章
- 如何规划和选择数据库服务器:CPU、内存、磁盘、网络(转)
转自:http://blog.chinaunix.net/uid-5715-id-2734517.html 学习如何根据业务模型来计算tpcc值,挺有帮助的. 当一个新的业务系统开发完成后,需要在一个 ...
- EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子
本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,自动生成的discr ...
- LTE 测试文档(翻译)
Testing Documentation 翻译 (如有不当的地方,欢迎指正!) 1 概述 为了测试和验证 ns-3 LTE 模块,文档提供了几个 test suites (集成在 ns- ...
- EF-CodeFirst 继承关系TPH、TPT、TPC
继承关系 面向对象的三大特征之一:继承 ,在开发中起到了重要的作用.我们的实体本身也是类,继承自然是没有问题.下面开始分析 EF里的继承映射关系TPH.TPT.TPC 现在我们有这样一个需求,用户里要 ...
- entity framework里的继承映射关系TPH、TPT和TPC
本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,自动生成的discr ...
- IGS_学习笔记07_IREP通过页面测试客户化Web Service调用(案例)
20150819 Created By BaoXinjian
- EF——继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子 05 (转)
EF里的继承映射关系TPH.TPT和TPC的讲解以及一些具体的例子 本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF ...
- Oracle的TPCC测试,原来也是个作弊的东西...
http://www.oaktable.net/content/sorted-hash-clusters-rip 根据Jonathan Lewis老先生的测试实例,发觉cluster 的sort功能, ...
- oracle 压力测试工具benchmarksql
TPC-C测试 TPC-C 于 1992 年 7 月 23 日认可为新的基准测试.TPC(Transaction Processing Performance Council,事务处理性能委员会)-C ...
- 使用BenchmarkSQL测试PostgreSQL
BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB.PostgreSQL.MySQL.Oracle以及SQL Server等数据库直接进行测 ...
随机推荐
- nyoj--1237--最大岛屿(dfs+数据处理)
最大岛屿 时间限制:1000 ms | 内存限制:65535 KB 难度: 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战 ...
- nyoj--891--找点(贪心)
找点 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点.但是这几天LYH太忙了,你们帮 ...
- Shiro授权认证原理和流程
先来张图: 这是一张shiro的功能图: Authentication: 身份认证/登录,验证用户是否拥有相应的身份 Authorization: 授权/权限验证,验证某个已认证的用户是否拥有某个权限 ...
- (转载)7个去伪存真的JavaScript面试题
7个去伪存真的JavaScript面试题 上周,我发表了<C#程序员的7个面试问题>.这次我要说的是如何淘汰那些滥竽充数的JavaScript程序员. 作者:小峰来源:码农网|2015-0 ...
- Codeforces 959E. Mahmoud and Ehab and the xor-MST 思路:找规律题,时间复杂度O(log(n))
题目: 解题思路 这题就是0,1,2...n-1总共n个数字形成的最小生成树. 我们可以发现,一个数字k与比它小的数字形成的异或值,一定可以取到k与所有正整数形成的异或值的最小值. 要计算n个数字的情 ...
- jquery.gritter 提示
首先引入css和js文件 <link rel="stylesheet" href="<%=basePath%>assets/css/jquery.gri ...
- STM8S103 STVD编译空间不足
关于text空间(理解为代码空间)不足问题 # 关于.bsct和.ubsct问题(着重参考http://www.waveshare.net/article/STM8-3-1-10.htm) map文件 ...
- 手把手教你如何新建scrapy爬虫框架的第一个项目(下)
前几天小编带大家学会了如何在Scrapy框架下创建属于自己的第一个爬虫项目(上),今天我们进一步深入的了解Scrapy爬虫项目创建,这里以伯乐在线网站的所有文章页为例进行说明. 在我们创建好Scrap ...
- React中的事件处理为什么要bind this?
个人总结: 问: 请给我讲一下React中的事件处理为什么要bind this? 答: 好的,比如说我写了一个类组件,有个onClick属性 ,onClick={ this.fun },如果不bind ...
- 线段树合并&&启发式合并笔记
这俩东西听起来很高端,实际上很好写,应用也很多~ 线段树合并 线段树合并,顾名思义,就是建立一棵新的线段树保存原有的两颗线段树的信息. 考虑如何合并,对于一个结点,如果两颗线段树都有此位置的结点,则直 ...