夜間のCOPYが長時間待機し、同じテーブルに対する別セッションの更新が終わっていない。
原因を特定して安全に処理を再開したい。実行中のトランザクションとロックの状態を確認する必要がある。
最初に行う調査として最も適切なものはどれか。
STV_LOCKSは現在のテーブル更新ロックを示し、SVV_TRANSACTIONSは開いたトランザクションと競合の調査に役立つ。原因を確認してからブロッカーを安全に終了し、短いトランザクションへ改善する。
詳細解説
Redshiftのシステムビューから対象テーブル、ロック所有プロセス、開いたトランザクションを特定し、影響を確認できる。
CloudTrailはAPI操作を記録するが、現在のRedshiftトランザクションとテーブルロックの詳細な状態を示さない。
原因の証跡を失い、別の処理まで中断する。まず状態を観測して影響範囲を限定する必要がある。
原因の証跡を失い、別の処理まで中断する。まず状態を観測して影響範囲を限定する必要がある。
S3のライフサイクルはオブジェクトの保持や階層移行を管理するもので、Redshift内部のロック競合を解消しない。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
Amazon RedshiftのSTV_LOCKS、SVV_TRANSACTIONS、STL_TR_CONFLICTの公式説明を確認する。
参考にした公式資料
確認できる内容
ストレージライフサイクルやAPI監査と、データベース内部のロック競合の調査方法を区別できる。
理解のポイント
- STV_LOCKS
- SVV_TRANSACTIONS
- ロック所有者
- 短いトランザクション
確認時の注意
- 確認環境: AWS公式DEA-C01試験ガイドと各サービスの公式ドキュメントの確認
- AWS公式DEA-C01の該当Skillと各サービスの現行ドキュメントを確認する。
基礎のおさらい
テーブルロック
同じテーブルを同時更新する処理の競合を防ぐためにデータベースが保持するロック。
開いたトランザクション
コミットまたはロールバックされず、ロックやリソースを保持し続けている処理単位。
競合調査
待機側と保持側、発生時刻、影響範囲を観測してから復旧操作を選ぶ手順。