MySQL SLEEP()コマンドを使用する正しい方法
-
MySQL で
SLEEP()コマンドを使用する -
MySQL で
DO SLEEP()コマンドを使用する -
MySQL
SLEEPとDO SLEEPの違い -
クエリステートメントでの MySQL
SLEEP()の動作
この記事では、MySQL の sleep コマンドの使用方法を示す 2つの方法を説明します。1つ目は SLEEP() の使用で、2つ目は DO SLEEP() です。
また、クエリステートメントで SLEEP() の動作についても学習します。
MySQL で SLEEP() コマンドを使用する
以下は、MySQL で SLEEP() を使用する方法です。
SELECT SLEEP(10);
上記の SQL から、MySQL の SLEEP() 関数はパラメータとして数値 10 を取ります。この数値は、SLEEP() がサーバースレッドで占める秒数を決定します。
SELECT SLEEP(10); を使用すると、MySQL は 10 秒間他の作業を実行できません。これは、スレッドスタックを使い果たすためです。
以下は、前の sleep コマンドの出力です。
+-----------+
| SLEEP(10) |
+-----------+
| 0 |
+-----------+
1 row in set (10.00 sec)
MySQL で DO SLEEP() コマンドを使用する
DO SLEEP() は SLEEP() と同じように機能しますが、結果は返されません。以下はそれがどのように機能するかです。
DO SLEEP(10);
SLEEP() と同様に、前の SQL を実行すると、続行する前に 10 秒待機します。ただし、以下に示す空の結果が返されます。
Query OK, 0 rows affected (10.01 sec)
MySQL SLEEP と DO SLEEP の違い
SLEEP() と DO SLEEP() の違いは、SLEEP() は結果を返しますが、DO SLEEP() は返しません。
クエリステートメントでの MySQL SLEEP() の動作
クエリステートメントで使用する場合、SLEEP() の期間は返されるレコードによって異なります。テーブルにレコードが含まれていない場合、MySQL はスリープしません。
ただし、テーブルにレコードがある場合、スリープ時間は n *テーブルレコードです。ここで、n はスリープ時間です。
これを証明するには、次のようにします。
- MySQL でデータベースを作成し、このデータベースに新しいテーブルを作成します。
- いくつかのレコードをテーブルに挿入します。
SELECT *, SLEEP (n) from <table_name>を使用します。ここで、nはスリープ時間、table_nameはテーブル名です。
たとえば、次のテーブル users には 3つのレコードがあります。SQL コードを実行すると、MySQL は 30 秒間待機します。
これは、number_of_records * sleep_time であり、3 * 10 です。
SELECT *, SLEEP(10) FROM users;
出力:
+---------+----------+-----------+
| user_id | username | SLEEP(10) |
+---------+----------+-----------+
| 1 | Delft | 0 |
| 2 | Stack | 0 |
| 3 | Website | 0 |
+---------+----------+-----------+
3 rows in set (30.02 sec)
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn