淺析MySQL的SLEEP(N)函數作用及應用情境

來源:互聯網
上載者:User

都知道通過在MySQL中執行select sleep(N)可以讓此語句運行N秒鐘:

mysql> select sleep(1);
+----------+
| sleep(1) |
+----------+
|        0 |
+----------+
1 row in set (1.00 sec)

返回給用戶端的執行時間顯示出等待了1秒鐘

藉助於sleep(N)這個函數我們可以在MySQL Server的PROCESSLIST中捕獲到執行迅速不易被查看到的語句以確定我們的程式是否確實在Server端發起了該語句。比如我們在調試時想確定一下程式是否確確實實向Server發起了執行SQL語句的請求,那麼我們可以通過執行show processlist或者由information_schema.processlist表來查看語句是否出現。但往往語句執行速度可能非常快,這樣的話就很難通過上述辦法確定語句是否真正被執行了。例如下面語句的執行時間為0.00秒,線程資訊一閃而過,根本無從察覺。

mysql> select name from animals where name='tiger';
+-------+
| name  |
+-------+
| tiger |
+-------+
1 row in set (0.00 sec)

在這種情況下,可以通過在語句中添加一個sleep(N)函數,強制讓語句停留N秒鐘,來查看後台線程,例如:

mysql> select sleep(1),name from animals where name='tiger';
+----------+-------+
| sleep(1) | name  |
+----------+-------+
|        0 | tiger |
+----------+-------+
1 row in set (1.00 sec)

同樣的條件該語句返回的執行時間為1.0秒。

但是使用這個辦法是有前提條件的,也只指定條件的記錄存在時才會停止指定的秒數,例如查詢條件為name='pig',結果表明記錄不存在,執行時間為0

mysql> select name from animals where name='pig';
Empty set (0.00 sec)

在這樣一種條件下,即使添加了sleep(N)這個函數,語句的執行還是會一閃而過,例如:

mysql> select sleep(1),name from animals where name='pig';
Empty set (0.00 sec)

另外需要注意的是,添加sleep(N)這個函數後,語句的執行具體會停留多長時間取決於滿足條件的記錄數,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)這個函數後語句總的執行時間為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)

 

總結:這個函數我目前主要是用在調試sql語句上,在應用項目止暫時還未用過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.