mysql中查询日志与慢查询日志

一、查询日志
查询日志记录mysql中所有的query,通过 “--general-log[=file_name]”来打开该功能。该功能记录了所有的query(含select),会影响性能。默认的查询日志文件名为: hostname.log。默认情况下是不开启 查询日志的。
查看是否启用查询日志及 存储文件及路径
show variables like '%general_log';

二、慢查询日志
慢查询日志中记录的是执行时间较长的query, --slow-query-log参数 是控制慢查询日志是否开启的并记录文件名和存储的位置,默认文件名为 hostname-slow.log。默认的存储目录是数据目录。  该日志文件记录了语句执行耗时,执行用户,连接主机等相关信息。可以用任何文本编辑器查看其中的内容,mysql提供了专门用来分析慢查询日志的工具 mysqlslowdump。

show variables like '%slow%';

设置慢查询开启关闭
slow_query_log =0|1 (0关,1开启)
设置 慢查询超时时间
set global long_query_time=1(秒)最小单位微秒

slow_launch_time  (show variables like '%slow%';)   最小单位 秒
该参数 表示:如果创建线程需要比slow_launch_time更多的时间,服务器会增加slow_launch_threads的状态变量。及该阀值是用来标记 创建线程超时用的。
slow_launch_threads (show status like '%threads%';)
创建时间超过slow_launch_time的线程数。

正常情况下,释放的连接会缓存,即 threads_cached会释放后增加,在使用后减少,也就是说新的连接会优先使用 cached中的连接,全部使用后再创建新的连接。
可以在程序运行时 执行 show processlist;
如果 sleep时间过长,可以适当调整 wait_timeout.

2、清空在线慢查询日志slow log
2.1查看慢查询日志状态
show  variables like '%slow%';

2.2 停止慢查询日志服务,并确认是否关闭
set global slow_query_log=0|OFF;
show variables like '%slow%';
2.3 重置一个新的慢查询日志文件路径
set global slow_query_log_file='/newfilepath/newfile.log';
2.4 开启慢查询日志服务
set global slow_query_log=1|ON;

mysqldumpslow 输出
Count :统计不同慢sql的出现次数。
Time=0.00s(0s) :执行最长时间(0.00s),累计总耗时时间(0s)
Lock=0.00s(0s) :等待锁的时间(0.00s),等待锁的总时间(0s);
Rows=3.0(5) : 发送给客户端的行总数(3.0),扫描的行总数(5);
用户及sql语句。

mysqldumpslow 常用的参数:
-s 排序选项: c 查询次数  r 返回记录行数   t 查询时间  -t n:显示top n条查询
不过对于百分比等等数据mysqldumpslow就不够完善了。所以世界上多了很多各种MySQL慢日志分析工具,比较优秀的有mysqlsla(Perl脚本)和pt-query-digest(Perl脚本),可以提供Count, sql的执行次数及占总的slow log数量的百分比,Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比,95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间,Lock Time, 等待锁的时间,95% of Lock , 95%的慢sql等待锁时间,Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量,Rows examined, 扫描的行数量,还可以生成表报,存储分析结果。
pt-query-digest分析慢查询日志


猜你喜欢

转载自blog.csdn.net/zhaowenzhong/article/details/76020935