如何以及何时在MySQL中正确使用SLEEP()?

Mic*_*l M 52 mysql sleep

关于今天的另一个问题,我想知道如何正确使用MySQLSLEEP(duration).

从我收集的阅读MySQL Dev论坛和MySQL Docs中非常模糊的描述我不能这样使用它:

SELECT ...
SLEEP(1); /* wait for a second before another SELECT */
SELECT ...
Run Code Online (Sandbox Code Playgroud)

那么它有什么好处呢?

Kon*_*rak 74

SELECT ...
SELECT SLEEP(5);
SELECT ...
Run Code Online (Sandbox Code Playgroud)

但是你用它做什么?您是在试图规避/重新发明互斥或交易吗?

  • 我使用此命令确认慢速查询日志记录正常工作. (39认同)
  • 对于在应用程序层测试异步查询也应该有用. (4认同)
  • @MicalM 没有理由重新分配“已接受”的答案。这个答案也是正确的,并且在我插话之前已经持续了 5 年。我只是添加了另一个答案,因为我认为它为提出的问题增加了价值。 (2认同)

Unc*_*roh 69

如果你不想这样做SELECT SLEEP(1);,你也DO SLEEP(1); 可以在那些你不想看到输出的程序中使用它.

例如

SELECT ...
DO SLEEP(5);
SELECT ...
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.`sleep`的输出总是0,为什么有人打扰选择`sleep`的输出..... (5认同)
  • @Pacerier:这个答案出现在5年后,但是示例使用了DO,这确实比SELECT更优雅。最大的线索是表明 SLEEP 本身不是一个命令,而是一个函数,两个答案都显示了这一点,但请随意将此答案标记为已接受。 (2认同)
  • @Pacerier选择睡眠输出的一个原因是将其置于查询中,以测试并发查询中的锁定和事务隔离级别. (2认同)
  • @Pacerier 错了。它可以输出“1”。https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_sleep (2认同)