2014-11-01 48 views

回答

0

当您运行查询时,通用查询日志不会记录当前数据库。这些信息根本不在日志中。唯一的可能是如果表格在查询中被模式名称限定,并且可以解析出来。

慢查询日志确实为记录了每个查询的默认数据库。您可以set global long_query_time=0为所有查询制作慢查询日志记录信息,就像通用日志一样。

要过滤出特定当前数据库的日志条目,我会使用pt-query-digest,它是免费的,并且是Percona Toolkit的一部分。

例如,以下是一个读取慢查询日志的命令,筛选当前数据库“test”的条目并以新的慢查询日志格式输出。

pt-query-digest --filter '$event->{db} eq "test"' mysql-slow.log --no-report --output slowlog 

但是,你应该知道,这只能过滤出了当默认数据库是“测试”运行查询。通过使用模式名称限定表名,任何查询都可以访问其他数据库中的表。 SELECT * FROM mydb.mytable。但是,慢日志可能仍会记录不同的默认数据库。

相关问题