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

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

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

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

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目录下有备份,随时可以查阅。

benchmarksql测试mysql_使用benchmarkSQL测试数据库的TPCC相关推荐

  1. 手机测试mysql_三种测试华为手机真伪的方法,你确定都知道吗?学会可进行自查...

    三种测试华为手机真伪的方法,你确定都知道吗?学会可进行自查 发布时间:2020-08-13 06:17:47 来源:ITPUB博客 阅读:110 作者:有着大V梦的科技熊 很多人进行购买手机时都怕买到 ...

  2. 达梦数据库的TPCC测试记录

    达梦数据库的TPCC测试记录 测试环境 本文主要目的是介绍使用 benchmarksql工具进行 TPCC 测试的步骤 使用工具版本:benchmarksql-4.1.1 服务器:华为泰山v1 CPU ...

  3. 在Spring Boot测试中使用Testcontainer进行数据库集成测试

    在此博客文章中,我想演示如何在Spring Boot测试中集成Testcontainer以便与数据库一起运行集成测试. 我没有使用Testcontainers的Spring Boot模块. 如何与他们 ...

  4. 测试面试题集-MySQL数据库灵魂拷问加强版

    VOL 168 22 2020-10 今天距2021年70天 这是ITester软件测试小栈第168次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  5. tsung压测mysql_高并发测试工具Tsung使用教程

    tsung是erlang开发的一款开源的多协议分布式负载并发测试工具, 可用作HTTP.WebDAV.SOAP.PostgreSQL.MySQL.LDAP 和 Jabber/XMPP的服务器压力测试. ...

  6. tpch测试mysql_数据库系统TPC-H测试方法及结果分析

    1.引言 如今,多样的交易模式以及大众消费观念的改变使得数据库应用领域不断扩大,现代的大型分布式应用系统的数据膨胀也对数据库的海量数据处理能力和并行处理能力提出了更高的要求,如何在数据呈现海量扩张的同 ...

  7. java毕业设计基于的测试项目管理平台Mybatis+系统+数据库+调试部署

    java毕业设计基于的测试项目管理平台Mybatis+系统+数据库+调试部署 java毕业设计基于的测试项目管理平台Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  8. ycsb mysql_使用 YCSB 测试 MySQL on TerarkDB

    1. 安装并启动 TerarkSQL 2. 创建测试所需的数据库以及表 下载测试程序以及创建测试所需要表的 SQL 脚本 wget http://terark-downloads.oss-cn-qin ...

  9. 计算机毕业设计Java海南自贸港知识学习与测试(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java海南自贸港知识学习与测试(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java海南自贸港知识学习与测试(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...

最新文章

  1. 安装apr和tomcat-native优化tomcat
  2. proteus如何添加stm32_【Proteus】单片机H桥驱动24V直流有刷电机
  3. boost::make_connected用法的测试程序
  4. vscode中怎样格式化js代码_[VSCode插件推荐] Bracket Pair Colorizer: 为代码中的括号添上一抹亮色...
  5. 全网Star最多(近20k)的Spring Boot开源教程 2019 年要继续更新了!
  6. Navicat for mysql 远程连接 mySql数据库10061错误问题
  7. 在普通java类里获取Spring管理的bean
  8. Python查找所有类似于123-45-67+89 = 100的组合
  9. 阿里云服务器ECS选型
  10. 字符串长度的求解 (3种方法)
  11. 闲话WPF之二十(WPF中的传递事件 [2] )
  12. android Fragment 动画 设置位置
  13. c语言程序游戏例子,C语言编程——取石子游戏实例解答
  14. 机器学习原来这么有趣!第三章:图像识别【鸟or飞机】?深度学习与卷积神经网络
  15. FlashFXP,flashfxp连接失败
  16. 金仓数据库 KingbaseES 插件参考手册(23. dbms_utility)
  17. 游戏密码123456问题
  18. 解决.bat文件打开是记事本的问题
  19. Java swing + socket 写的一个五子棋网络对战游戏
  20. 隐写术-----黑与白(二)

热门文章

  1. 陈皓:Git显示漂亮日志的小技巧
  2. 基于Hadoop的高校大数据治理融合系统设计与实现
  3. 【51nod_3121】小陶与杠铃片
  4. 基于微信小程序的学生选课管理系统 小程序 uniapp
  5. vps实现私人代码托管并用nginx部署hexo
  6. 农业期刊论文发表的格式
  7. T48 原地实现矩阵的转置
  8. 蓝桥杯C/C++省赛:振兴中华
  9. 非常吐血的有道迷题之一
  10. ds存储查看 linux,我的NAS我的地盘 篇五:群晖NAS软件介绍与应用之DS Audio篇