Sysbench: MySQL基准测试工具

发布时间: 更新时间: 总字数:1052 阅读时间:3m 作者:IP:上海 网址

SysBench 是一款模块化、跨平台和多线程的(MySQL、PGSQL)基准测试工具,用于评估对在高负载条件下运行数据库的系统性能。

介绍

sysbench 是一款基于 LuaJIT 的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载。

已支持的数据库驱动程序:

  • mysql: MySQL 驱动程序
  • pgsql: PostgreSQL 驱动程序

测试类型:

  • fileio: 文件 I/O 测试
  • cpu: CPU 性能测试
  • memory: 内存功能速度测试
  • threads: 线程子系统性能测试
  • mutex: Mutex 性能测试

安装

# centos
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
yum install sysbench

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

# mac
brew install sysbench
  • 本文档使用的版本
$ sysbench --version
sysbench 1.0.20

help

sysbench-help ...

使用

支持的测试用例(OLTP(Online Transaction Processing) 是一种数据处理类型,包括执行多个并发的事务)

  • oltp_read_write: Generic Read and Write test
  • oltp_read_only: Read (SELECT) test
  • oltp_write_only: Write (INSERT, DELETE, UPDATE) only test
  • oltp_insert: INSERT only
  • bulk_insert: Bulk insert tests like INSERT INTO…VALUES (?),(?),(?)
  • oltp_delete: …

详细信息参考:

$ ls /usr/share/sysbench/
bulk_insert.lua  oltp_insert.lua        oltp_read_write.lua        oltp_write_only.lua
oltp_common.lua  oltp_point_select.lua  oltp_update_index.lua      select_random_points.lua
oltp_delete.lua  oltp_read_only.lua     oltp_update_non_index.lua  select_random_ranges.lua

文件 I/O 测试

$ sysbench --file-total-size=1G fileio prepare
...
1073741824 bytes written in 3.88 seconds (264.17 MiB/sec).

$ sysbench --file-total-size=1G --file-test-mode=rndrw --time=300 --max-requests=0 fileio run

oltp_common 测试数据准备

  • Create 3 tables and add 10000 rows per table
sysbench  \
    --mysql-host=127.0.0.1 \
    --mysql-port=3306 \
    --mysql-db=sbtest \
    --mysql-user=sbtest \
    --mysql-password=Password1! \
    --tables=3 \
    --table_size=10000 \
    oltp_common prepare

oltp_read_write 读写测试

sysbench  \
    --mysql-host=127.0.0.1 \
    --mysql-port=3306 \
    --mysql-db=sbtest \
    --mysql-user=sbtest \
    --mysql-password=Password1! \
    --tables=3 \
    --table_size=10000 \
    --threads=3 \
    --time=10 \
    oltp_read_write run

指标说明:

  • QPS (query per sec)
  • TPS (transaction per sec)

CPU 测试

# 获取20000个素数搜索的CPU基准测试
sysbench cpu --cpu-max-prime=20000 run

memory 测试

sysbench memory help

# 逐块处理总共10GB的数据,每块大小为1MB
sysbench memory --memory-block-size=1M --memory-total-size=10G run

其他

# 准备数据
sysbench --time=300 --mysql-host=<ip> --mysql-port=3306 --mysql-user=<user> --mysql-password=<password> --mysql-db=sbtest --table-size=1000000 --tables=10 --threads=32 --events=999999999 oltp_common prepare

# 运行测试
sysbench --time=300 --mysql-host=<ip> --mysql-port=3306 --mysql-user=<user> --mysql-password=<password> --mysql-db=sbtest --table-size=1000000 --tables=10 --threads=16 --events=999999999  --report-interval=10 oltp_read_write run

# 清理数据
sysbench --time=300 --mysql-host=<ip> --mysql-port=3306 --mysql-user=<user> --mysql-password=<password> --mysql-db=sbtest --table-size=1000000 --tables=10 --threads=16 --events=999999999 --report-interval=10 oltp_read_write cleanup
本文总阅读量 次 本站总访问量 次 本站总访客数