(转)用mysql自带工具mysqlslap对数据库进行压力测试

http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试

mysqlslap是mysql自带的工具,不需要单独安装:

参数:

-concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是10、50、100个并发。

--engines 代表要测试的引擎,可以有多个,用分隔符隔开。

--iterations 代表要运行这些测试多少次。

--auto-generate-sql 代表用系统自己生成的SQL脚本来测试。

--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)

--number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。

--debug-info 代表要额外输出CPU以及内存的相关信息。

--number-int-cols :创建测试表的 int 型字段数量

--auto-generate-sql-add-autoincrement : 代表对生成的表自动添加auto_increment列,从5.1.18版本开始

--number-char-cols 创建测试表的 char 型字段数量。

--create-schema 测试的schema,MySQL中schema也就是database。

--query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。

--only-print 如果只想打印看看SQL语句是什么,可以用这个选项。

1,简单用法


1

2

3

4

5

6

7

8

9

10

11

12

13

[[email protected]_Aolens_01 /home/aolens]# mysqlslap --user=root --password=password --auto-generate-sql

 

Benchmark

 

Average number of seconds to run all queries: 0.002 seconds

 

Minimum number of seconds to run all queries: 0.002 seconds

 

Maximum number of seconds to run all queries: 0.002 seconds

 

Number of clients running queries: 1

 

Average number of queries per client: 0

   

结果中各项含义:

  • Average number of ... 运行所有语句的平均秒数
  • Minimum number of ... 运行所有语句的最小秒数
  • Maximum number of ... 运行所有语句的最大秒数
  • Number of clients ... 客户端数量
  • Average number of queries per client 每个客户端运行查询的平均数

2,添加并发


1

2

3

4

5

6

7

[[email protected]_Aolens_01 /home/aolens]# mysqlslap --user=root --password=password --auto-generate-sql --concurrency=100 --number-of-queries=1000

Benchmark

Average number of seconds to run all queries: 0.316 seconds

Minimum number of seconds to run all queries: 0.316 seconds

Maximum number of seconds to run all queries: 0.316 seconds

Number of clients running queries: 100

Average number of queries per client: 10

3,使用自己测试库和测试语句


1

2

3

4

5

6

7

[[email protected]_Aolens_01 /home/aolens]# mysqlslap --user=root --password=password --concurrency=10 --number-of-queries=100 --create-schema=wordpress --query="SELECT * FROM wordpress.wp_posts;"

Benchmark

Average number of seconds to run all queries: 4.255 seconds

Minimum number of seconds to run all queries: 4.255 seconds

Maximum number of seconds to run all queries: 4.255 seconds

Number of clients running queries: 10

Average number of queries per client: 10

4,结合实际,对网站首页所请求的数据库连接做压力测试

数据库Mariadb 10.0.14

首先给数据库安装审计插件,并启用


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

MariaDB [(none)]> show variables like ‘%audit%‘

-> ;

+-------------------------------+-----------------------+

| Variable_name | Value |

+-------------------------------+-----------------------+

| server_audit_events | |

| server_audit_excl_users | |

| server_audit_file_path | server_audit.log |

| server_audit_file_rotate_now | OFF |

| server_audit_file_rotate_size | 1000000 |

| server_audit_file_rotations | 9 |

| server_audit_incl_users | |

| server_audit_logging | OFF |

| server_audit_mode | 0 |

| server_audit_output_type | file |

| server_audit_syslog_facility | LOG_USER |

| server_audit_syslog_ident | mysql-server_auditing |

| server_audit_syslog_info | |

| server_audit_syslog_priority | LOG_INFO |

+-------------------------------+-----------------------+

14 rows in set (0.00 sec)

发现已经安装了,没有安装的MariaDB [(none)]> INSTALL PLUGIN server_audit SONAME ‘server_audit.so‘;

命令行启动审计功能:

命令行启用audit ,重启后失效


1

2

3

4

5

6

7

8

MariaDB [(none)]> set global server_audit_file_rotate_size=1024*1024*1024;

Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> set global server_audit_events=‘query,table‘;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global server_audit_file_rotate_now=on;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global server_audit_logging=‘ON‘;

Query OK, 0 rows affected (0.00 sec)

   

刷新一下首页查看审计日志里都有哪些SQL操作,对这些SQL进行压测:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

mysqlslap --user=root --password=password --concurrency=20 --number-of-queries=1000 --create-schema=wordpress --query=" \

SELECT option_name, option_value FROM wp_options WHERE autoload = ‘yes‘; \

SELECT option_value FROM wp_options WHERE option_name = ‘a3_lz_google_api_key‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘a3_lz_google_api_key_enable‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘_transient_timeout_a3_lz_google_api_key_status‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘_transient_a3_lz_google_api_key_status‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘wordpress_api_key‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘onp_license_clipboard-images‘ LIMIT 1; \

