Amazon Redshift のクエリ計画時間が、実際の実行時間よりもかなり長くなっています。このような問題が発生するのはなぜですか?
簡単な説明
実稼働ロードで排他的ロックを使用するクエリがある場合、ロック待機時間が長くなる可能性があります。これにより、Amazon Redshift でのクエリ計画時間が実際の実行時間よりかなり長くなります。Workload Execution Breakdown メトリックを調べて、クエリ計画時間が急増していないかどうかを確認します。この時間の増加は、ロックを待機するトランザクションに原因があると考えられます。
解決方法
ロック待機中のトランザクションを検出するには、以下の手順を実行します。
1. 最初のロックの新しいセッションを開く。
begin; lock table1;
2. 同時に実行される 2 番目のセッションを開く。
select * from table1 limit 1000;
この 2 番目のセッションのクエリにより AccessSharedLock リクエストが送信されます。ただし、最初のセッションがすでに要求しているため、このクエリは AccessExclusiveLockを待機する必要があります。次に、ExclusiveLockにより table1 のすべての操作がブロックされます。
3. Workload Execution Breakdown メトリクスを確認する。クエリ計画時間の急増は、ロックを待機しているトランザクションがあることを示しています。
4. (オプション) ロックを待機しているトランザクションがある場合、セッションを手動で終了してロックを解除する。
select pg_terminate_backend(PID);
ロック解除の詳細については、「Amazon Redshift でロックを検出し、解除する方法を教えてください。」をご参照してください。
関連情報
Analyzing Workload Performance
Query Planning and Execution Workflow