一、MySQL常用配置

以下所有配置参数以32G内存的服务器为基

1、打开独立的表空间

  1. innodb_file_per_table = 1

2、MySQL服务所允许的同时会话数的上限,默认为151,经常出现Too Many Connections的错误提示,则需要增大此值

  1. max_connections = 8000

3、操作系统在监听队列中所能保持的连接数

  1. back_log = 300

4、每个客户端连接最大的错误允许数量,当超过该次数,MYSQL服务器将禁止此主机的连接请求,直到MYSQL服务器重启或通过flush hosts命令清空此主机的相关信息

  1. max_connect_errors = 1000

5、所有线程所打开表的数量

  1. open_files_limit = 10240

6、每个连接传输数据大小,最大1G,须是1024的倍数,一般设为最大的BLOB的值

  1. max_allowed_packet = 32M

7、请求的最大连接时间

  1. wait_timeout = 10

8、排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序

  1. sort_buffer_size = 16M

9、不带索引的全表扫描,使用的buffer的最小值

  1. join_buffer_size = 16M

10、查询缓冲大小

  1. query_cache_size = 128M

11、指定单个查询能够使用的缓冲区大小,默认为1M

  1. query_cache_limit = 4M

12、设定默认的事务隔离级别

  1. transaction_isolation = REPEATABLE-READ

13、 线程使用的堆大小,此值限制内存中能处理的存储过程的递归深度和SQL语句复杂性,此容量的内存在每次连接时被预留

  1. thread_stack = 512K

14、开启二进制日志功能

  1. log_bin

15、二进制日志格式:基于行

  1. binlog_format = row

16、InnoDB使用一个缓冲池来保存索引和原始数据, 可设置这个变量到服务器物理内存大小的80%

  1. innodb_buffer_pool_size = 6G

17、用来同步IO操作的IO线程的数量

  1. innodb_file_io_threads = 4

18、在Innodb核心内的允许线程数量,建议的设置是CPU数量加上磁盘数量的两倍

  1. innodb_thread_concurrency = 16

19、用来缓冲日志数据的缓冲区的大小

  1. innodb_log_buffer_size = 16M

20、在日志组中每个日志文件的大小

  1. innodb_log_file_size = 512M

21、在日志组中的文件总数

  1. innodb_log_files_in_group = 3

22、SQL语句在被回滚前,InnoDB事务等待InnoDB行锁的时间

  1. innodb_lock_wait_timeout = 120

23、慢查询记录的阈值时长,默认10秒

  1. long_query_time = 2

24、将没有使用索引的查询也记录下来

  1. log-queries-not-using-indexes

my.cnf示例:

  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. symbolic-links=0
  5. innodb_file_per_table = 1
  6. innodb_buffer_pool_size = 6442450944 #内存不足6G会报错
  7. innodb_file_io_threads = 4
  8. innodb_thread_concurrency = 16
  9. innodb_log_buffer_size = 16M
  10. innodb_log_file_size = 512M
  11. innodb_log_files_in_group = 3
  12. innodb_lock_wait_timeout = 120
  13. log_bin = /var/lib/mysql/mariadb-bin
  14. binlog_format = row
  15. slow_query_log
  16. long_query_time = 2
  17. log-queries-not-using-indexes
  18. transaction_isolation = REPEATABLE-READ
  19. query_cache_size = 128M
  20. query_cache_limit = 4M
  21. max_connections = 8000
  22. back_log = 300
  23. max_connect_errors = 1000
  24. open_files_limit = 10240
  25. max_allowed_packet = 32M
  26. wait_timeout = 10
  27. sort_buffer_size = 16M
  28. join_buffer_size = 16M
  29. thread_stack = 512K

二、MySQL的性能压力测试

常见测试工具:

  • mysqlslap
  • Sysbench
  • tpcc-mysql
  • MySQL Benchmark Suite
  • MySQL super-smack
  • MyBench

mysqlslap工具介绍

​ mysqlslap来自于mariadb包,测试的过程默认生成一个mysqlslap的schema,生成测试表t1,查询和插入测试数据,mysqlslap库自动生成,如果已经存在则先删除。用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。

