mysql 有一项功能 slow query log 顾名思义,就是慢查询日志,日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录。两种启用方式:1, 在my.cnf 里 ...
mysql 哪个sql 占io
mysql 有一项功能
slow query log
顾名思义,就是慢查询日志,日志中记录的是执行时间较长的query,也就是我们常说的slow
query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名,
默认文件名为hostname-slow.log,默认目录也是数据目录。
两种启用方式:
1, 在my.cnf 里 通过 log-slow-queries[=file_name]
2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项
慢查询日志是文本格式,可以通过各种文本编辑器查看其中的内容。其中记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。MySQL 还提供了专门用来分析满查询日志的工具程序mysqlslowdump,可以解析这个文件。网上有很多关于解析此日志工具的对比说明,应该有4,5种工具吧,各有优劣。
--log-queries-not-using-indexes
这参数和slow query log 类似,记录没有应用索引的慢查询。
这两种日志都是以时间为基准的,日志记录功能。MySQL 中我还没发现根据 逻辑 IO ,或者内存消耗,作基准的方法,记录高消耗sql的方法。有好方法可以交流。2014-05-01
mysql自带的slow query log功能,只能获取cpu time, lock time, 并没有 waitIO的时间。
而events_statements_summary_by_digest,只能获取 sql执行查询的行数;
本质上mysql在sql线程上就没有记录waitIO这个值。 内部性能视图,也只能查询到某个table的IO情况,见(table_io_waits_summary_by_table)。
Percona Server for MySQL是基于早期版本的分支, 这个版本记录了sql的IO; 为了记录IO而更改产品,是否值得,自己权衡吧。
2022-03-03