mysql慢查询日志参数配置及使用实践

一.在mysql中,慢查询日志对于管理员有重要作用能帮助dba快速定位捕获查询较慢或sql中没有使用索引的语句,便于对程序sql语句进行优化,排查问题等。
1.慢查询日志相关重要参数:
slow_query_log ##是否开启慢查询日志
mysql慢查询日志参数配置及使用实践

slow_query_log_file ##慢查询日志文件名及路径
mysql慢查询日志参数配置及使用实践

long_query_time ###指定慢查询时间阈(yu)值,sql执行时间大于该阈值(不包括该值本身,如在sql执行中花费的时间等于,下面的2秒时,不会被记录)将被记录下来,生产环境中1~2秒范围均可
mysql慢查询日志参数配置及使用实践

log_queries_not_using_indexes ###将没有使用索引的语句记录至慢查询日志中,
mysql慢查询日志参数配置及使用实践

log_throttle_queries_not_using_indexes ##限制每分钟内,在慢查询日志中,去记录没有使用索引的SQL语句的次数,因为没有使用索引的SQL可能会短时间重复执行,为了避免日志快速增大,限制每分钟的记录次数
mysql慢查询日志参数配置及使用实践

min_examined_row_limit ###扫描全表少于该值的记录将不会被记录至慢查询日志,结合去记录没有使用索引的SQL语句的例子,有可能存在某一个表,数据量维持在百行左右,且没有建立索引。这种表即使不建立索引,查询也很快,扫描记录很小,如果确定有这种表,则可以通过此参数设置,将这个SQL不记录到慢查询日志。

log_slow_admin_statements##记录超时的管理操作sql到慢查询日志中,如alter,analyze table等
mysql慢查询日志参数配置及使用实践

log_output ###慢查询日志格式,默认为file记录到文件系统文件上,改为table将记录在mysql.slow_log表中。 类型为file可以通过mysql命令mysqldumpslow 命令统计查看。存在mysql.slow_log表中可以方便统计查询,但是在存在较多慢查询sql时,该表可能增长的过大,备份过程中不要备份该表。
mysql慢查询日志参数配置及使用实践

log_timestamps##写入时区信息。可根据需求记录UTC时间或者服务器本地系统时间

以上参数建议写在/etc/my.cnf配置文件中,每次启动mysql实例均生效,定期查看慢查询日志或mysql.slow_log表,优化这些sql语句。可以结合这条语句,找到数据库中哪些表尚未建立主键索引的表进行优化。
SELECT

table_schema,
table_name FROM information_schema.TABLES 

WHERE

table_name NOT IN (
    SELECT DISTINCT
        TABLE_NAME from information_schema.COLUMNS where COLUMN_KEY = 'PRI'
)

AND table_schema NOT IN (

'mysql',
'information_schema','performance_schema','sys')
上一篇:Idea快速生成War包


下一篇:是否使用ASP.NET MVC