常用选项:

  • --auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力
  • --auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)
  • --auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持
  • --number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
  • --number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
  • --number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
  • --query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的存储过程或者sql语句来执行测试
  • --create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database
  • --commint=N 多少条DML后提交一次
  • --compress, -C 如服务器和客户端都支持压缩,则压缩信息
  • --concurrency=N, -c N 表示并发量,即模拟多少个客户端同时执行select;可指定多个值,以逗号或者--delimiter参数指定值做为分隔符
  • --engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开
  • --iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次
  • --only-print 只打印测试语句而不实际执行
  • --detach=N 执行N条语句后断开重连
  • --debug-info, -T 打印内存和CPU的相关信息

测试示例:

1)单线程测试

  1. [root@centos7 ~]# mysqlslap -a -uroot -p
  2. Enter password:
  3. Benchmark
  4. Average number of seconds to run all queries: 0.004 seconds
  5. Minimum number of seconds to run all queries: 0.004 seconds
  6. Maximum number of seconds to run all queries: 0.004 seconds
  7. Number of clients running queries: 1
  8. Average number of queries per client: 0

2)多线程测试,使用–concurrency来模拟并发连接

  1. [root@centos7 ~]# mysqlslap -uroot -p -a -c 500
  2. Enter password:
  3. Benchmark
  4. Average number of seconds to run all queries: 3.384 seconds
  5. Minimum number of seconds to run all queries: 3.384 seconds
  6. Maximum number of seconds to run all queries: 3.384 seconds
  7. Number of clients running queries: 500
  8. Average number of queries per client: 0

3)同时测试不同的存储引擎的性能进行对比

  1. [root@centos7 ~]# mysqlslap -uroot -p -a --concurrency=500 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info
  2. Enter password:
  3. Benchmark
  4. Running for engine myisam
  5. Average number of seconds to run all queries: 0.192 seconds
  6. Minimum number of seconds to run all queries: 0.187 seconds
  7. Maximum number of seconds to run all queries: 0.202 seconds
  8. Number of clients running queries: 500
  9. Average number of queries per client: 2
  10. Benchmark
  11. Running for engine innodb
  12. Average number of seconds to run all queries: 0.355 seconds
  13. Minimum number of seconds to run all queries: 0.350 seconds
  14. Maximum number of seconds to run all queries: 0.364 seconds
  15. Number of clients running queries: 500
  16. Average number of queries per client: 2
  17. User time 0.33, System time 0.58
  18. Maximum resident set size 22892, Integral resident set size 0
  19. Non-physical pagefaults 46012, Physical pagefaults 0, Swaps 0
  20. Blocks in 0 out 0, Messages in 0 out 0, Signals 0
  21. Voluntary context switches 31896, Involuntary context switches 0

4)执行一次测试,分别500和1000个并发,执行5000次总查询

  1. [root@centos7 ~]# mysqlslap -uroot -p -a --concurrency=500,1000 --number-of-queries 5000 --debug-info
  2. Enter password:
  3. Benchmark
  4. Average number of seconds to run all queries: 3.378 seconds
  5. Minimum number of seconds to run all queries: 3.378 seconds
  6. Maximum number of seconds to run all queries: 3.378 seconds
  7. Number of clients running queries: 500
  8. Average number of queries per client: 10
  9. Benchmark
  10. Average number of seconds to run all queries: 3.101 seconds
  11. Minimum number of seconds to run all queries: 3.101 seconds
  12. Maximum number of seconds to run all queries: 3.101 seconds
  13. Number of clients running queries: 1000
  14. Average number of queries per client: 5
  15. User time 0.84, System time 0.64
  16. Maximum resident set size 83068, Integral resident set size 0
  17. Non-physical pagefaults 139977, Physical pagefaults 0, Swaps 0
  18. Blocks in 0 out 0, Messages in 0 out 0, Signals 0
  19. Voluntary context switches 31524, Involuntary context switches 3

5)迭代测试

  1. [root@centos7 ~]# mysqlslap -uroot -p -a --concurrency=500 --number-of-queries 5000 --iterations=5 --debug-info
  2. Enter password:
  3. Benchmark
  4. Average number of seconds to run all queries: 3.307 seconds
  5. Minimum number of seconds to run all queries: 3.184 seconds
  6. Maximum number of seconds to run all queries: 3.421 seconds
  7. Number of clients running queries: 500
  8. Average number of queries per client: 10
  9. User time 2.18, System time 1.58
  10. Maximum resident set size 74872, Integral resident set size 0
  11. Non-physical pagefaults 327732, Physical pagefaults 0, Swaps 0
  12. Blocks in 0 out 0, Messages in 0 out 0, Signals 0
  13. Voluntary context switches 73904, Involuntary context switches 3

