基于TPC-C的OLTP基准测试,对比Mysql和PostgreSQL的性能

一、什么是TPC-C和tpmC

1、TPC-C

TPC-C是一种旨在衡量联机事务处理(OLTP)系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式小批量事务在内的广泛数据库功能进行测试。TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务(tpmC)吞吐量。

2、tpmC

tpmC值在国内外被广泛用于衡量计算机系统的事务处理能力,是TPC-C吞吐率的单位。tpm是transactions per minute的简称;C指TPC中的C基准程序。它的定义是每分钟内系统处理的新订单个数。

二、sysbench

sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。

1、下载安装

从GitHub上下载安装包:下载地址

安装

安装sysbench之前,因为是对比Mysql和PostgreSQL,所以先安装两个数据库,我的PG用源码编译安装,Mysql使用yum安装,还需要安装对应版本的mysql-devel

yum install mysql-devel

先定位好PG和Mysql的头文件和lib文件,即include和lib文件夹,如:

PG:/opt/pgsql/include /opt/pgsql/lib

mysql: /usr/include/mysql /usr/lib64/mysql

将下载好的sysbench安装包上传至服务器,解压后编译安装

unzip sysbench-master.zip

cd sysbench-master

./ autogen.sh 生成configure文件

./configure –prefix=/opt/sysbench --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql --with-pgsql --with-pgsql-includes=/opt/pgsql/include --with-pgsql-libs=/opt/pgsql/lib

make && make install

[NOTE]

sysbench也支持Oracle,安装时可以用--with-oracle参数来安装。

设置环境变量:vim ~/.bash_profile添加:

export LD_LIBRARY_PATH=/opt/pgsql/lib

export PATH=$PATH:/opt/sysbench/bin

完成安装

2、sysbench支持的几种测试模式

CPU运算性能

磁盘IO性能

调度程序性能

内存分配及传输速度

POSIX线程性能

数据库性能(OLTP基准测试)

[NOTE]

目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。

3、数据库性能测试

以Mysql数据库为例,sysbench的数据库性能测试主要分为三个步骤,prepare、run、cleanup

准备阶段(prepare)

sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sbtest --mysql-user=root --mysql-password=Grea1234 --table_size=1000000 --tables=10 --threads=20 --events=0 --report-interval=10 --time=120 --range_size=500 prepare

部分参数说明:

--mysql-host IP

--mysql-port 端口号

--mysql-db 希望链接的数据库

--mysql-user 用户名

--mysql-password 密码

--table_size 每张表初始化的数据数量

--tables 初始化表的数量

--threads 启动的线程

--time 运行时间设为0表示不限制时间

--report-interval 运行期间日志,单位为秒

--events 最大请求数量,定义数量后可以不需要--time选项

执行阶段(run)

sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sbtest --mysql-user=root --mysql-password=Grea1234 --table_size=1000000 --tables=10 --threads=20 --events=0 --report-interval=10 --time=120 --range_size=500 run >>/opt/sysbench/result/oltp_read_write.log

清理数据阶段(cleanup)

sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sbtest --mysql-user=root --mysql-password=Grea1234 --table_size=1000000 --tables=10 --threads=20 --events=0 --report-interval=10 --time=120 --range_size=500 cleanup

[NOTE]

对PG数据库进行测试,添加参数--db-driver=pgsql,然后对应的将mysql换成pgsql;

样例中是oltp的读写模式,还有只读模式等,具体可以通过sysbench --help查看或者sysbench testname help查看具体test的帮助,如sysbench oltp_read_write help

4、结果解读

Running the test with following options:

Number of threads: 5

Report intermediate results every 10 second(s)

Initializing random number generator from current time

Initializing worker threads...

Threads started!

-- 每10秒钟报告一次测试结果,tps、每秒读、每秒写、95%以上的响应时长统计

[ 10s ] thds: 5 tps: 294.23 qps: 5893.38 (r/w/o: 4125.90/1178.52/588.96) lat (ms,95%): 24.83 err/s: 0.00 reconn/s: 0.00

[ 20s ] thds: 5 tps: 302.41 qps: 6046.38 (r/w/o: 4232.73/1208.84/604.82) lat (ms,95%): 22.69 err/s: 0.00 reconn/s: 0.00

