概述和测试环境

压测的目的是为了尽量模拟真实情况。测试的表都是由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%), 读的速度差不多。

转载

mysql官方读写性能_mysql读写性能测试-阿里云开发者社区相关推荐

  1. MySQL 引擎 阿里_MySQL引擎讲解-阿里云开发者社区

    MySQL支持三个引擎:ISAM.MyISAM和HEAP,根据需求不同来选择不同的引擎 数据库的引擎到决于 MySQL 在安装的时候是如何被编译的,要添加一个新的引擎,就必须重新编译 --with-p ...

  2. mysql 除号_MySql的运算符-阿里云开发者社区

    数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据.例如,学生表中存在一个birth字段,这个字段表示学生的出生年份.而运用My ...

  3. 阿里云 mysql 日志_MySQL日志简介-阿里云开发者社区

    MySQL中的日志主要分为以下几种: 查询日志 慢查询日志 错误日志 二进制日志 中继日志 事务日志 说明: 支持本文实验使用的linux系统是CentOS7版本,使用的数据库是base源自带的Mar ...

  4. 阿里云mysql创建用户_mysql创建用户-阿里云开发者社区

    创建用于localhost连接的用户并指定密码 mysql> create user'pcom'@'localhost'identified by'aaa7B2249'; Query OK,0r ...

  5. 阿里云mysql事件启动_mysql 启动事件-阿里云开发者社区

    事件调度器有时也可称为临时触发器(temporal triggers),因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的,区别也就在这里. ...

  6. mysql子分区多少层_MySQL 子分区-阿里云开发者社区

    介绍 子分区其实是对每个分区表的每个分区进行再次分隔,目前只有RANGE和LIST分区的表可以再进行子分区,子分区只能是HASH或者KEY分区.子分区可以将原本的数据进行再次的分区划分. 一.创建子分 ...

  7. mysql timeout的单位_mysql的timeout-阿里云开发者社区

    mysql的timeout 很多时候我们连接mysql会在timeout这里跌倒,这里明确下mysql的timeout: 下面是获取timeout的变量: mysql> show global ...

  8. coba mysql_在Android Studio中将数据从MySQL数据库显示到TextView中-问答-阿里云开发者社区-阿里云...

    我是新手,Android Studio我想将数据库(我使用MySQL)中的数据显示到中TextView.我也使用Button和RadioButton.单击按钮后,数据将显示在中TextView.这是我 ...

  9. bae 3.0 mysql_bae3.0 mysql 有时报错?报错-问答-阿里云开发者社区-阿里云

    Jfinal 用的MySQL的数据源:MysqlDataSource ds = new MysqlDataSource(); Config: MysqlDataSource ds = new Mysq ...

最新文章

  1. MYSQL 连接数据库命令收藏
  2. php计算有多少页,PHP 计算页面执行时间
  3. C#中两个窗体间的数据传递
  4. 测试博客园Markdown 表格
  5. wgs84坐标格式转换度分秒_一起爬山吗?寻找GIS坐标系统中“隐秘的角落”
  6. CACTI 0.87e 安装
  7. Android App性能測试
  8. 你想过同时为两家以上的企业工作吗?
  9. HTML标记之Form表单
  10. 【CVRP】基于matlab模拟退火算法求解带容量的车辆路径规划问题【含Matlab源码 159期】
  11. iframe透明解决方案
  12. Unity2018发布webgl视频无法播放
  13. Linux系统中CPU占用率较高问题排查思路与解决方法
  14. 采集利器 - Web Scraper教学及示例
  15. dytt 爬取磁力链接保存mysql
  16. win10怎么打开网络计算机,Win10怎么启用网络发现?
  17. 如何获取AK/SK?(IAM用户)
  18. 华为主题 主题兑换券活动高端操作
  19. vc6.0关于code jock在打开多文档debug版本崩溃的问题解决
  20. 如何保存php网页到桌面,如何将网页保存到电脑桌面上

热门文章

  1. 常见16种HTTP状态返回码
  2. keras安装配置指南【linux环境】【转】
  3. js获取局域网ip地址以及获取服务器端得时间(已测,复制粘贴即可使用)
  4. 苹果CEO乔布斯用人九法则:没有B计划
  5. 提交微信小程序的项目为线上版本
  6. 【VMware vSAN 7.0】6.3 使用延伸群集的最佳做法—我们有软硬件解决方案
  7. C# 字符串倒序输出
  8. python子串匹配_Python正则表达式如何匹配子串
  9. 如何退出root权限
  10. 刘强东发飙:不要跟我空谈毛利率 京东不会死!