ablog

不器用で落着きのない技術者のメモ

MySQL でスリープする

MySQL で Orcale Database の dbms_lock.sleep(秒数) のように sleep させたい場合は、select sleep(秒数) でできる。

5.6.10-log awsuser: [mydb] 15:26> select sleep(5);
+----------+
| sleep(5) |
+----------+
|        0 |
+----------+
1 row in set (5.24 sec)

5.6.10-log awsuser: [mydb] 15:26> select sleep(10);
+-----------+
| sleep(10) |
+-----------+
|         0 |
+-----------+
1 row in set (10.09 sec)

プロシージャにして実行してみる。

5.6.10-log awsuser: [mydb] 02:54> delimiter //
5.6.10-log awsuser: [mydb] 02:54> create procedure sleep_test(IN par_transaction_delay DOUBLE)
    -> begin
    ->  select sleep(par_transaction_delay);
    -> end
    -> //
Query OK, 0 rows affected (0.02 sec)

5.6.10-log awsuser: [mydb] 02:54>
5.6.10-log awsuser: [mydb] 02:54>
5.6.10-log awsuser: [mydb] 02:54> delimiter ;
5.6.10-log awsuser: [mydb] 02:54> call sleep_test(10);
+------------------------------+
| sleep(par_transaction_delay) |
+------------------------------+
|                            0 |
+------------------------------+
1 row in set (10.01 sec)

Query OK, 0 rows affected (10.01 sec)