MySQL SLEEP()コマンドを使用する正しい方法

Habdul Hazeez 2023年1月30日
  1. MySQL で SLEEP() コマンドを使用する
  2. MySQL で DO SLEEP() コマンドを使用する
  3. MySQL SLEEPDO SLEEP の違い
  4. クエリステートメントでの MySQL 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 SLEEPDO SLEEP の違い

SLEEP()DO SLEEP() の違いは、SLEEP() は結果を返しますが、DO SLEEP() は返しません。

クエリステートメントでの MySQL SLEEP() の動作

クエリステートメントで使用する場合、SLEEP() の期間は返されるレコードによって異なります。テーブルにレコードが含まれていない場合、MySQL はスリープしません。

ただし、テーブルにレコードがある場合、スリープ時間は n *テーブルレコードです。ここで、n はスリープ時間です。

これを証明するには、次のようにします。

  1. MySQL でデータベースを作成し、このデータベースに新しいテーブルを作成します。
  2. いくつかのレコードをテーブルに挿入します。
  3. 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
Habdul Hazeez avatar Habdul Hazeez avatar

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