[ 30s ] thds: 5 tps: 282.70 qps: 5653.91 (r/w/o: 3958.11/1130.40/565.40) lat (ms,95%): 24.83 err/s: 0.00 reconn/s: 0.00

[ 40s ] thds: 5 tps: 299.80 qps: 5993.54 (r/w/o: 4195.16/1198.79/599.59) lat (ms,95%): 22.69 err/s: 0.00 reconn/s: 0.00

[ 50s ] thds: 5 tps: 310.00 qps: 6204.40 (r/w/o: 4342.80/1241.60/620.00) lat (ms,95%): 21.50 err/s: 0.00 reconn/s: 0.00

[ 60s ] thds: 5 tps: 282.20 qps: 5641.45 (r/w/o: 3949.33/1127.71/564.40) lat (ms,95%): 22.69 err/s: 0.00 reconn/s: 0.00

[ 70s ] thds: 5 tps: 301.77 qps: 6037.16 (r/w/o: 4226.12/1207.49/603.55) lat (ms,95%): 21.89 err/s: 0.00 reconn/s: 0.00

[ 80s ] thds: 5 tps: 317.23 qps: 6345.01 (r/w/o: 4441.36/1269.20/634.45) lat (ms,95%): 21.11 err/s: 0.00 reconn/s: 0.00

[ 90s ] thds: 5 tps: 317.10 qps: 6341.87 (r/w/o: 4439.28/1268.39/634.20) lat (ms,95%): 21.11 err/s: 0.00 reconn/s: 0.00

[ 100s ] thds: 5 tps: 314.40 qps: 6288.52 (r/w/o: 4401.71/1258.00/628.80) lat (ms,95%): 21.50 err/s: 0.00 reconn/s: 0.00

[ 110s ] thds: 5 tps: 316.70 qps: 6334.14 (r/w/o: 4433.93/1266.81/633.40) lat (ms,95%): 21.11 err/s: 0.00 reconn/s: 0.00

[ 120s ] thds: 5 tps: 318.57 qps: 6370.30 (r/w/o: 4459.68/1273.48/637.14) lat (ms,95%): 21.11 err/s: 0.00 reconn/s: 0.00

SQL statistics:

queries performed:

read: 512078 -- 读总数

write: 146308 -- 写总数

other: 73154 -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)

total: 731540 -- 全部总数

transactions: 36577 (304.76 per sec.) -- 总事务数(每秒事务数)

queries: 731540 (6095.25 per sec.) -- 总操作数包括读写和其他(每秒操作数)

ignored errors: 0 (0.00 per sec.) -- 错误次数

reconnects: 0 (0.00 per sec.) -- 重连次数

Throughput:

events/s (eps): 304.7625 -- 每秒事务数

time elapsed: 120.0181s -- 运行时间

total number of events: 36577 -- 总的事务数

Latency (ms):

min: 8.99 -- 最小耗时

avg: 16.40 -- 平均耗时

max: 505.74 -- 最长耗时

95th percentile: 22.28 -- 超过95%平均耗时

sum: 599942.57

Threads fairness: -- 线程公平性统计信息,表示负载的公平性

events (avg/stddev): 7315.4000/8.82

execution time (avg/stddev): 119.9885/0.01

[NOTE]

我们主要关注总事务数和每秒事务数来做对比

5、其他几种模式简单测试

测试CPU性能

sysbench cpu --cpu-max-prime=10000 run

I/O测试

准备:sysbench fileio --file-total-size=40G prepare

运行顺序写入测试:sysbench fileio --file-total-size=40G --file-test-mode=seqwr run

运行顺序重写测试:sysbench fileio --file-total-size=40G --file-test-mode=seqrewr run

