STV_LOCKS
データベース内のテーブルに対する現時点での更新をすべて表示するには、STV_LOCKS テーブルを使用します。
Amazon Redshift は、複数のユーザーが 1 つのテーブルを同時に更新することを防ぐため、テーブルをロックします。STV_LOCKS テーブルに現在のテーブル更新がすべて表示されているときに、STL_TR_CONFLICT テーブルをクエリすると、ロックの衝突のログを見ることができます。SVV_TRANSACTIONS 表示を使用して、開いているトランザクションとロックの競合問題を識別します。
STV_LOCKS はスーパーユーザーのみに表示されます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
table_id | bigint | ロックを取得するテーブルのテーブル ID |
last_commit | timestamp | テーブル内での最後のコミットのタイムスタンプ。 |
last_update | timestamp | 最後のテーブル更新のタイムスタンプ。 |
lock_owner | bigint | ロックに関連付けられたトランザクション ID。 |
lock_owner_pid | bigint | ロックに関連付けられたプロセス ID。 |
lock_owner_start_ts | timestamp | トランザクション開始時刻のタイムスタンプ。 |
lock_owner_end_ts | timestamp | トランザクション終了時刻のタイムスタンプ。 |
lock_status | character (22) | ロックを待っているかまたは保持している処理の状態。 |
サンプルクエリ
現在のトランザクションで発生しているすべてのロックを表示するには、以下のコマンドを入力します。
select table_id, last_update, lock_owner, lock_owner_pid from stv_locks;
このクエリは、以下のような出力を返します。出力には、現在有効となっている 3 つのロックが表示されています。
table_id | last_update | lock_owner | lock_owner_pid ----------+----------------------------+------------+---------------- 100004 | 2008-12-23 10:08:48.882319 | 1043 | 5656 100003 | 2008-12-23 10:08:48.779543 | 1043 | 5656 100140 | 2008-12-23 10:08:48.021576 | 1043 | 5656 (3 rows)