打开慢查询日志对系统性能的整体影响不是很大,但因为系统需要计算每一条查询的执行时间,所以,CPU方面还是有些损耗。在CPU资源不够时,在大部分时候可关闭这个,在可能存在的慢查询时,间断性的打开来定位,系统默认没有打开慢查询日志。
[sql]
mysql> SHOW VARIABLES LIKE '%log_slow%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| log_slow_queries | OFF |
+------------------+-------+
mysql> SHOW VARIABLES LIKE '%long_query%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
[/sql]
long-query-time: 当期系统记录执行时间的超过这个时间的query,MySQL < 5.1, long-query-time = 1(unit: s),。
[bash title="启用 MySQL 慢速查询日志"]
[mysqld]
#enable the slow query log, default 10 seconds
log_slow_queries
#log queries taking longer than 5 seconds
long_query_time = 5
#log queries that don't use indexes even if they take less than long_query_time
#MySQL 4.1 and newer only
log_queries_not_using_indexes
#define slow log file directory
#log_slow_queries = /new/path/to/file
[/bash]
这 4 个设置一起使用,可以记录执行时间超过 5 秒和没有使用索引的查询。但需要注意log-queries-not-using-indexes 必须是使用 MySQL 4.1 或更高版本。
另外,在 mysqld 进程启动时, 指定--log-slow-queries[=file_name]选项,也可以开启慢查询日志
[bash]
root@gguo-laptop:~# /usr/local/mysql/bin/mysqld_safe \
>--log-slow-queries=/user/local/mysql/log/slow-log-query.sql &
[/bash]
若需要进一步缩短慢查询时间限制,可使用 Percona 提供的 microslow-patch(msl Patch)。msl Patch不仅能将满朝性时间减小到毫秒级别,还能通过一些特定的规则来过滤记录的SQL,如只记录某个表的慢查询。
阅读慢速查询日志可通过 mysqldumpslow 命令进行。指定日志文件的路径,就可以看到一个慢速查询的排序后的列表,并且还显示了它们在日志文件中出现的次数。一个非常有用的特性是 mysqldumpslow 在比较结果之前,会删除任何用户指定的数据,因此对同一个查询的不同调用被计为一次;这可以帮助找出需要工作量最多的查询。
没有评论:
发表评论