MySQL慢查询参数

我只是一个虾纸丫 提交于 2019-11-30 21:10:58

开启mysql慢查询日志

修改/etc/mysql/my.cnf配置文件,添加:

[mysqld]
slow_query_log = on
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2

参数详解:

slow_query_log = on #开启慢查询日志(或设置1)

slow_query_log_file = filename #指定日志文件保存路径,不指定的话默认在数据库文件目录下,名为hostname-slow.log

long_query_time = 2 #表示慢查询阈值,SQL执行时间超过该值,则会记录到慢查询日志中。SQL的执行耗时不包含锁等待时间。
log_queries_not_using_indexes=on #记录没有使用索引的查询语句。!可能导致日志文件激增,谨慎使用。配合log_throttle_queries_not_using_indexes 使用。 
log_throttle_queries_not_using_indexes #表示每分钟允许记录到slow log的且未使用索引的sql语句次数。配合long_queries_not_using_indexes开启使用。
min_examined_row_limit = 1000 #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志.需要开启log_queries_not_using_indexes=on 。注意:1查询结果数量是<不会被记录,=会被记录。2,这个参数开启后,long_query_time 参数失效 。

log_slow_admin_statements #记录ALTER TABLE等语句引发的慢查询

log_slow_slave_statements #记录从服务器产生的慢查询

min_examined_row_limit=Num of Rows 类似于SELECT ... FROM TBL LIMIT N这样的全表扫描的查询,如果--log_queries_not_using_indexes被开启的话,因为用不到索引将要报告为慢查询,可以在配置文件中使用min_examined_row_limit=Num of Rows来设置,如果要检查的行数大于等于这个量的查询,才会被报告为慢查询。

配置结束之后,需要重启才会生效。

service mysqld restart

登陆数据库查询下环境

show variables like '%query%';

执行一个慢查询语句

select sleep(3);

查看文件,看日志是否生成。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!