MySQL常用配置和性能压力测试:MySQL系列之十五的更多相关文章

  1. (转)MySQL自带的性能压力测试工具mysqlslap详解

    mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysqlslap 的一个主要工作场景就是对数据库服务器做基准测试 ...

  2. MySQL自带的性能压力测试工具mysqlslap

    mysqlslap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具. 通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个 ...

  3. 数据库相关文章转载(2) MySQL自带的性能压力测试工具mysqlslap详解

    PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...

  4. (总结)MySQL自带的性能压力测试工具mysqlslap详解

    PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...

  5. MySQL自带的性能压力测试工具mysqlslap详解

    使用语法如下:# mysqlslap [options] 常用参数 [options] 详细说明: --auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自 ...

  6. mysqlslap详解--MySQL自带的性能压力测试工具(转)

    本文的参考博客地址为:https://blog.csdn.net/fuzhongfaya/article/details/80943991 和 https://www.cnblogs.com/davy ...

  7. mysql 自带的性能压力测试工具

    mysqlslap -h127.0.0.1 -uroot -p --concurrency=100 --iterations=1 --auto-generate-sql --auto-generate ...

  8. mysql常用配置注意项与sql优化

    建立数据库: 建立数据库时编码字符集采用utf8 排序规则: 后缀"_cs"或者"_ci"意思是区分大小写和不区分大小写(Case Sensitive & ...

  9. 记在VMware虚拟机中对网站进行性能压力测试的经历

    由于本次测试,仅仅是对静态网站首页进行的测试,所以没有涉及到MySQL数据库的性能监测 服务器基本配置 webbench测试工具 Linux上一款优秀的web性能压力测试工具.webbench最多可以 ...

随机推荐

  1. Post提交和Get提交的区别

    表单提交中get和post的区别 1. get: 把表单内各个字段均显示在URL中. post:把表单内各个字段和内容放在html的header内一起传递给action所指的url,用户看不到. 2. ...

  2. android之VideoView和视频播放View的扩展

    1.概念及扩展 VideoView 是android 系统提供的一个媒体播放显示和控制的控件.其结构层次如下: 原型:VideoView extends SurfaceView implements  ...

  3. ubuntu 上采用nginx做rtmp 直播 服务器

    首先安装必要的依赖库   sudo apt-get install autoconf automake sudo apt-get install libpcre3 libpcre3-dev   安装 ...

  4. 大数据排序算法:外部排序,bitmap算法;大数据去重算法:hash算法,bitmap算法

    外部排序算法相关:主要用到归并排序,堆排序,桶排序,重点是先分成不同的块,然后从每个块中找到最小值写入磁盘,分析过程可以看看http://blog.csdn.net/jeason29/article/ ...

  5. 构建嵌入式小型Linux系统

    构建嵌入式小型Linux系统 摘要:用buildroot构建x86的交叉编译工具链:裁减linux内核,尽可能做到最小:手工构建根文件系统:安装qemu虚拟机,仿真新配置的Linux系统:为新配置的L ...

  6. UOJ #348 州区划分 —— 状压DP+子集卷积

    题目:http://uoj.ac/problem/348 一开始可以 3^n 子集DP,枚举一种状态的最后一个集合是什么来转移: 设 \( f[s] \) 表示 \( s \) 集合内的点都划分好了, ...

  7. 多校联合训练&hdu5791 Two

    hdu5791 dp[i][j]表示的是序列A前i个数字和序列B前j个数字的公共子序列的总个数,那么的dp公式就可以这么表示 理解一下此公式若最尾部的a[i]和b[j]相等的话,那么单独的a[i]和b ...

  8. 2 ubuntu 16.04 安装Elastic Stack

    一: 安装JAVA8          添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 安装oracle- ...

  9. python操作sql server2008 pyodbc

    使用Python通过PyODBC连接数据的注意事项 今天使者用PyODBC连接数据库,试了很久才出来,现把一些心得体会和大家分享! 一.PyODBC的下载地址: http://code.google. ...

  10. JavaScript高级程序设计学习笔记第十五章--使用Canvas绘图

    一.基本用法 1.要使用<canvas>元素,必须先设置其 width 和 height 属性,指定可以绘图的区域大小.能通过 CSS 为该元素添加样式,如果不添加任何样式或者不绘制任何图 ...