MySQL性能优化学习(开启慢查询日志)


最近的任务是sql执行性能优化,一边学习一边记录吧。


写在前面

mysql性能优化是程序员一项很重要的技能。

作为以web开发为主战场的php程序员也不例外。web的性能消耗还是主要在数据存储、查询这块,就算你的网站做了访问的负载均衡等优化,但是最终的压力还是要到数据库这一层。

缓存Cache是分担数据库压力很重要的一环,但是本事sql执行的性能也是非常重要的。而且学习掌握数据库优化技巧是通用的技能,不管你是php程序员也好,或者java,go等等,只要你想成为出色的程序员,你就应该去学习掌握。

开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。


相关配置说明和查看

关于慢查询日志,mysql的以下几个配置是关联的。

slow_query_log 慢查询开启状态
slow_query_log_file 慢查询日志存放的文件
long_query_time 查询超过多少秒才记录

可以使用以下命令查看配置:

查看是否开启慢查询记录日志 和 慢查询日志的文件位置

SHOW VARIABLES LIKE 'slow_query%' 

图片1


查看慢查询界定时间(单位:s)

SHOW VARIABLES LIKE 'long_query_time%'

图片2


在配置文件中添加配置

可以在mysql配置文件中直接修改这些配置: (我的 /etc/my.cnf)

在 【mysqld】模块下

图片3

配置了慢查询日志记录的位置: log-slow-queries=/var/lib/mysql/slow.log

还是超过多少时间算慢查询:long_query_time=1

注意:这个slow.log 需要给mysql运行账号的写权限

顺便说下,log-bin 是记录除select语句之外的所有sql语句到日志中,可以用来恢复数据文件,在数据库的主从复制中也需要用到。


测试

先重启下mysql服务:  service mysqld restart

执行一条慢查询sql: select sleep(2);

再查看下慢查询日志文件: 

cat /var/lib/mysql/slow.log

如果日志存在,那么mysql开启慢查询就算成功了。


mysql skill


上一篇:和自己赛跑

MySQL性能优化学习(EXPLAIN命令):下一篇