sysbench mysql oltp_用sysbench进行数据库OLTP基准测试相关推荐

  1. MySQL性能测试工具sysbench的安装和使用

    sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Oracle和PostgreSQL.当前 ...

  2. sysbench mysql测试_使用sysbench对MySQL进行测试

    为什么要测试,测什么东西? 测试的种类非常多,测试的目的也非常多,我这里主要的目的就两个 测试MySQL的极限IO 对比不同版本MySQL,不同参数, 不同硬件,不同系统对MySQL的性能影响 为什么 ...

  3. MySQL 常用工具sysbench/fio/tpcc等测试

    为什么要压力测试 采购新设备,评估新设备性能 开发新项目,评估数据库容量 新系统上线前,预估/模拟数据库负载 更换数据库版本,评估性能变化 关注指标  CPU %wait,%user,%sys 内存 ...

  4. [MySQL]-压力测试之Sysbench

    [MySQL]-压力测试之Sysbench 文章目录 [MySQL]-压力测试之Sysbench 一.Sysbench概况 1)介绍 2)安装部署 二.实战 1)构造测试数据 2)开始运行 压测结果解 ...

  5. MySql性能测试工具-sysbench

    转自:MySql性能测试工具-sysbench - 没那么简单的博客 虽然mysql默认的有mysqlslap这个性能测试工具,但和sysbench比较来说,还逊色不少. 下载安装包 https:// ...

  6. sysbench mysql测试_用sysbench测试mysql和服务器性能

    关于sysbench测试步骤 关于sysbench调试和安装请参考: http://blog.chinaunix.net/uid-20682026-id-3138466.html 下载地址: [roo ...

  7. MySQL压力测试/sysbench使用

    今天进行了MySQL pxc集群的压测,一般在做项目的时候DBA需要根据业务自定义数据库使用类型,所以在决定阶段,DBA就要根据对业务的预估进行数据库集群的筛选,同时也要对数据库进行压测. 压测的目的 ...

  8. MySQL性能优化(八):数据库性能诊断工具

    一.mysqltuner.pl 1.1工具的下载及部署 解决环境依赖,因为工具是perl脚本开发的,需要perl脚本环境 yum install -y perl* 1.2下载脚本 在http://my ...

  9. Oracle 迁移至 MySQL、PG等分布式数据库,可能遇到的12个典型问题

    近年来,分布式数据库逐渐占据了OLTP领域较大的市场,尤其在互联网领域,MySQL.PG等分布式数据库的应用非常广泛.随着软件国产化.自主可控战略的提出,非互联网企业也开始考虑数据库转型,很多企业原本 ...

最新文章

  1. c#资源管理器【转】
  2. C++ socket编程
  3. python 立方体切割块数_blender python通过三角函数调整立方体Location排成圆
  4. 【matlab】随意记录
  5. java 获取当前方法的名称_Java中获取当前函数名
  6. (HDU)1061 --Rightmost Digit( 最右边的数字)
  7. 详解如何挑战4秒内百万级数据导入SQL Server(转)
  8. Ubuntu 16.04下安装SVN可视化客户端--RabbitVCS
  9. Insyde uefi 隐藏设置_vivo手机怎么隐藏应用 vivo手机怎样把软件隐藏起来?
  10. win10系统,安装Photoshop_CS6并且无需序列号破解
  11. python自动化测试绕过手机验证码
  12. 猿创征文|三维重建领域的开发者工具箱
  13. 自制H桥有刷电机驱动板
  14. Linux命令——finger
  15. 王逸凡的十万个为什么
  16. java的博_小博老师解析Java核心技术 ——I/O流
  17. 如何在Google搜索到我的网站?
  18. 用计算机解题前 需要将解题方法,算法及其表示方法
  19. 使用C# 实现串口拨号器的SIM卡通信
  20. Java教程张孝祥百度云,蚂蚁金服5面

热门文章

  1. 提高BSEG处理效率
  2. 在TABLE CONTROL 输入完一行记录,按回车的时候光标自动移动到下一行
  3. 透过三翼鸟,看品牌背后的“有效创新”
  4. 成人教育还是K12,对网易有道来说都很难
  5. 和信贷财报:互金行业收缩压力之下的个体进击之道
  6. 倾向得分匹配的stata命令_培训对工资是否影响显著:倾向得分匹配法(PSM)及stata实现...
  7. angularjs http和ajax,AngularJS $ http和$ resource
  8. 微信小程序轮播中的current_微信小程序 swiper轮播图的按钮切换
  9. 中只有负下标里才能有零_门诊营销第一人武威名:诊所如何提升成交率之零风险承诺的运用?...
  10. c语言题目及答案1037,PAT Basic 1037. 在霍格沃茨找零钱(20)(C语言实现)