sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLでのpg_sleep_for()のしくみ

    PostgreSQLでは、pg_sleep_for()を使用できます 指定された間隔で実行を遅らせる関数。

    指定された間隔が経過するまで、現在のセッションのプロセスをスリープ状態にします。

    睡眠の遅れは少なくとも 指定されている限り。ただし、サーバーの負荷や、プラットフォームのスリープ間隔の効果的な解決などの要因によっては、さらに長くなる可能性があります。

    構文

    構文は次のようになります:

    pg_sleep_for(interval)

    interval プロセスが続行する前の間隔を指定する間隔です。

    使用法を示す例を次に示します。

    \x
    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 15:14:26.53039+10
    pg_sleep_for    |
    clock_timestamp | 2020-06-28 15:16:36.595837+10
    pg_sleep_for    |
    clock_timestamp | 2020-06-28 15:17:41.671152+10

    clock_timestamp()を使用しました この例では、ステートメントの実行中に変更されるためです。これにより、ステートメントの進行に合わせて更新された値を確認できます。

    この例では、結果を見やすくするために、拡張表示(「垂直出力」と呼ばれることもあります)を使用しました。

    \xを使用して、psqlの展開表示を切り替えることができます 。

    負の値

    負の値を指定すると、ステートメントがすぐに実行されます。

    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-29 09:01:09.468232+10
    pg_sleep_for    |
    clock_timestamp | 2020-06-29 09:01:09.468291+10
    pg_sleep_for    |
    clock_timestamp | 2020-06-29 09:01:09.468297+10

    1. キーで集計するときに、従属列を `GROUP BY`から除外できないのはなぜですか?

    2. ExecuteNonQuery:接続プロパティが初期化されていません。

    3. 最適化のしきい値–データのグループ化と集約、パート3

    4. Postgresqlを修正するためにHomebrewのreadlineバージョン6.xに戻りますか?