benchmarksql测试mysql_使用benchmarkSQL测试数据库的TPCC-程序员宅基地

技术标签: benchmarksql测试mysql  

压力测试是指在MySQL上线前,需要进行大量的压力测试,从而达到交付的标准。压力测试不仅可以测试MySQL服务的稳定性,还可以测试出MySQL和系统的瓶颈。

TPCC测试:Transaction Processing Performance Council,要熟练使用

TPC是一系列事务处理和数据库基准测试的规范。其中TPC-C是针对OLTP的基准测试模型,一方面可以衡量数据库的性能,另一方面可以衡量硬件性价比,也是广泛应用并关注的一种测试模型。

TPC-C模型是以一个在线零售业为例,设计的一种模型。具体架构如下所示:

efe1369fb95046f30508fb9bbf30d269.png

https://rensanning.iteye.com/blog/2159732?utm_source=jiancool

引用

$ sysbench --test=oltp --db-driver=mysql --mysql-password=sbtest prepare

$ sysbench --test=oltp --db-driver=mysql --mysql-password=sbtest run

结果:

引用

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:

Number of threads: 1

Doing OLTP test.

Running mixed OLTP test

Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)

Using "BEGIN" for starting transactions

TPC-C测试模型给基准测试提供了一种统一的测试标准,并非实际应用系统中的真实测试结果,但通过测试结果,可以大体观察出MySQL数据库服务稳定性、性能以及系统性能等一系列问题。TPC-C仅仅是一个测试模型,而在实际测试中,需要参考和使用一些测试工具,对系统和MySQL数据库进行压力测试、稳定性测试。

1.安装bzr工具

[root@mysql1 /]# yum install bzr

2.下载tpcc-mysql

[root@mysql1 /]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql

3.编译安装tpcc-mysql

[root@mysql1 /]# export PATH=/usr/local/mysql/bin:$PATH

[root@mysql1 /]# cd tpcc-mysql/src

[root@mysql1 src]# make

4.创建库

[mysql@mysql1 ~]$ mysqladmin -usystem -p123456 -S /data/mysqldata/3306/mysql.sock create tpcc

5.创建表

[mysql@mysql1 ~]$ mysql -usystem -p123456 -S /data/mysqldata/3306/mysql.sock tpcc < /tpcc-mysql/create_table.sql

6.添加外键

[mysql@mysql1 ~]$ mysql -usystem -p123456 -S /data/mysqldata/3306/mysql.sock tpcc < /tpcc-mysql/add_fkey_idx.sql

7.加载数据

tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个socket位置,因此如果你的socket不在相应路径的话,就需要做个软连接

[root@mysql1 ~]# ln -s /data/mysqldata/3306/mysql.sock /var/lib/mysql/mysql.sock

[root@mysql1 ~]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64

如果出现错误,尝试上面的步骤

[mysql@mysql1 ~]$ /tpcc-mysql/tpcc_load localhost tpcc system "123456" 10

*************************************

*** ###easy### TPC-C Data Loader  ***

*************************************

[server]: localhost

[port]: 3306

[DBname]: tpcc

[user]: system

[pass]: 123456

[warehouse]: 10

TPCC Data Load Started...

Loading Item

.................................................. 5000

.................................................. 10000

.................................................. 15000

...DATA LOADING COMPLETED SUCCESSFULLY.

8.进行测试

[mysql@mysql1 ~]$ /tpcc-mysql/tpcc_start -h localhost -d tpcc -u system -p "123456" -w 1 -c 10 -r 10 -l 20 -f /home/mysql/tpcc_mysql.log -t /home/mysql/tpcc_mysql.rtx

-h:测试主机

-d:测试的数据库

-u:测试的用户

-p:测试用户的密码

-w:测试的warehouse数

-c:测试的连接线程数

-r:预热时间,warmup_time,以秒为单位,默认是10秒,目的是为了将数据加载到内存

-l:测试时间,默认为20秒

-i:report_interval指定生成报告的间隔时间

-f:report_file将测试中各项操作的记录输出到指定文件内保存

-t:trx_file输出更详细的操作信息到指定文件内保存

下面是返回结果:

***************************************

