目录
MySQL数据库性能基准测试之sysbench之7—sysbench OLTP测试
一、sysbench测试
1、sysbench OLTP测试的目的和作用
sysbench 的 OLTP(联机事务处理)测试是通过模拟典型的事务处理工作负载来评估数据库系统的性能和稳定性。
OLTP 测试通常用于评估数据库在处理大量并发事务时的表现,并可以用于以下目的和作用:
性能评估:通过模拟实际应用中的事务操作(例如插入、更新、删除、查询等),可以评估数据库系统在处理典型工作负载时的性能表现。通过测量吞吐量、延迟等指标,可以了解系统的性能水平。 并发处理能力:可以通过设定不同的并发线程数,评估数据库系统在处理并发事务时的能力,了解系统在不同负载下的表现。 系统稳定性:通过持续运行 OLTP 测试,可以评估数据库系统在长时间运行时的稳定性和可靠性,检验系统是否会出现性能下降或者异常。 优化和调优:通过观察 OLTP 测试的结果,可以发现系统在特定负载下的瓶颈和性能瓶颈,有助于指导优化和调优工作。 容量规划:可以通过 OLTP 测试了解系统在不同负载下的资源消耗状况,辅助进行容量规划和资源分配。
2、sysbench OLTP测试语法
具体到 OLTP 测试,可以使用以下语法进行测试:
sysbench [options] --test=oltp [command [options]]
其中,[options] 是可选的参数,可以根据需求添加不同的参数来配置测试的行为。而在 OLTP 测试中,常用的一些参数包括:
--oltp-tables-count=N:指定要使用的表的数量。 --oltp-table-size=N:指定每个表中的行数。 --num-threads=N:指定并发线程数。 --oltp-test-mode={simple|complex}:指定 OLTP 测试模式。 --oltp-dist-type={uniform|special|gaussian}:指定数据分布类型。 --oltp-read-only={on|off}:指定是否为只读测试。 --oltp-skip-trx={on|off}:指定是否跳过事务。 --oltp-point-selects=N:指定 SELECT 查询的数量。
3、案例:
sysbench --test=oltp help
(1)进入oltp.lua脚本所在的目录
cd /usr/share/sysbench/tests/include/oltp_legacy
(2)创建数据库
mysql -uroot -prootroot create database testdb;
(3)准备阶段,每张表记录100万条数据
[root@mysql155 oltp_legacy]# sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=1000000 --mysql-user=root --mysql-password=rootroot --mysql-host=192.168.21.155 --mysql-db=testdb prepare
(4)运行阶段,每张表记录100万条数据
sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=1000000 --mysql-user=root --mysql-password=rootroot --mysql-db=testdb run
(5)数值分析
[root@mysql155 oltp_legacy]# sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=1000000 --mysql-user=root --mysql-password=rootroot --mysql-db=testdb run sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Initializing worker threads... Threads started! SQL statistics: queries performed: read: 46494 --表示读取查询数量为 46494。 write: 13284 --表示写入查询数量为 13284 other: 6642 --表示其他类型的查询数量为 6642 total: 66420 --表示总查询数量为 66420。 transactions: 3321 (331.94 per sec.) --指示已执行的事务数量为 3321,平均每秒执行 331.94 个事务。 queries: 66420 (6638.90 per sec.) --总查询数为 66420,平均每秒执行 6638.90 个查询 ignored errors: 0 (0.00 per sec.) --表示被忽略的错误数量为 0。 reconnects: 0 (0.00 per sec.) --表示重新连接的次数为 0。
General statistics: total time: 10.0024s --总共耗时 10.0024 秒。 total number of events: 3321 --总事件数为 3321。 Latency (ms): --表示延迟统计。 min: 2.37 --最小延迟为 2.37 毫秒 avg: 3.01 --平均延迟为 3.01 毫秒。 max: 31.24 --最大延迟为 31.24 毫秒。 95th percentile: 3.62 --95% 排位的延迟为 3.62 毫秒。 sum: 9995.32 --总延迟时间为 9995.32 毫秒。 Threads fairness: --线程公平性统计。 events (avg/stddev): 3321.0000/0.00 --平均每线程执行 3321 个事件,标准差为 0 execution time (avg/stddev): 9.9953/0.00 --平均每线程执行时间为 9.9953 秒,标准差为 0。
4、比较
sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=1000000 --mysql-user=root --mysql-password=rootroot --mysql-host=192.168.21.155 --mysql-db=testdb run sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=2000000 --mysql-user=root --mysql-password=rootroot --mysql-host=192.168.21.155 --mysql-db=testdb run sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=5000000 --mysql-user=root --mysql-password=rootroot --mysql-host=192.168.21.155 --mysql-db=testdb run sysbench oltp --mysql-table-engine=InnoDB --oltp-table-size=10000000 --mysql-user=root --mysql-password=rootroot --mysql-host=192.168.21.155 --mysql-db=testdb run