mysql读写性能测试

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 用mysqlslap进行mysql压力测试 mysqlslap官方文档   mysqlslap菜鸟译文 概述和测试环境 压测的目的是为了尽量模拟真实情况。测试的表都是由10个int型字段和10个字符串型字段组成。每个测试项目都测试了myisam和innodb两个引擎。测试的方法都是用两个线程并发,一共跑10000个请求。 压测的机器用的是自己的笔记本。CPU是Intel(R

用mysqlslap进行mysql压力测试

mysqlslap官方文档  

mysqlslap菜鸟译文

概述和测试环境

压测的目的是为了尽量模拟真实情况。测试的表都是由10个int型字段和10个字符串型字段组成。每个测试项目都测试了myisam和innodb两个引擎。测试的方法都是用两个线程并发,一共跑10000个请求。

压测的机器用的是自己的笔记本。CPU是Intel(R) Core(TM)2 Duo CPU     P8400, 4G内存, SATA硬盘。

mysql服务器端和压测的客户端跑在同一台机器上。mysql的版本是5.5.

用到的mysqlslap参数解释如下:

--concurrency=2 两个线程

--iterations=1 执行一次

--number-int-cols=10 10个int型字段
--number-char-cols=10 10个字符串字段
-a 等同于--auto-generate-sql

--auto-generate-sql-add-autoincrement 创建auto increment的主键
--auto-generate-sql-secondary-indexes=2 创建2列索引

--auto-generate-sql-guid-primary 创建guid作为主键

--number-of-queries=10000 所有并发线程的请求次数和
--auto-generate-sql-load-type=write/key/read/update/mixed 测试的query类型
--engine=myisam,innodb 存储引擎

写性能测试

写性能测试1,不开binlog, guid做主键, 无索引

测试命令:

1 mysqlslap   --concurrency=2\
2             --iterations=1\
3             --number-int-cols=10\
4             --number-char-cols=10\
5             -a\
6             --auto-generate-sql-guid-primary\
7             --number-of-queries=10000\
8             --auto-generate-sql-load-type=write\
9             --engine=myisam,innodb\
结果:
01 Benchmark
02         Runningforengine myisam
03         Average number of seconds to run all queries: 6.110 seconds
04         Minimum number of seconds to run all queries: 6.110 seconds
05         Maximum number of seconds to run all queries: 6.110 seconds
06         Number of clients running queries: 2
07         Average number of queries per client: 5000
08  
09 Benchmark
10         Runningforengine innodb
11         Average number of seconds to run all queries: 10.291 seconds
12         Minimum number of seconds to run all queries: 10.291 seconds
13         Maximum number of seconds to run all queries: 10.291 seconds
14         Number of clients running queries: 2
15         Average number of queries per client: 5000
用myisam每秒处理1639次。

用innodb每秒处理971次。

真实环境中一般会用binlog做数据备份与同步,所以性能会有所下降,有binlog的情况请继续看后面的实验。

写性能测试2, 开binlog, guid做主键, 无索引

测试命令与“写性能测试1”相同,

结果如下:

01 Benchmark
02         Runningforengine myisam
03         Average number of seconds to run all queries: 14.809 seconds
04         Minimum number of seconds to run all queries: 14.809 seconds
05         Maximum number of seconds to run all queries: 14.809 seconds
06         Number of clients running queries: 2
07         Average number of queries per client: 5000
08  
09 Benchmark
10         Runningforengine innodb
11         Average number of seconds to run all queries: 26.721 seconds
12         Minimum number of seconds to run all queries: 26.721 seconds
13         Maximum number of seconds to run all queries: 26.721 seconds
14         Number of clients running queries: 2
15         Average number of queries per client: 5000
myisam每秒处理675次

innodb每秒处理374次

写性能测试3, 开binlog, guid做主键, 有索引

现实情况中,有索引的情况较多。采用 --auto-generate-sql-secondary-indexes=2 创建两列索引。

命令如下:

01 mysqlslap   --concurrency=2\
02             --iterations=1\
03             --number-int-cols=10\
04             --number-char-cols=10\
05             -a\
06             --auto-generate-sql-guid-primary\
07             --auto-generate-sql-secondary-indexes=2\
08             --number-of-queries=10000\
09             --auto-generate-sql-load-type=write\
10             --engine=myisam,innodb\

结果如下:

01 Benchmark
02         Runningforengine myisam
03         Average number of seconds to run all queries: 16.693 seconds
04         Minimum number of seconds to run all queries: 16.693 seconds
05         Maximum number of seconds to run all queries: 16.693 seconds
06         Number of clients running queries: 2
07         Average number of queries per client: 5000
08  
09 Benchmark
10         Runningforengine innodb
11         Average number of seconds to run all queries: 30.418 seconds
12         Minimum number of seconds to run all queries: 30.418 seconds
13         Maximum number of seconds to run all queries: 30.418 seconds
14         Number of clients running queries: 2
15         Average number of queries per client: 5000
myisam每秒处理599次。

innodb每秒处理329次。

写性能测试4,开binglog,auto increment主键,有索引

命令如下:

01 mysqlslap   --concurrency=2\
02             --iterations=1\
03             --number-int-cols=10\
04             --number-char-cols=10\
05             -a\
06             --auto-generate-sql-add-autoincrement\
07             --auto-generate-sql-secondary-indexes=2\
08             --number-of-queries=10000\
09             --auto-generate-sql-load-type=write\
10             --engine=myisam,innodb\
结果如下:
01 Benchmark
02         Runningforengine myisam
03         Average number of seconds to run all queries: 16.785 seconds
04         Minimum number of seconds to run all queries: 16.785 seconds
05         Maximum number of seconds to run all queries: 16.785 seconds
06         Number of clients running queries: 2
07         Average number of queries per client: 5000
08  
09 Benchmark
10         Runningforengine innodb
11         Average number of seconds to run all queries: 28.809 seconds
12         Minimum number of seconds to run all queries: 28.809 seconds
13         Maximum number of seconds to run all queries: 28.809 seconds
14         Number of clients running queries: 2
15         Average number of queries per client: 5000
myisam每秒处理595次。

innodb每秒处理347次。



读性能测试

在真实的情况中,我们最主要的读操作其实就是用主键去查找表中的一行。 我主要是对这种行为进行测试。所以采用的load-type = key ,而不是read。 read是对全表进行读取,可是实际上这种情况很少出现。

读性能测试1,guid主键

命令如下:

01 mysqlslap   --concurrency=2\
02             --iterations=1\
03             --number-int-cols=10\
04             --number-char-cols=10\
05             -a\
06             --auto-generate-sql-guid-primary\
07             --auto-generate-sql-unique-query-number=10000\
08             --auto-generate-sql-load-type=key\
09             --number-of-queries=10000\
10             --engine=myisam,innodb\
结果如下:
01 Benchmark
02         Runningforengine myisam
03         Average number of seconds to run all queries: 4.215 seconds
04         Minimum number of seconds to run all queries: 4.215 seconds
05         Maximum number of seconds to run all queries: 4.215 seconds
06         Number of clients running queries: 2
07         Average number of queries per client: 5000
08  
09 Benchmark
10         Runningforengine innodb
11         Average number of seconds to run all queries: 3.917 seconds
12         Minimum number of seconds to run all queries: 3.917 seconds
13         Maximum number of seconds to run all queries: 3.917 seconds
14         Number of clients running queries: 2
15         Average number of queries per client: 5000
myisam每秒处理2372次

innodb每秒处理2553次

读性能测试2,auto increment主键

命令如下

01 mysqlslap   --concurrency=1\
02             --iterations=1\
03             --number-int-cols=10\
04             --number-char-cols=10\
05             -a\
06             --auto-generate-sql-add-autoincrement\
07             --auto-generate-sql-unique-query-number=10000\
08             --auto-generate-sql-load-type=key\
09             --number-of-queries=10000\
10             --engine=myisam,innodb\
结果如下:
01 Benchmark
02         Runningforengine myisam
03         Average number of seconds to run all queries: 4.555 seconds
04         Minimum number of seconds to run all queries: 4.555 seconds
05         Maximum number of seconds to run all queries: 4.555 seconds
06         Number of clients running queries: 1
07         Average number of queries per client: 10000
08  
09 Benchmark
10         Runningforengine innodb
11         Average number of seconds to run all queries: 4.402 seconds
12         Minimum number of seconds to run all queries: 4.402 seconds
13         Maximum number of seconds to run all queries: 4.402 seconds
14         Number of clients running queries: 1
15         Average number of queries per client: 10000
myisam每秒处理2195次。

innodb每秒处理2273次。


实验结果

项目 myisam每秒吞吐量 innodb每秒吞吐量

写性能测试1,不开binlog, guid主键, 无索引

1639 971

写性能测试2,开binlog,guid主键,无索引

675 374

写性能测试3, 开binlog, guid做主键, 有索引

599 329

写性能测试4,开binglog,auto increment主键,有索引

595 347

读性能测试1,guid主键

2372 2553

读性能测试2,auto increment主键

2195 2273


结论

1 在开启了binlog后, mysql写性能下降60%

2 myisam与innodb相比,写的速度更快(快40%), 读的速度差不多。


转载

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
存储 SQL 关系型数据库
Mysqlslap性能测试MySQL三种存储引擎
Mysqlslap性能测试MySQL三种存储引擎
|
关系型数据库 MySQL 测试技术
mysqlslap mysql性能测试
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端 同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性 能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的 掌握线上数据库支撑的用户流量上限及其抗压性等问题。
169 0
|
存储 关系型数据库 大数据
MySql分区表性能测试及切换案例
随着业务的快速增长,数据库中表数据量迅速膨胀,业务高峰期开始出现慢SQL、锁表等性能问题,需要优化。结合切换成本与性能测试数据,我们选择通过将非分区表切换到分区表来降低数据库性能风险。 最后,我们在业务始终稳定运行的情况下完成了分区表的切换。
9669 0
|
数据采集 缓存 Oracle
MySQL压力测试基准值
MySQL压力测试基准值
189 0
MySQL压力测试基准值
|
存储 缓存 安全
性能测试告诉你 mysql 数据库存储引擎该如何选?
简介 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL 的核心就是插件式存储引擎。
性能测试告诉你 mysql 数据库存储引擎该如何选?
|
存储 传感器 监控
InfluxDB与MySQL的性能测试
InfluxDB与MySQL的性能测试
InfluxDB与MySQL的性能测试
|
存储 SQL 关系型数据库
Mysql8性能测试
Mysql8性能测试
1302 0
Mysql8性能测试
|
关系型数据库 MySQL 测试技术
MySQL 5.7和8.0性能测试
MySQL 5.7和8.0性能测试目录 背景前提环境测试双1模式下0 2 模式下结论背景测试mysql5.7和mysql8.0 分别在读写、只读、只写模式下不同并发时的性能(tps,qps) 前提测试使用版本为mysql5.
2709 0
|
关系型数据库 MySQL 测试技术
MySQL 性能测试
MySQL 性能测试MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 SELECT 语句查找数据行,而不是排除数据行。
1269 0
|
SQL 关系型数据库 MySQL
Jmeter之mysql性能测试
Jmeter官网地址:https://jmeter.apache.org/ 作为开发人员,必要的性能测试还是需要掌握的,虽然配置druid可以比较直观获得sql的执行时间,那些表被访问的比较多等等,但是不能测试sql被1000次或10000次执行会怎么样?这时性能测试工具就会派上用场,它可以模拟用户访问场景 Jmeter是个很好的性能测试工具   测试mysql性能可参考如下:   1.
1450 0

热门文章

最新文章