*** ###easy### TPC-C Load Generator ***

***************************************

option h with value 'localhost'

option d with value 'tpcc'

option u with value 'system'

option p with value '123456'

option w with value '1'

option c with value '10'

option r with value '10'

option l with value '20'

option f with value '/home/mysql/tpcc_mysql.log'

option t with value '/home/mysql/tpcc_mysql.rtx'

[server]: localhost

[port]: 3306

[DBname]: tpcc

[user]: system

[pass]: 123456

[warehouse]: 1

[connection]: 10

[rampup]: 10 (sec.)

[measure]: 20 (sec.)

RAMP-UP TIME.(10 sec.)

MEASURING START.

10, 686(0):2.044|3.593, 684(0):0.487|1.325, 68(0):0.136|0.212, 68(0):2.060|2.095, 69(0):5.817|6.441

20, 676(0):1.508|2.585, 679(0):0.352|1.618, 67(0):0.140|0.294, 68(0):1.585|1.762, 67(0):4.154|5.968

分为6项,依次为操作时间(秒)、创建订单、订单支付、查询订单、发货以及查询库存

STOPPING THREADS..........

[0] sc:1362  lt:0  rt:0  fl:0

[1] sc:1363  lt:0  rt:0  fl:0

[2] sc:135  lt:0  rt:0  fl:0

[3] sc:136  lt:0  rt:0  fl:0

[4] sc:136  lt:0  rt:0  fl:0

in 20 sec.

[0] sc:1362  lt:0  rt:0  fl:0

[1] sc:1363  lt:0  rt:0  fl:0

[2] sc:135  lt:0  rt:0  fl:0

[3] sc:136  lt:0  rt:0  fl:0

[4] sc:136  lt:0  rt:0  fl:0

(all must be [OK])

[transaction percentage]

Payment: 43.52% (>=43.0%) [OK]

Order-Status: 4.31% (>= 4.0%) [OK]

Delivery: 4.34% (>= 4.0%) [OK]

Stock-Level: 4.34% (>= 4.0%) [OK]

[response time (at least 90% passed)]

New-Order: 100.00%  [OK]

Payment: 100.00%  [OK]

Order-Status: 100.00%  [OK]

Delivery: 100.00%  [OK]

Stock-Level: 100.00%  [OK]

4086.000 TpmC  每分钟能够处理的订单数量

benchmarkSQL在使用时分为数据准备和测试执行两个阶段,其中数据准备阶段完全在命令行环境,而执行测试则根据当前用户状态而自动选择在命令行,或界面中执行。JDK1.7

二、数据准备:

1. 在lib中放置JDBC驱动;

2. 修改run目录下:run开头的3个文件,修改里面jdbc驱动名称;

3. 修改配置文件,其中props.ora和props.pg分别是对应oracle和pg数据库的;

第一个部分是JDBC连接信息。

第二个部分是场景设置,其中runTxnsPerTerminal是每分钟执行事务数,runMins是执行多少分钟,limitTxnsPerMin是每分钟执行的事务总数,并且这里时间的单位是分钟。场景执行的最低条件是第二项大于0。

第三个部分是TPCC中,五个事务执行的比例,总数等于100,通常不用修改。

1) 建表:

建表的前提是初始化数据库

然后执行./runSQL kingbase.properties sqlTableCreates

sqlTableCreates是默认的建表语句,首先在库中创建一个benchmarksql模式,所有表都创建在这个模式下。

*由于建表语句中没有表空间的设置信息,因此如果创建比较大的表,系统会报错,只要根据之前执行TPCC测试时的建表语句,稍加修改即可。

*在ISQL模式下,使用set search_path=模式名; 可以切换当前操作路径,按默认的方式查看指定模式下的内容。

*在run中,对应建表,建索引,还有删除表,复制表,删除索引等几个脚本,可以配合使用。

2) 加载数据:

在run下执行./runLoader.sh kingbase.properties numWarehouses 1300

注意如果表过大,需要提前修改建表语句,增加表空间。

3) 创建索引:

在run下执行./runSQL kingbase.properties sqlIndexCreates

4) 执行测试:

在run下执行./runBenchmark.sh kingbase.properties

