MYSQL基准测试

测试目的:  

1, 测试MYSQL 5.6,5.7和8.0的他们性能随着并并发数变化情况; 

2, 本测试主要测试性能,功能不在测试之列

3, 根据性能曲线,知道多少并发数下性能最好,可以以此为依据设置线上DB的告警阈值;

4, 根据性能曲线,以此判断哪个版本最适用于线上的业务;

5, 由于线上业务读写分离,所以需要分别测试不同场景下的性能情况

 

工具的选择:

mysqlslap

优点:简单,容易使用;

缺点:无法生成指定规模数据;

适用场景:适合对既有数据库单个sql进行优化测试;

TPCC-C

模拟了一个比较具有代表意义的OLTP环境:在线订单处理系统。假设一个大型的商品批发公司,拥有N个位于不同区域仓库,每个仓库10个销售点供货,每个销售点有3000客户,每个客户平均一个订单10件产品。由于一个仓库不可能存储所有货物,一些请求必须发往其他仓库,因为逻辑上是分布的;N是可变参数

优点:符合TPCC标准,模拟真实的交易活动;

缺点:无法单独测试特定增删改查操作的性能QPS;而线上环境都是读写分离

适用场景: 机器选型的时候使用TPCC测试报告

SYSBENCH

1Sysbench内嵌lua脚本,可以灵活根据需要选用不同的测试脚本,根据自己需要灵活修改lua脚本,而无需修改源代码

2,可以造数,生成指定规模的数据

3主流厂商(Oracle/Percona)发布性能数据的时候采用的是Sysbench

       https://www.mysql.com/why-mysql/benchmarks/

 

环境准备:

机器配置和MYSQL参数配置

服务器配置

IP 地址

11.7.152.67

11.7.152.67

11.7.152.67

CPU核数

32

32

32

内存

256G

256G

256G

数据硬盘

SSD

SSD

SSD

数据盘数量

8

8

8

数据盘RAID设置

RAID 10

RAID 10

RAID 10

OS

CentOS Linux release 7.2.1511

CentOS Linux release 7.2.1511

CentOS Linux release 7.2.1511

MYSQL 参数信息

MySQL版本

5.6.36

5.7.19

8.0.12

Innodb buffer pool

175G

175G

175G

innodb_buffer_pool_instances

8

8

8

innodb_flush_log_at_trx_commit

1

1

1

binlog-format

ROW

ROW

ROW

transaction-isolation

RR

RR

RR

sync_binlog

1

1

1

SYSBENCH参数

测试工具

SysBench 1.0

测试类型

OLTP

数据规模

10W

表的数量

1024

单次测试时间

600s

预热时间

300s

并发

2,4,8,16,32,64,128,256,512,1024

测试场景

压测场景

脚本

1、只读操作,包含BETWEEN/SUM/ORDER BY/DISTINCT等操作

oltp_read_only.lua

2、只读操作,条件为主键

oltp_point_select.lua

3、纯写入操作

oltp_insert.lua

4、批量写入

bulk_insert.lua

5、更新操作,通过主键更新索引字段

oltp_update_index.lua

6、更新操作,通过主键更新非索引字段

oltp_update_non_index.lua

7、删除操作

oltp_delete.lua

8、纯写操作,包括insert update delete

oltp_write_only.lua

9、读写混合操作

oltp_read_write.lua

测试结果:

只读操作,包含聚合、DISTINCT、SUM等操作作

 "SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ?",
"SELECT SUM(k) FROM sbtest%u WHERE id BETWEEN ? AND ?"
"SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c"
"SELECT DISTINCT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c"

只读操作,条件为主键

 "SELECT c FROM sbtest%u WHERE id=?"

 

 

纯写入操作, 单条insertI

INSERT INTO %s (id, k, c, pad) VALUES "  (%d, %d, '%s', '%s')"

 

批量写入,bulk insert

 更新操作,通过主键更新索引字段

UPDATE sbtest1 SET k=k+1 WHERE id=?

 

更新操作,通过主键更新非索引字段

UPDATE sbtest1 SET c=? WHERE id=?

 删除操作, delete

 "DELETE FROM sbtest%u WHERE id=?"

读写混合操,

    包含 update_index, update_non_index, delete, point select, read only等 

oltp_update_index.lua
oltp_update_non_index.lua
oltp_delete.lua
oltp_point_select.lua
oltp_read_only.lua

              

 

纯写入操作 

oltp_update_index.lua
oltp_update_non_index.lua
oltp_delete.lua

 说明:

 1, mysql8.0优化了很多并发的算法,导致在低并发的时候,效率上显得反而没有5.6和5.7那么高;毕竟多出了更多的计算;但是当Thread_running达到一定程度的时候,5.6和5.7性能会瞬间下降,而8.0表现就会好很多

2, update 非索引字段比update索引字段性能要高一些,是因为update索引字段的时候,MYSQL会同时去做更新索引的操作,而update一个非索引字段,不用去更新索引;

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值