Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

    • MySQL8一键安装配置优化
    • MySQL导出CSV格式解决乱码
    • MySQL 角色管理
    • MySQL网络抓包审计
    • MySQL性能压测
    • MySQL配合Consul读写分离
    • Gh-ost重建表,清除表碎片率
    • MySQL MGR配合MySQL-router实现innodb-cluster
    • MySQL 快速分析binlog定位问题
    • MySQL执行计划分析
    • DBA常用SQL和命令整理备查
    • mysqldump实时同步数据
    • MySQL的事务隔离级别
    • MySQL存储过程批量生成数据
    • MySQL insert on duplicate key update,replace into , insert ignore的理解
    • MySQL不同字符集之间的区别和选择
    • MySQL为什么有时候会选错索引
    • MySQL死锁问题
    • MySQL使用SQL语句查重去重
    • MySQLdump逻辑备份
    • MySQL主从跳过异常GITD
    • MySQL8设置slowlog记录所有语句
    • MySQL8快速克隆插件使用指南
    • MySQL8双1设置保障安全
    • MySQL锁
    • innodb cluster安装
    • MySQL里的left join 和right join以及inner join
    • optimize table和 analyze table的区别
    • MySQL 字段的区分度计算公式
    • MySQLReplicaSet 安装
    • 脚本实现MySQL ReplicaSet 高可用
    • MySQL 的Left join,Right join和Inner join 的区别
    • MySQL45讲学习笔记
  • Redis

  • Keydb

  • TiDB

  • MongoDB

  • Elasticsearch

  • Kafka

  • victoriametrics

  • BigData

  • Sqlserver

  • 数据库
  • MySQL
Carry の Blog
2022-03-10

MySQL性能压测

# Sysbench 压测工具使用

PolarDB-X 性能测试使用 Sysbench 作为压测工具,本文介绍 Sysbench 的使用方法。 安装

测试使用的是 Sysbench 0.5 版本,安装方法如下:

git clone https://github.com/akopytov/sysbench.git
git checkout 0.5
yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel
./autogen.sh
./configure
make -j
make install
1
2
3
4
5
6
7
8

安装完毕后,所有自带压测脚本都在 /usr/local/share/sysbench 目录下,PolarDB-X 性能测试将使用该目录下的脚本。除此之外,也可以在源码目录 sysbench/sysbench/tests/db 下找到对应的压测脚本。 使用简介 常用测试模型

Sysbench 通过脚本定义了若干常用的压测模型,以下简单介绍几个常用模型:

压测模型 描述
bulk_inert.lua 批量插入数据
insert.lua 单值插入数据
delete.lua 删除数据
oltp.lua 混合读写测试,读写比例14:4
select.lua 简单的主键查询

表结构

以上建表语句中,分库分表数可自行调整,该表会在准备数据阶段自动生成,无需手动创建。 测试命令及参数

使用 Sysbench 进行压测,通常分为三个步骤:

  • prepare,准备数据
  • run,运行测试模型
  • cleanup,清理测试数据

通常仅需准备一次数据,在此数据基础上测试各种模型即可。 常用参数

Sysbench 中常用的参数如下:

--oltp-tables-count=1:表数量
--oltp-table-size=10000000:每个表产生的记录行数
--oltp-read-only=off:是否生成只读SQL,默认 off,如果设置为 on,则 oltp 模型不会生成 update, delete, insert 的 SQL 语句
--oltp-skip-trx=[on|off]:省略 BEGIN / COMMIT 语句。默认是 off
--rand-init=on:是否随机初始化数据,如果不随机化那么初始好的数据每行内容除了主键不同外其他完全相同
--num-threads=12: 并发线程数,可以理解为模拟的客户端并发连接数
--report-interval=10:表示每 10s 输出一次性能数据
--max-requests=0:压力测试产生请求的总数,如果以下面的 max-time 来记,这个值设为 0 即可
--max-time=120:测试的持续时间
--oltp_auto_inc=off:ID是否为自增列
--oltp_secondary=on:将ID设置为非主键防止主键冲突
--oltp_range_size=5:连续取值 5 个,必定走到 5 个分片
--mysql_table_options='dbpartition by hash(id) tbpartition by hash(id) tbpartitions 2':PolarDB-X 支持拆分表,在建表的时候需要指定拆分方式
1
2
3
4
5
6
7
8
9
10
11
12
13

示例命令

您可以使用如下命令进行对应操作:

准备数据:

sysbench --test='/usr/local/share/sysbench/oltp.lua' --oltp_tables_count=1 --report-interval=10 --oltp-table-size=10000000  --mysql-user=*** --mysql-password=*** --mysql-table-engine=innodb  --rand-init=on  --mysql-host=**** --mysql-port=*** --mysql-db=*** --max-time=300 --max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off  --oltp_secondary=on --oltp_range_size=5 --mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2' --num-threads=200   prepare
1

执行测试

sysbench --test='/usr/local/share/sysbench/oltp.lua' --oltp_tables_count=1 --report-interval=10 --oltp-table-size=10000000  --mysql-user=*** --mysql-password=*** --mysql-table-engine=innodb  --rand-init=on  --mysql-host=**** --mysql-port=*** --mysql-db=*** --max-time=300 --max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off --oltp_secondary --oltp_range_size=5 --mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2' --num-threads=200 run
1

清理环境

sysbench --test='/usr/local/share/sysbench/oltp.lua' --oltp_tables_count=1 --report-interv
1
上次更新: 4/24/2025

← MySQL网络抓包审计 MySQL配合Consul读写分离→

最近更新
01
tidb fast ddl
04-04
02
TiDB配置文件调优 原创
04-03
03
如何移除TiDB中的表分区 原创
04-03
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式