系统开始滚屏,执行指定时间后显示需要的统计信息:

一、BenchmarkSQL是什么?

BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB、PostgreSQL、MySQL、Oracle以及SQL Server等数据库直接进行测试。

二、测试前提

1. 安装JDK。因为BenchmarkSQL本身是使用Java语言编写的,所以如果在Linux系统下还没有安装JDK的话,我们首先需要对其进行安装;

2. 安装PostgreSQL数据库系统。俗话说巧妇难为无米之炊,测试之前肯定需要有测试对象,本文是测试PG系统,故需安装有PG;

3. 安装BenchmarkSQL

可到http://sourceforge.net中搜索BenchmarkSQL即可下到,windows,linux版均有。我下载的是linux版的软件包BenchmarkSQL-2.3.3.zip,unzip解压后可以在README文件中看到该软件的使用说明,下面用中文具体介绍一下它的使用方法。

三、测试步骤

1. 启动待测试的数据库系统,这里即指启动PostgreSQL

2. 在BenchmarkSQL-2.3.3/run目录下找到postgres.properties配置文件,修改该文件如下:

driver=org.postgresql.Driver

conn=jdbc:postgresql://localhost:5432/test        #链接数据库地址

user=postgres      #链接数据库用户名

password=password    #密码

如果想测试其他数据库系统,则修改其他相应的配置文件即可,如oracle.properties等等。

3. 创建TPC-C基础表(即上篇博文中介绍的TPC-C模拟场景中9张表)

命令: runSQL.sh postgres.properties sqlTableCreates

4. 向数据库中导入指定大小的数据(参考资料2中此步有个小问题,多写一个等号)

命令:loadData.sh postgres.properties numWarehouses 10

numWarehouse指的是仓库数(具体含义见上篇博文),默认为1,导入9张表的数据大小大概70多M,

当 numWarehouse为10时,数据大小可以近似当作1GB数据。

5. 为基础表创建必要的索引

命令: runSQL.sh postgres.properties sqlIndexCreates

6. 运行runBenchmark.sh借助GUI程序测试数据库

命令:runBenchmark.sh postgres.properties

注意:不要忘记设置图形界面的仓库数时要与第4步中设置的数量相符;此外,测试的结果报告除了显示在图形界面有显示以外,还在run/reports目录下有备份,随时可以查阅。

数据库TPCC benchmark测试工具对比

https://blog.csdn.net/luke_wang/article/details/71860667

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35756892/article/details/113284515

智能推荐

【Solidity 开发】合约函数返回 struct 或 struct 数组_solidity 返回数组-程序员宅基地

文章浏览阅读1.6w次。在solidity 0.4 时代,是不支持返回struct的。但现在solidity已经进入了0.8的版本,这个版本是支持直接返回struct与struct array的,以下为具体做法。_solidity 返回数组

DataGridView中DataGridViewComboBoxColumn的一些相关应用(一)让其值改变时触发事件_datagridview commitedit-程序员宅基地

文章浏览阅读3.8k次。 今天在csdn回一个帖子的时候看到一个DataGridView问题,需要触发DataGridViewComboBoxCell中的事件才能够解决. 打开vs试了下没有找到能直接触发DataGridViewComboBoxCell中combobox的值改变的事件,郁闷了半天,仔细看MSDN上有解决示例,都怪自己没有仔细看:首先需要触发第一个事件:CurrentCellDirtyStateCh_datagridview commitedit

Apollo详解之定位模块———导航设备硬件基础_gpchc-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏22次。本文以华测CHC CGI-610组合导航为例主机安装方法在实际安装时,主机的GNSS1、GNSS2、4G接口分别通过数据线连接两个GNSS天线、4G天线,最后一个COM接口连接数据线,用于连接工控机以及外接电源。数据线接口定义19PIN 数据线主要包括 3 个 RS232,1 个 RS422,1 个 CAN,一个电源口,其中C_RS232:可通过网页配置选择输出组合导航融合数据(包括 GPCHC、GPGGA、GPRMC),最高输出频率 100HZ,默认波特率 230400,其与工控机连接。_gpchc

