PostgreSQLには、サーバープロセスの実行を遅らせることができる3つの機能が含まれています。ステートメントの実行。
つまり、ステートメントを実行して、途中で一時停止させてから、陽気な方法で続行することができます。
3つの機能は次のとおりです。
-
pg_sleep()
-
pg_sleep_for()
-
pg_sleep_until()
これらはすべて非常に似ていますが、動作が少し異なります。
以下はそれぞれの例です。
例– pg_sleep()
pg_sleep()
関数は、指定された秒数が経過するまで、現在のセッションのプロセスをスリープ状態にします。
秒を引数として指定します。引数は倍精度の値です 、必要に応じて秒数を指定できます。
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
結果(垂直出力を使用):
clock_timestamp | 2020-06-28 16:18:25.645814+10 pg_sleep | clock_timestamp | 2020-06-28 16:18:26.706998+10 pg_sleep | clock_timestamp | 2020-06-28 16:18:27.768604+10
例– pg_sleep_for()
pg_sleep_for()
関数は、間隔として指定されたより長い睡眠時間のための便利な関数です。
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
結果(垂直出力を使用):
clock_timestamp | 2020-06-28 16:20:04.218295+10 pg_sleep_for | clock_timestamp | 2020-06-28 16:22:14.222907+10 pg_sleep_for | clock_timestamp | 2020-06-28 16:23:19.294483+10
例– pg_sleep_until()
pg_sleep_until()
機能は、特定の起床時間を希望する場合の便利な機能です。
SELECT
clock_timestamp(),
pg_sleep_until('today 16:25:15.1234'),
clock_timestamp();
結果(垂直出力を使用):
clock_timestamp | 2020-06-28 16:24:28.900319+10 pg_sleep_until | clock_timestamp | 2020-06-28 16:25:15.184042+10
遅延の精度
これらの機能を使用する場合、実際の遅延時間は、サーバーのアクティビティレベルによって指定された時間と異なる場合があります。ただし、スリープ遅延は少なくとも指定された長さになります。
特に、pg_sleep_until
指定された時間に正確にウェイクアップすることは保証されていませんが、それより前にウェイクアップすることはありません。