PostgreSQLでは、pg_sleep()
を使用できます 指定された秒数の間実行を遅らせる関数。
指定された秒数が経過するまで、現在のセッションのプロセスをスリープ状態にします。 MySQLのsleep()
と同様に機能します 関数、およびTSQLのwaitfor
SQLServerのステートメント。
pg_sleep()
関数は倍精度を受け入れます 引数なので、分数秒の遅延を指定することもできます。
睡眠の遅れは少なくとも 指定されている限り。ただし、サーバーの負荷や、プラットフォームのスリープ間隔の効果的な解決などの要因によっては、さらに長くなる可能性があります。
構文
構文は非常に単純です:
pg_sleep(seconds)
seconds
倍精度です プロセスが続行するまでに経過する必要のある秒数/分数秒を指定する値。
例
使用法を示す例を次に示します。
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
結果(垂直出力を使用):
clock_timestamp | 2020-06-28 13:46:53.808072+10 pg_sleep | clock_timestamp | 2020-06-28 13:46:54.870423+10 pg_sleep | clock_timestamp | 2020-06-28 13:46:55.938278+10
clock_timestamp()
を使用しました この例では、ステートメントの実行中に変更されるためです。これにより、ステートメントの進行に合わせて更新された値を確認できます。
この例では、結果を見やすくするために、拡張表示(「垂直出力」と呼ばれることもあります)を使用しました。
\x
を使用して、psqlの展開表示を切り替えることができます 。
フラクショナル秒
前述のように、必要に応じて秒単位の遅延を指定できます。
SELECT
clock_timestamp(),
pg_sleep(.5),
clock_timestamp(),
pg_sleep(.5),
clock_timestamp();
結果(垂直出力を使用):
clock_timestamp | 2020-06-28 15:03:52.496211+10 pg_sleep | clock_timestamp | 2020-06-28 15:03:53.041063+10 pg_sleep | clock_timestamp | 2020-06-28 15:03:53.553291+10
負の値
負の値を指定すると、実行が遅れることはありません。
SELECT
clock_timestamp(),
pg_sleep(-1),
clock_timestamp(),
pg_sleep(-1),
clock_timestamp();
結果(垂直出力を使用):
clock_timestamp | 2020-06-29 09:03:19.056681+10 pg_sleep | clock_timestamp | 2020-06-29 09:03:19.056682+10 pg_sleep | clock_timestamp | 2020-06-29 09:03:19.056683+10