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


72

关于我的其他问题,今天我想知道如何使用MySQL的SLEEP(duration)正确。

从我收集的阅读MySQL Dev论坛和MySQL Docs中非常模糊的描述的内容中,我不能以这种方式使用它:

SELECT ...
SLEEP(1); /* wait for a second before another SELECT */
SELECT ...

那么,那有什么好处呢?


6
基于阅读MySQL的文档,我就已经尝试过了自己的方式第一次,我似乎从来没有走开了有用的信息读取mysql的文档后,由于Konerak下面的非常简单的答案....
兰登

@ Landon,Iroh的答案是更好的答案。
Pacerier,2015年

Answers:


91
SELECT ...
SELECT SLEEP(5);
SELECT ...

但是,您将其用于什么?您是否要规避/重新设计互斥锁或事务?


46
我使用此命令来确认慢速查询日志记录是否正常工作。
jeffatrackaid 2014年

6
对于在应用程序层测试异步查询也应该很有用。
Programster

2
@MicalM没有理由重新分配“已接受”答案。这个答案也是正确的,在我提出建议之前已经有5年了。我刚刚添加了另一个答案,因为我认为它为提出的问题增加了价值。
Iroh叔叔

我使用此命令,以便直到脚本解压缩完成后才开始转储导入。我昨晚睡觉的时候踢了一段时间。
MatrixManAtYrService

86

如果您不想这样做SELECT SLEEP(1);,也可以DO SLEEP(1); 在不想看到输出的过程中用于那些情况。

例如

SELECT ...
DO SLEEP(5);
SELECT ...

7
这应该是公认的答案。的输出sleep始终为0,为什么有人会sleep为...选择输出....
Pacerier 2015年

1
@Pacerier:这个答案出现在5年后,但是该示例使用DO,确实比SELECT更优雅。大提示表明,SLEEP本身不是命令,而是一个函数,两个答案都可以显示出来,但是可以随意将此答案标记为已接受。
Konerak '16

2
@Pacerier选择睡眠输出的原因之一是将其放入查询中,以测试并发查询中的锁定和事务隔离级别。
巴里·凯利

另外,如果不想看到输出,则可以添加联接或伪嵌套查询,例如:从(select sleep(1))a中选择1;
马丁

@Pacerier错误。它可以输出1dev.mysql.com/doc/refman/8.0/en/...
Cleroth
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.