我目前正在尝试调整单个数据库(实际上是一组类似的数据库)的性能,但是慢查询日志中有一堆我目前不感兴趣的其他数据库的数据。我已经能够找到一些慢日志过滤脚本,但实际上似乎没有根据数据库名称进行过滤。
查看日志文件(对于 5.0.18),数据库名称似乎出现在每个查询块中,因此执行此过滤应该是一个相当简单的编程问题(这就是我要做的事情),但是如果这么简单,为什么没有人(我能找到)已经做到了呢?
例如:
# Time: 090226 11:17:04
# User@Host: user1[user1] @ host [10.0.0.3]
# Query_time: 12 Lock_time: 0 Rows_sent: 2 Rows_examined: 4042564
use [db1];
SELECT ...
# Time: 090226 11:17:34
# User@Host: user1[user1] @ host [10.0.0.3]
# Query_time: 12 Lock_time: 0 Rows_sent: 0 Rows_examined: 4042560
SELECT ...
# Time: 090226 12:32:40
# User@Host: user2[user2] @ host [10.0.0.3]
# Query_time: 8 Lock_time: 0 Rows_sent: 123390 Rows_examined: 812841
use [db2];
SELECT ...
前两个查询都针对同一个数据库,因此单个use
语句涵盖了它们。
您可以使用这个小 awk 脚本来完成这项工作:
只需将 db1 替换为您要搜索的数据库名称即可。当您从上面获取示例时,此脚本将为您提供:
我不知道您的操作系统是什么,但 awk/gawk 可用于多个操作系统。
我最终找到了 mysqlsla,并在进行了一些修补(我将其提交给他们,但如果有人想要它,我很乐意把它放在这里),让它听我的吩咐。