我使用mysql 14.12要害5.0.86,对于使用readline5.1的未知-linux-gnu (x86_64),我在慢速查询日志中看到下面的查询:
# Time: 110907 7:00:09
# User@Host: XXX[XXX] @ [10.1.10.1]
# Query_time: 3 Lock_time: 0 Rows_sent: 1 Rows_examined: 347519
SET timestamp=1315378809;
# administrator command: Quit;
# User@Host: XXX[XXX] @ [10.1.10.1]
# Query_time: 3 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
use XXX;
SET timestamp=1315378809;
# administrator command: Quit;
# User@Host: XXX[XXX] @ [10.1.10.1]
# Query_time: 3 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
use XXX;
SET timestamp=1315378809;
# administrator command: Quit;它在主人身上,附在一个奴隶身上。
为什么在慢速查询日志中设置时间戳?任何人都可以帮我。
发布于 2011-09-19 09:19:39
为什么在慢速查询日志中设置时间戳?
因为它用于检查如果查询应以慢速记录。
人们可能认为可以使用MySQL慢速查询日志记录所有慢速查询,以捕获有问题的查询或用于审计目的。实际上,并不是所有的查询都会被记录下来。我已经提到mysql从查询不会被记录到慢速查询日志中,而且似乎我只是将其与复制连接是错误的。实际上,这不是线程是复制线程导致查询从慢速查询日志中被省略的事实,而是事实线程使用SET时间戳功能。如果在正常连接范围内这样做,结果将是相同的。为什么会发生这种事?我想发生这种情况是因为代码的结构方式。在查询开始时,将当前时间戳存储到特殊值,用于所有NOW()调用内部时间戳分配等查询执行。在某些时候,有人认为能够回到未来或回到过去并设置时间戳是个好主意,实现了这个时间戳,而不是修补一堆函数,而只是将不同的时间戳写到这个变量上。当查询执行完成时,通常使用另一个time()来获取当前时间,并使用开始时间和结束时间之间的时间差来检查是否应该将查询记录为慢速查询。如果启动时间可以是将来的或过去的,那么这显然是行不通的,因此对于此类查询,必须禁用缓慢的查询日志记录。这是什么意思?简单地说,您不能真正信任标准的慢速查询日志--其中可能省略了一些查询。另外,如果有人想对您隐藏复杂的查询,可以在运行查询之前使用SET时间戳语句轻松完成。
https://serverfault.com/questions/312886
复制相似问题