[转帖]用sysbench进行数据库OLTP基准测试

sysbench,进行,数据库,oltp,基准,测试 · 浏览次数 : 0

小编点评

**内容摘要** **总事务数**:36577 **每秒事务数**:6095.25 **测试结果** * CPU性能:119.9885 * I/O测试准备:40G * 重写测试:40G **结论** * CPU性能较低 * I/O测试准备较低 * 重写测试性能较低

正文

https://www.cnblogs.com/ariesblog/p/13847740.html

 

基于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进行数据库OLTP基准测试相似的内容:

[转帖]用sysbench进行数据库OLTP基准测试

https://www.cnblogs.com/ariesblog/p/13847740.html 基于TPC-C的OLTP基准测试,对比Mysql和PostgreSQL的性能 一、什么是TPC-C和tpmC 1、TPC-C TPC-C是一种旨在衡量联机事务处理(OLTP)系统性能与可伸缩性的行业标

[转帖]用sysbench压测mysql、postgresql(蟑螂db)对比

mysql: 准备创建表和数据: sysbench --db-driver=mysql --time=10 --threads=10 --report-interval=1 --mysql-host=172.18.44.84 --mysql-port=7999 --mysql-user=zl --m

[转帖]tidb-系统内核调优及对比

一、背景 验证系统调优对性能的影响,用sysbench做了一些简单的测试,具体调整方法可见官方文档 二、特殊说明 1.透明大页查看 # 查看透明大页是否开启,[]在always处表示开启,[]在never处表示关闭 cat /sys/kernel/mm/transparent_hugepage/en

[转帖]用了这18种方案,接口性能提高了100倍!

https://juejin.cn/post/7167153109158854687 前言 大家好,我是捡田螺的小男孩。 之前工作中,遇到一个504超时问题。原因是因为接口耗时过长,超过nginx配置的10秒。然后 真枪实弹搞了一次接口性能优化,最后接口从11.3s降为170ms。本文将跟小伙伴们分

[转帖]用bat更改hosts文件批处理

原文地址: https://www.jb51.net/article/51902.htm copy@echo off echo "请注意你的杀毒软件提示,一定要允许" @echo ######################################## @xcopy C:\Windows\s

[转帖]用buildkit和containerd构建镜像

https://zhuanlan.zhihu.com/p/366671300 最近因为K8s抛弃Docker了,所以就只装了个containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也是Docker公司扶持的,他们公司的人出来搞的开源工具,官网在 https://gith

[转帖]用buildkit和containerd构建镜像

https://zhuanlan.zhihu.com/p/366671300 最近因为K8s抛弃Docker了,所以就只装了个containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也是Docker公司扶持的,他们公司的人出来搞的开源工具,官网在 https://gith

[转帖]用实力诠释细节!“Java性能调优六大工具”之JDK命令行工具

https://www.zhihu.com/people/javajia-gou-ji-zhu-44/posts JDK命令行工具 在JDK的开发包中,除了大家熟知的java.exe和javac.exe外,还有一系列辅助工具。这些辅助工具位于JDK安装目录下的bin目录中,可以帮助开发人员很好地解决

【转帖】用pycharm开发django项目示例

https://www.cnblogs.com/kylinlin/p/5184592.html pycharm开发django工程(一) 在pycharm(企业版)中新建Django工程,注意使用虚拟环境 创建成功后,在pycharm显示的工程目录结构如下: 打开pycharm的Terminal,进

[转帖]如何用Perf解开服务器消耗的困境

https://rdc.hundsun.com/portal/article/637.html 无论是网站还是软件产品,服务器作为资源池,其重要性不言而喻。监控并了解服务器资源的消耗情况更是能将众多问题防范于未然,也许,一般的监控对于业内人基本不是问题,那让我们聊聊秘密武器Perf,你也许会有恍然大