为单个数据库启用查询日志


8

我在mysql 5.6服务器中有许多数据库架构,现在这里的问题是我只想捕获对一个架构的查询。

我无法为整个服务器启用查询日志,因为我的架构之一负载很高,它将影响服务器。

无论采用哪种方式,任何工具,我都只能通过单个模式记录查询。

我发现了基准测试图,该图显示了启用查询日志后每秒对事务的影响。

在此处输入图片说明 在此处输入图片说明


您可以改用慢查询日志吗?然后使用pt-query-digest解析该日志?如果不是,您可以尝试通过pt-query-digest解析的tcpdump输出
jerichorivera,2016年

Answers:


1

有趣的问题和+1。我对此很感兴趣,因为我可以看到几个实现这种功能的用例。

不幸的是,对于无法打开常规日志记录的情况,只有一种解决方法,但还不够。

那就是使用SQL_LOG_OFF变量来禁用给定连接的日志记录。理想的解决方案是像在Oracle中一样具有一个“ SQL_LOG_ON”变量(等效)-也许您可以尝试关闭除感兴趣的连接之外的所有连接的注销记录?

此外,遗憾的是,这需要SUPER特权。同样,在您的情况下,这可能无法实现(甚至可能无法实现)。

根据问题的严重性,给定时间的工作时间和服务器负载,您也许可以找到Percona的pt-query-digest的用途,它可以帮助进行日志分析。小小的安慰,但像往常一样PostgreSQL是领先的MySQL(街道12)。

如果您想提出功能请求,如果您将链接发回到此处,我们很乐意跟进我。


1

如果您太过紧张,以至于无法将常规日志打开到FILE,那么您的问题就更糟了;他们需要修复。

我怀疑,在没有任何实际知识的情况下,该慢日志会产生类似的影响,尤其是对于long_query_time = 0

5.7具有“查询重写”功能。那里可能会使用一些技巧。(但是,还是有一些开销,应该对此进行基准测试。)

您想多久才能查询?您是否只是在寻找一项顽皮行动的根源?还是您正在尝试收集查询以为该表建立一个实际的基准?或者是其他东西?

是否打开了复制?您对阅读感兴趣吗?还是写?或两者?

并发活动的线程数是多少?您显示的基准表明,对于1,日志的开销较低。是MyISAM或CSV上的表锁杀死了高并发性的处理。

您的第二张图指出,实际上应该将客户端限制为大约5-8个并发连接-否则吞吐量实际上会下降!什么是max_connectionsMax_used_connections该图形?


嗨,我想捕获查询约2天,这些图与我的基准测试无关...我只是出于知识目的粘贴它们。我想要查询的应用程序是低资源消耗者。Tcpdump将不提供计时统计信息。
Suyash Jain
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.