Sysbench性能测试(五): 数据库性能测试

本文详细介绍了如何使用Sysbench进行数据库性能测试,包括不同的测试脚本如oltp_read_only和oltp_write_only等,以及测试的准备、运行和清理阶段。测试参数如线程数、报告间隔和时间限制等被详细阐述,并展示了测试结果,包括TPS、QPS、错误率和延迟等关键指标。通过对MySQL的配置和sysbench参数设置,可以全面评估数据库的读写性能。
摘要由CSDN通过智能技术生成

Sysbench性能测试

传送门:
Sysbench性能测试(一): sysbench简介与安装
Sysbench性能测试(二): sysbench基本使用和CPU性能测试
Sysbench性能测试(三): 内存性能测试
Sysbench性能测试(四): 文件I/O性能测试
Sysbench性能测试(五): 数据库性能测试

3-5 数据库性能测试

​ 对数据库的性能测试将使用sysbench自带lua脚本,该脚本存放于*/usr/local/share/sysbench/*。测试过程同I/O性能测试,分成准备、运行、清理三个阶段,且测试所需数据库需要提前创建。此外,MySQL的参数进行改动:max_prepared_stmt_count=100000max_connections=16384

sysbench自带的数据库性能测试脚本有:

  • oltp_read_only.lua 只读操作测试
  • oltp_read_write.lua 读写操作测试
  • oltp_write_only.lua 只写操作测试
  • oltp_insert.lua INSERT语句测试
  • oltp_delete.lua DELETE测试
  • oltp_point_select.lua 点查语句测试
  • oltp_update_index.lua 更新索引字段操作测试
  • oltp_update_non_index.lua 更新无索引字段操作测试
  • select_random_points.lua 随机点查脚本
  • bulk_insert.lua 批量插入测试 ,多线程并发执行insert,每个线程都插入到各自的表中。每个线程执行的INSERT数量由time或者events限制。
  • select_random_ranges.lua 这个测试是为测试MariaDB的MyISAM的key_cache_segments而设计的,并且应该与其他存储引擎一起工作。

测试能获得的测量指标

  • TPS:Transactions Per Seconds 每秒事务数
  • QPS:Queries Per Seconds 每秒查询率
  • 产生错误数/s、错误总数
  • 所有events的最小、最大、平均耗时
  • 所有线程耗时总和
  • 平均每线程完成events数/标准差
  • 平均每线程耗时/标准差

数据库性能测试参数:

mysql options:
  --mysql-host=[LIST,...]          # MySQL server host. [localhost]
  --mysql-port=[LIST,...]          # MySQL server port. [3306]
  --mysql-socket=[LIST,...]        # MySQL socket.
  --mysql-user=STRING              # MySQL user. [sbtest]
  --mysql-password=STRING          # MySQL password. []
  --mysql-db=STRING                # MySQL database name. [sbtest]
  --mysql-ssl[=on|off]             # 如果客户端库中可用,使用SSL连接. [off]
  --mysql-ssl-cipher=STRING        # 为SSL连接使用特定的密码. []
  --mysql-compression[=on|off]     # 如果客户端库中可用,使用压缩. [off]
  --mysql-debug[=on|off]           # 跟踪所有客户端库调用. [off]
  --mysql-ignore-errors=[LIST,...] # 要忽略的错误列表,或者为“all”. [1213,1020,1205]
  --mysql-dry-run[=on|off]         # 演练.假设所有MySQL客户端API调用都是成功的,并不实际执行. [off]

测试实例

# 线程数=400 
# 已提前在mysql创建数据库obliviate,测试准备阶段将在该数据库生成10个表,每个表大小为1000
# 每隔3s输出一次中间结果,测试时间限制在60s
# 准备阶段:
sysbench --test=/usr/local/share/sysbench/oltp_write_only.lua --mysql-host=host --mysql-port=3306 --mysql-user=root --mysql-password=password --mysql-db=obliviate --report-interval=3 --time=60 --threads=400 --tables=10 --table-size=1000 prepare
# 运行阶段:
sysbench --test=/usr/local/share/sysbench/oltp_write_only.lua --mysql-host=host --mysql-port=3306 --mysql-user=root --mysql-password=host --mysql-db=obliviate --report-interval=3 --time=60 --threads=400 --tables=10 --table-size=1000 run
# 清理阶段:
sysbench --test=/usr/local/share/sysbench/oltp_write_only.lua --mysql-host=host --mysql-port=3306 --mysql-user=root --mysql-password=password --mysql-db=obliviate --report-interval=3 --time=60 --threads=400 --tables=10 --table-size=1000 cleanup
# host地址和密码请换成自己的

测试结果

Running the test with following options:
Number of threads: 400
Report intermediate results every 3 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!
# TPS:Transactions Per Seconds
# QPS:Queries Per Seconds
[ 3s ] thds: 400 tps: 607.53 qps: 3895.84 (r/w/o: 0.00/2527.16/1368.68) lat (ms,95%): 1258.08 err/s: 22.04 reconn/s: 0.00
[ 6s ] thds: 400 tps: 527.35 qps: 3216.11 (r/w/o: 0.00/2143.07/1073.04) lat (ms,95%): 1708.63 err/s: 18.33 reconn/s: 0.00
[ 9s ] thds: 400 tps: 524.32 qps: 3182.27 (r/w/o: 0.00/2117.96/1064.31) lat (ms,95%): 1903.57 err/s: 15.67 reconn/s: 0.00
... # 中间结果部分删除
[ 54s ] thds: 400 tps: 497.33 qps: 3049.99 (r/w/o: 0.00/2034.33/1015.66) lat (ms,95%): 2009.23 err/s: 21.00 reconn/s: 0.00
[ 57s ] thds: 400 tps: 583.88 qps: 3551.23 (r/w/o: 0.00/2365.82/1185.41) lat (ms,95%): 1771.29 err/s: 17.99 reconn/s: 0.00
[ 60s ] thds: 400 tps: 563.34 qps: 3421.70 (r/w/o: 0.00/2275.36/1146.35) lat (ms,95%): 1708.63 err/s: 22.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            0							# 读请求
        write:                           133663						# 写请求
        other:                           67041						# 其他
        total:                           200704						# 总和
    transactions:                        32965  (533.62 per sec.)	# 事务总数
    queries:                             200704 (3248.86 per sec.)	# 查询总数
    ignored errors:                      1111   (17.98 per sec.)	# 被忽略的错误数
    reconnects:                          0      (0.00 per sec.) 	# 重连

General statistics:
    total time:                          61.7728s					# 测试时间
    total number of events:              32965						# events总数

Latency (ms):
         min:                                    3.53				# 最小耗时
         avg:                                  736.72				# 平均耗时
         max:                                 5302.82				# 最大耗时
         95th percentile:                     1836.24				# 95%events耗时范围
         sum:                             24285971.83				# 所有线程总耗时

Threads fairness:
    events (avg/stddev):           82.4125/6.53						# 平均每线程完成events数/标准差
    execution time (avg/stddev):   60.7149/0.49						# 平均每线程执行时间/标准差
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值