关于MySQL的SLEEP(N)函数
都知道通過在MySQL中執(zhí)行select sleep(N)可以讓此語(yǔ)句運(yùn)行N秒鐘:
?| 1 2 3 4 5 6 7 | mysql> select sleep(1); +----------+ | sleep(1) | +----------+ |??????? 0 | +----------+ 1 row in set (1.00 sec) |
返回給客戶端的執(zhí)行時(shí)間顯示出等待了1秒鐘
借助于sleep(N)這個(gè)函數(shù)我們可以在MySQL Server的PROCESSLIST中捕獲到執(zhí)行迅速不易被查看到的語(yǔ)句以確定我們的程序是否確實(shí)在Server端發(fā)起了該語(yǔ)句。比如我們?cè)谡{(diào)試時(shí)想確 定一下程序是否確確實(shí)實(shí)向Server發(fā)起了執(zhí)行SQL語(yǔ)句的請(qǐng)求,那么我們可以通過執(zhí)行show processlist或者由information_schema.processlist表來查看語(yǔ)句是否出現(xiàn)。但往往語(yǔ)句執(zhí)行速度可能非常快,這樣 的話就很難通過上述辦法確定語(yǔ)句是否真正被執(zhí)行了。例如下面語(yǔ)句的執(zhí)行時(shí)間為0.00秒,線程信息一閃而過,根本無從察覺。
| 1 2 3 4 5 6 7 | mysql> select name from animals where name='tiger'; +-------+ | name? | +-------+ | tiger | +-------+ 1 row in set (0.00 sec) |
在這種情況下,可以通過在語(yǔ)句中添加一個(gè)sleep(N)函數(shù),強(qiáng)制讓語(yǔ)句停留N秒鐘,來查看后臺(tái)線程,例如:
?| 1 2 3 4 5 6 7 | mysql> select sleep(1),name from animals where name='tiger'; +----------+-------+ | sleep(1) | name? | +----------+-------+ |??????? 0 | tiger | +----------+-------+ 1 row in set (1.00 sec) |
同樣的條件該語(yǔ)句返回的執(zhí)行時(shí)間為1.0秒。
但是使用這個(gè)辦法是有前提條件的,也只指定條件的記錄存在時(shí)才會(huì)停止指定的秒數(shù),例如查詢條件為name='pig',結(jié)果表明記錄不存在,執(zhí)行時(shí)間為0
| 1 2 | mysql> select name from animals where name='pig'; Empty set (0.00 sec) |
在這樣一種條件下,即使添加了sleep(N)這個(gè)函數(shù),語(yǔ)句的執(zhí)行還是會(huì)一閃而過,例如:
?| 1 2 | mysql> select sleep(1),name from animals where name='pig'; Empty set (0.00 sec) |
另外需要注意的是,添加sleep(N)這個(gè)函數(shù)后,語(yǔ)句的執(zhí)行具體會(huì)停留多長(zhǎng)時(shí)間取決于滿足條件的記錄數(shù),MySQL會(huì)對(duì)每條滿足條件的記錄停留N秒鐘。
例如,name like '%ger'的記錄有三條
| 1 2 3 4 5 6 7 8 9 | mysql> select name from animals where name like '%ger'; +-------+ | name? | +-------+ | ger?? | | iger? | | tiger | +-------+ 3 rows in set (0.00 sec) |
那么針對(duì)該語(yǔ)句添加了sleep(1)這個(gè)函數(shù)后語(yǔ)句總的執(zhí)行時(shí)間為3.01秒,可得出,MySQL對(duì)每條滿足條件的記錄停留了1秒中。
??
| 1 2 3 4 5 6 7 8 9 | mysql> select sleep(1),name from animals where name like '%ger'; +----------+-------+ | sleep(1) | name? | +----------+-------+ |??????? 0 | ger?? | |??????? 0 | iger? | |??????? 0 | tiger | +----------+-------+ 3 rows in set (3.01 sec) |
?
原文:http://www.2cto.com/database/201412/365580.html
總結(jié)
以上是生活随笔為你收集整理的关于MySQL的SLEEP(N)函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL连接数超过限制的解决方法
- 下一篇: linux cmake编译源码,linu