mysql sleep详解_关于MySQL的SLEEP(N)函数
都知道通過在MySQL中執(zhí)行select sleep(N)可以讓此語句運行N秒鐘:
mysql>?select?sleep(1);
+----------+
|?sleep(1)?|
+----------+
|????????0?|
+----------+
1?row?in?set?(1.00?sec)
返回給客戶端的執(zhí)行時間顯示出等待了1秒鐘
借助于sleep(N)這個函數(shù)我們可以在MySQL Server的PROCESSLIST中捕獲到執(zhí)行迅速不易被查看到的語句以確定我們的程序是否確實在Server端發(fā)起了該語句。比如我們在調(diào)試時想確定一下程序是否確確實實向Server發(fā)起了執(zhí)行SQL語句的請求,那么我們可以通過執(zhí)行show processlist或者由information_schema.processlist表來查看語句是否出現(xiàn)。但往往語句執(zhí)行速度可能非常快,這樣的話就很難通過上述辦法確定語句是否真正被執(zhí)行了。例如下面語句的執(zhí)行時間為0.00秒,線程信息一閃而過,根本無從察覺。
mysql>?select?name?from?animals?where?name='tiger';
+-------+
|?name??|
+-------+
|?tiger?|
+-------+
1?row?in?set?(0.00?sec)
在這種情況下,可以通過在語句中添加一個sleep(N)函數(shù),強制讓語句停留N秒鐘,來查看后臺線程,例如:
mysql>?select?sleep(1),name?from?animals?where?name='tiger';
+----------+-------+
|?sleep(1)?|?name??|
+----------+-------+
|????????0?|?tiger?|
+----------+-------+
1?row?in?set?(1.00?sec)
同樣的條件該語句返回的執(zhí)行時間為1.0秒。
但是使用這個辦法是有前提條件的,也只指定條件的記錄存在時才會停止指定的秒數(shù),例如查詢條件為name='pig',結(jié)果表明記錄不存在,執(zhí)行時間為0
mysql>?select?name?from?animals?where?name='pig';
Empty?set?(0.00?sec)
在這樣一種條件下,即使添加了sleep(N)這個函數(shù),語句的執(zhí)行還是會一閃而過,例如:
mysql>?select?sleep(1),name?from?animals?where?name='pig';
Empty?set?(0.00?sec)
另外需要注意的是,添加sleep(N)這個函數(shù)后,語句的執(zhí)行具體會停留多長時間取決于滿足條件的記錄數(shù),MySQL會對每條滿足條件的記錄停留N秒鐘。
例如,name like '%ger'的記錄有三條
mysql>?select?name?from?animals?where?name?like?'%ger';
+-------+
|?name??|
+-------+
|?ger???|
|?iger??|
|?tiger?|
+-------+
3?rows?in?set?(0.00?sec)
那么針對該語句添加了sleep(1)這個函數(shù)后語句總的執(zhí)行時間為3.01秒,可得出,MySQL對每條滿足條件的記錄停留了1秒中。
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)
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的mysql sleep详解_关于MySQL的SLEEP(N)函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythons_pythons是什么
- 下一篇: 判断均匀平面波的极化形式_化学选修3丨分