python代码实现MATLAB里面的高斯Q函数qfunc以及高斯Q函数的反函数qfuncinv_matlab q函数-程序员宅基地

文章浏览阅读956次。【代码】python代码实现MATLAB里面的高斯Q函数qfunc以及高斯Q函数的反函数qfuncinv。_matlab q函数

hadoop启动命令 start-all.sh失效解决办法_hduser@hduser-virtualbox:~$ start-all.sh this scri-程序员宅基地

文章浏览阅读3.8w次,点赞9次,收藏35次。很多人在配置好了hadoop集群后,输入启动命令 start-all.sh 时,报错:This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh 如下:hadoop@master:~/hadoop-2.6.4$ start-all.shThis script is Deprecated. Inste_hduser@hduser-virtualbox:~$ start-all.sh this script is deprecated. instead

15.Mybatis 更新操作-update_update mybatis-程序员宅基地

文章浏览阅读7.5w次,点赞17次,收藏37次。1. update 标签update 标签是用于定义更新 语句的.1.1 常用属性update 有几个常用的属性, 但是通常只需要设置id 即可.id: sql 片段在命名空间内的唯一标识. 和mapper 中方法名保持一致parameterType: 参数类型, 通常都可以省略.flushCache: 是否刷新(清空)一级缓存和二级缓存, 默认为true. 笔者尝试设置为false..._update mybatis

随便推点

“Unknown initial character set index '255' received from serve”错误解决过程 - Mybatis 示例_unknown initial character 255-程序员宅基地

文章浏览阅读4.7k次,点赞8次,收藏13次。今天在学习Mybaits的时候,根据教程写出了一个第一个程序——从数据库读取一条数据并打印。当一切都就绪了:user.javaUserMapper.xmlmybatis-config.xml测试类依葫芦画瓢地写下来,以为没问题了,运行这个测试方法,竟然报错了:org.apache.ibatis.exceptions.PersistenceException: ### Err..._unknown initial character 255

[附源码]JAVA+ssm校友信息管理系统(程序+Lw)_java校友信息管理系统-程序员宅基地

文章浏览阅读307次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;_java校友信息管理系统

linux网络编程之socket编程(三)-程序员宅基地

文章浏览阅读94次。今天继续对socket编程进行学习,在学习之前,需要回顾一下上一篇中编写的回射客户/服务器程序(http://www.cnblogs.com/webor2006/p/3923254.html),因为今天的知识点需要基于它来进行说明,下面来回顾一下关键代码:对于服务器端:echosrv.c对于客户端:echocli.c下面通过一个简单的图来描述一下其关系:可想而知,这两个套接字都有..._if (connect(sock, (struct sockaddr*)(&addr), sizeof(addr))

magic4.0跟harmonyos,支持升级Harmony 2.0 Magic UI 4.0 9月中旬招募公测-程序员宅基地

文章浏览阅读1.4k次。Magic UI 4.0系统将于9月中旬开始招募公测,适配荣耀30系列以及荣耀V30系列产品,后续同样支持升级为HarmonyOS 2.0系统。【PChome手机频道资讯报道】9月10日,华为开发者大会(HDC 2020)正式召开,正式推出HarmonyOS 2.0与EMUI 11操作系统。与此同时,荣耀在微博官宣,Magic UI 4.0系统也将于9月中旬开始招募公测,Magic UI 4.0广..._magicui4什么时候升的

关于启动报错:Field xxxMapper in com.xxx.service.impl.xxxServiceImpl required a bean of type的解决方案_field teachermapper in com.example.itextdemo.servi-程序员宅基地

文章浏览阅读3w次,点赞14次,收藏8次。检测你的启动类Application的MapperScan注解扫描是否配置正确!_field teachermapper in com.example.itextdemo.service.impl.eduteacherservicei

win7成功下编译VLC1.0.5-程序员宅基地

文章浏览阅读64次。想用最新版本的VLC 于是编译1.0.5版本由于有了前面的基础只需要以下几步就OK:关于修改1. 很多人提示的修改libtool第144行。--我的144行不是blank ,so没有更改;22) 注释掉Makefile.am第697,727,738行,就是行首加入#。#cp "$(top_srcdir)/extras..._vlc-1.0.5-win32.exe