01月29, 2018

MySQL 性能调优

上文 Centos 7 ab 压力测试安装与解释 中提到使用 ab 进行软件开发后的测试。测试过程中常会在 Linux top 命令中看到 CPU 占用率过高的问题,如下图:

alt

有的甚至达到百分之百,如何解决 MySQL CPU占用过高的问题呢?

1、进入你的 MySQL 数据库运行如下命令:

show full processlist;  #找出负荷最重的 SQL 语句
show global variables like 'wait_timeout'; 
set global wait_timeout=20;

2、在 MySQL 中开启慢查询,观察哪些 SQL 语句运行速度拖了后腿,比如运行超过 2s 以上

slow-query-log=1     # 开启慢查询
slow-query-log-file='/var/www/mysqllog/slowquerylog.log'     # 慢查询放置日志文件及路径
long_query_time = 2 # 指定超过3s仍未完成的语句,为执行过慢的语句

3、找出执行速度较慢的语句,增加 where 关键字对应字段的索引。 alt

4、使用缓存,目前的一些编程语言中内置缓存调用,可以选择直接存储在内存,或者 Memcached、Redis 里。

5、增大 max_heap_table_size 和 tmp_table_size

本文链接:https://www.daguanren.cc/post/mysql_performance_optimization.html

-- EOF --

Comments