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