使用 Sysbench 对 MySQL 进行压力测试
文章目录
安装
|
|
参数
- –threads:执行任务的线程数
- –time:持续时间:5min,300s,默认为 10
- –mysql-host:指定mysql的服务器,默认是localhost;
- –mysql-port:指定mysql的服务器端口,默认是3306;
- –mysql-socket:指定mysql服务器的socket;
- –mysql-user:指定mysql的登陆用户,默认是sbtest;
- –mysql-password:指定登陆密码,默认是空;
- –mysql-db:指定测试的数据库,默认是sbtest;
- –tables:指定压测过程中涉及到的表的数量
- –table_size:指定被压测的表 单表的行数
- –mysql-table-engine:指定测试表的存储引擎,默认是innodb;
- –mysql-engine-trx:指定存储引擎是否为事务性的,默认是auto;
- –mysql-ssl:指定是否使用SSL连接,默认是off;
- –mysql-create-options:指定创建表的附加选项。
- prepar/cleanup/run:初始化/清除/执行任务
进行压测
- 压测基于 sysbench 内置的压测脚本
- 使用 yum/apt 安装时,脚本位于 /usr/share/sysbench/ 目录下
初始化数据
- 创建测试database(压测脚本不会自动生成)
|
|
- 创建测试用户
|
|
- 生成初始数据
- 五个线程同时向五个表中写入50000000条数据、用于后期压测使用
- 为加快写入速度,可调整 MySQL 配置 innodb_flush_log_at_trx_commit、sync_binlog 为 0 以加快数据写入速度。初始化数据后应及时改回之前配置,避免服务运行状态异常导致数据丢失及压测结果不准确
|
|
- 清理初始数据(压测完或需重新初始化数据时执行)
|
|
执行压测任务
- 执行压测任务
|
|
oltp_point_select.lua
- 模拟随机单点查询
|
|
select_random_points.lua
- 模拟使用 IN 的多值单点查询
|
|
select_random_ranges.lua
- 模拟随机范围查询计数
|
|
oltp_read_only.lua
- 模拟简单范围查询、排序等
|
|
oltp_update_index.lua
- 模拟更新有索引的行
|
|
oltp_update_non_index.lua
- 模拟更新没有索引的行
|
|
oltp_insert.lua
- 模拟 insert 场景
|
|
oltp_delete.lua
- 模拟 DELETE 场景
|
|
oltp_write_only.lua
- 模拟随机 INSERT、UPDATE、DELETE 场景
|
|
oltp_read_write.lua
- 模拟 事务场景下的读写混合 场景
|
|
返回
|
|
文章作者 Xiang
上次更新 2021-06-13