ApsaraDB RDS for PostgreSQLは、SQL文の同時実行を制御するpg_concurrency_controlプラグインを提供します。
前提条件
RDSインスタンスはPostgreSQL 10または11を実行します。パラメーター
パラメーター | デフォルト値 | 説明 |
pg_concurrency_control.query_並行性 | 0 | SELECT SQL文の同時ジョブの最大数を設定します。 有効値: 0~1024。 デフォルト値:0 デフォルト値は、SELECT SQL文に対して同時実行制御が無効になっていることを示します。 |
pg_concurrency_control.bigquery_並行性 | 0 | スロークエリの同時ジョブの最大数を設定します。 有効値: 0~1024。 デフォルト値:0 デフォルト値は、低速クエリに対して同時実行制御が無効になっていることを示します。
|
pg_concurrency_control.transaction_並行性 | 0 | トランザクションブロックの同時ジョブの最大数を設定します。 有効値: 0~1024。 デフォルト値:0 デフォルト値は、トランザクションブロックの同時実行制御が無効になっていることを示します。 |
pg_concurrency_control.autocomit_concurrency | 0 | DML SQL文の同時ジョブの最大数を設定します。 有効値: 0~1024。 デフォルト値:0 デフォルト値は、DML SQL文の同時実行制御が無効になっていることを示します。 |
pg_concurrency_control.control_タイムアウト | 1s | SELECT SQL文、DML SQL文、およびトランザクションブロックを待機する最大時間を設定します。 最小値は30 msで、最大値は3sです。 |
pg_concurrency_control.bigsql_control_タイムアウト | 1s | 低速クエリを待機する最大時間を設定します。 最小値は30 msで、最大値は3sです。 |
pg_concurrency_control.timeout_アクション | TCC_break | SELECT SQL文、DML SQL文、およびトランザクションブロックのタイムアウト時のアクションを設定します。 有効な値:
|
pg_concurrency_control.bigsql_timeout_アクション | TCC_wait | 低速クエリのタイムアウト時のアクションを設定します。 有効な値:
|
手順
- 次のコマンドを実行して、プラグインを作成します。
拡張子pg_concurrency_controlを作成します。
- 同時実行ジョブの数を0より大きい値に設定して、プラグインで同時実行制御を有効にします。
たとえば、pg_concurrency_control.query_concurrencyパラメーターを10に設定して、SELECT SQL文の同時実行制御を有効にします。 他のタイプのステートメントの同時実行制御を有効にするメソッドも同様です。
例:
カスタムSQL文の同時実行制御を有効にするには、次の操作を実行します。
- 次のコマンドを実行して、ステートメントキューの情報を表示します。
pg_concurrency_control_status() から * を選択します。
次のような情報が表示されます。
autocommit_count | bigquery_count | query_count | transaction_count ------------------ ---------------- + ----------- ------------------- 0 | 0 | 0 | 0 (1行)
- pg_concurrency_control.query_concurrencyパラメーターを0より大きい値 (例: 10) に設定します。
- スロークエリを実行します。
/* + bigsql */ select pg_sleep(10);
- 次のコマンドを実行して、ステートメントキューの情報を再度表示します。
pg_concurrency_control_status() から * を選択します。
次のような情報が表示されます。
autocommit_count | bigquery_count | query_count | transaction_count ------------------ ---------------- + ----------- ------------------- 0 | 1 | 0 | 0 (1行)
説明 低速クエリが完了すると、キュー情報は自動的にクリアされます。