sysbench|mysql压力测试

安装

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench

在/usr/share/sysbench下有这些脚本:

  • bulk_insert.lua:批量插入数据测试,评估数据库在高并发批量插入数据时的性能
  • oltp_delete.lua:删除操作测试,评估数据库在高并发删除数据时的性能
  • oltp_point_select.lua:主键查询测试,评估数据库在高并发主键查询时的性能
  • oltp_read_write.lua:读写混合操作测试,评估数据库在高并发读写操作时的性能
  • oltp_update_non_index.lua:非索引字段更新测试,评估数据库在高并发更新非索引字段时的性能
  • select_random_points.lua:随机点查询测试,评估数据库在高并发随机点查询时的性能
  • oltp_common.lua:公共函数库,包含了其他OLTP脚本常用的函数
  • oltp_insert.lua:插入操作测试,评估数据库在高并发插入数据时的性能
  • oltp_read_only.lua:只读操作测试,评估数据库在高并发只读操作时的性能
  • oltp_update_index.lua:索引字段更新测试,评估数据库在高并发更新索引字段时的性能
  • oltp_write_only.lua:只写操作测试,评估数据库在高并发写入数据时的性能
  • select_random_ranges.lua:随机范围查询测试,评估数据库在高并发随机范围查询时的性能

准备测试数据

mysqladmin create test_db
sysbench /usr/share/sysbench/oltp_insert.lua --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password="" --mysql-db=test_db --tables=10 --table-size=100000 prepare

插入操作测试

sysbench /usr/share/sysbench/oltp_insert.lua --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password="" --mysql-db=test_db --tables=10 --table-size=100000 --threads=4 --time=60 --report-interval=10 run

参数解释:

  • sysbench /usr/share/sysbench/oltp_insert.lua:指定使用 Sysbench 的 OLTP 插入测试脚本 oltp_insert.lua
  • –db-driver=mysql:指定数据库驱动为 MySQL
  • –mysql-host=localhost:指定 MySQL 数据库的主机地址为 localhost
  • –mysql-port=3306:指定 MySQL 数据库的端口号为 3306
  • –mysql-user=root:指定 MySQL 数据库的用户名为 root
  • –mysql-password=“”:指定 MySQL 数据库的密码为空
  • –mysql-db=test_db:指定要测试的 MySQL 数据库名称为 test_db
  • –tables=10:指定测试中使用的表数量为 10
  • –table-size=100000:指定每个表的行数为 100000
  • –threads=4:指定测试中使用的线程数为 4
  • –time=60:指定测试运行时间为 60 秒
  • –report-interval=10:指定每 10 秒报告一次中间结果
  • run:执行测试

输出结果:

sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

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


Initializing worker threads...

Threads started!

[ 10s ] thds: 4 tps: 1673.05 qps: 1673.05 (r/w/o: 0.00/1673.05/0.00) lat (ms,95%): 4.25 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 1860.85 qps: 1860.85 (r/w/o: 0.00/1860.85/0.00) lat (ms,95%): 3.68 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 4 tps: 1805.21 qps: 1805.21 (r/w/o: 0.00/1805.21/0.00) lat (ms,95%): 3.55 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 4 tps: 1825.60 qps: 1825.60 (r/w/o: 0.00/1825.60/0.00) lat (ms,95%): 3.43 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 4 tps: 1927.85 qps: 1927.85 (r/w/o: 0.00/1927.85/0.00) lat (ms,95%): 3.36 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 4 tps: 1946.93 qps: 1946.93 (r/w/o: 0.00/1946.93/0.00) lat (ms,95%): 3.43 err/s: 0.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            0
        write:                           110402
        other:                           0
        total:                           110402
    transactions:                        110402 (1839.86 per sec.)
    queries:                             110402 (1839.86 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.0039s
    total number of events:              110402

Latency (ms):
         min:                                    0.78
         avg:                                    2.17
         max:                                  252.15
         95th percentile:                        3.62
         sum:                               239789.79

Threads fairness:
    events (avg/stddev):           27600.5000/36.36
    execution time (avg/stddev):   59.9474/0.00

关注指标

  • TPS (Transactions Per Second): 每秒事务处理量。报告中显示TPS在1673.05到1946.93之间波动,平均为1839.86。这表示数据库在高负载下仍能保持高效的处理能力
  • QPS (Queries Per Second): 每秒查询率,由于这是插入操作测试,QPS与TPS相同
  • avg:平均响应时间2.17毫秒
  • min:最小响应时间0.78毫秒
  • max:最大响应时间252.15毫秒
  • 95th percentile:3.62毫秒,意味着95%的事务响应时间都在3.62毫秒以内
  • tNumber of threads:线程数4
  • events (avg/stddev):每个线程的事件数(平均/标准差)27600.5 / 36.36
    • 平均:每个线程平均处理的事件数
    • 标准差:反映了各线程处理事件数的离散程度。标准差越小,说明各线程处理的事件数越接近平均值
  • execution time (avg/stddev):每个线程的执行时间(平均/标准差)59.9474 / 0.00
    • 平均:每个线程的平均执行时间
    • 标准差:表示执行时间的标准差,说明各线程的执行时间几乎没有差异
  • Errors (错误率): 每秒错误数,确保测试过程中没有错误
  • Reconnections (重连次数): 每秒重连数,确保连接的稳定性

删除测试数据

sysbench /usr/share/sysbench/oltp_insert.lua --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password="" --mysql-db=test_db --tables=10 --table-size=100000 cleanup
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!