SELECT autoload FROM wp_options WHERE option_name = ‘onp_license_clipboard-images‘; \

SELECT option_value FROM wp_options WHERE option_name = ‘onp_version_check_clipboard-images‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘ossdl_https‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘uninstall_plugins‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘a3_lazy_load_just_installed‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘akismet_comment_nonce‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘preload_cache_counter‘ LIMIT 1; \

SELECT option_value FROM wp_options WHERE option_name = ‘rewrite_rules‘ LIMIT 1; \

......"

Benchmark

Average number of seconds to run all queries: 40.931 seconds

Minimum number of seconds to run all queries: 40.931 seconds

Maximum number of seconds to run all queries: 40.931 seconds

Number of clients running queries: 20

Average number of queries per client: 50

时间: 2024-10-26 18:21:13

(转)用mysql自带工具mysqlslap对数据库进行压力测试的相关文章

用mysql自带工具mysqlslap对数据库进行压力测试

mysqlslap是mysql自带的工具,不需要单独安装: 参数: -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是10.50.100个并发. --engines 代表要测试的引擎,可以有多个,用分隔符隔开. --iterations 代表要运行这些测试多少次. --auto-generate-sql 代表用系统自己生成的SQL脚本来测试. --auto-generate-sql-load-type 代表要测试的是读还

MySQL自带工具使用介绍

MySQL自带工具使用介绍:1)mysql命令:mysql命令事是使用最多的命令工具了,为用户提供了一个命令行接口来操作管理MySQL的服务器.命令格式:Usage:mysql [OPTIONS][database]例:mysql -e "select user,host from user" mysqlmysql --help 可以得到相应的基础使用帮助信息-e : --execut=name :我们要执行-e后面的命令,但是并不通过mysql连接进入mysql交互界面.此参数在我们

mysql 自带工具详解

MySQL自带工具使用介绍:1)mysql命令:mysql命令事是使用最多的命令工具了,为用户提供了一个命令行接口来操作管理MySQL的服务器.命令格式:Usage:mysql [OPTIONS][database]例:mysql -e "select user,host from user" mysqlmysql --help 可以得到相应的基础使用帮助信息-e : --execut=name :我们要执行-e后面的命令,但是并不通过mysql连接进入mysql交互界面.此参数在我们

MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒

这里采用.NET Framework 4.0以上版本中新出现的 ConcurrentQueue<T> 类 MSDN是这样描述的: ConcurrentQueue<T> 类是一个线程安全的先进先出 (FIFO) 集合. ConcurrentQueue<T> 的所有公共且受保护的成员都是线程安全的,可从多个线程同时使用. 共采用两个线程,一个读一个写. ConcurrentQueue<T>的实现方法: (FIFO) 集合: ConcurrentQueue<

Mysql压测工具mysqlslap 讲解

参考文献: http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html http://www.ningoo.net/html/2008/mysql_load_test_tool_mysqlslap.html 在mysql5.1以后的版本:客户端带了个工具mysqlslap可以对mysql进行压力测试: 可以使用mysqlslap --help来显示使用方法: Default options are read from the following f

MySQL数据库基准压力测试工具之MySQLSlap使用实例

一.Mysqlslap介绍 mysqlslap是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活,容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.mysqlslap为mysql性能优化前后提供了直观的验证依据,笔者建议系统运维人员应该掌握一些常见的压力测试工具,这样才能较为准确的掌握线上系统能够支撑的用户

[转]MySQL数据库基准压力测试工具之MySQLSlap使用实例

原文链接:http://www.2cto.com/database/201303/195303.html 一.Mysqlslap介绍 mysqlslap 是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活,容易使用.该工具可以模拟多个客户端同时并发 的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.mysqlslap为mysql性能优化前后提供了直

Mysql多线程性能测试工具sysbench 安装、使用和测试

From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要:      sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Oracle和PostgreSQL.当前功能允许测试的系统参数有: file I/O performance (文件I / O性能) scheduler performance (调

使用mysql自带工具mysqldump进行全库备份以及source命令恢复数据库

mysql数据库提供了一个很好用的工具mysqldump用以备份数据库,下面将使用mysqldump命令进行备份所有数据库以及指定数据库 一.mysqldump一次性备份所有数据库数据 /usr/local/mysql/bin/mysqldump -u用户名 -p密码 --all-databases > /保存路径/文件名.sql 注意:以上命令直接在控制台输入即可,无须登录进入数据库操作界面 以上命令执行后,你就可以在对应路径下,找到你的备份sql文件了 二.mysqldump 一次性备份指定