LOCK - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

LOCK

限制對資料庫資料表的存取。此命令只有在交易區塊內執行時才有意義。

LOCK 命令會以 "ACCESS EXCLUSIVE" 模式取得資料表層級鎖定,必要時會等待任何衝突鎖定解除。若以此方式明確鎖定資料表,則從其他交易或工作階段嘗試時,會造成資料表的讀取和寫入等待。若某位使用者建立明確的資料表鎖定,則會暫時阻止其他使用者從該資料表選取資料或將資料載入其中。鎖定會在包含 LOCK 命令的交易完成時解除。

參考資料表的命令 (例如寫入操作) 會以隱含方式取得限制較少的資料表鎖定。例如,若使用者嘗試從資料表讀取資料時,有另一位使用者正在更新資料表,則讀取的資料會是已遞交資料的快照 (在某些情況下,若查詢違反可序列化隔離規則,則會停止)。請參閱管理並行寫入操作

某些 DDL 操作 (例如 DROP TABLE 和 TRUNCATE) 會建立獨佔鎖定。這些操作會阻止資料讀取。

若發生鎖定衝突,Amazon Redshift 會顯示錯誤訊息,提醒進行發生衝突之交易的使用者。收到鎖定衝突的交易會停止。每次發生鎖定衝突時,Amazon Redshift 都會在 STL_TR_CONFLICT 資料表中寫入一項記錄。

語法

LOCK [ TABLE ] table_name [, ...]

參數

TABLE

選用的關鍵字。

table_name

要鎖定的資料表名稱。您可以使用逗號分隔的資料表名稱清單鎖定多個資料表。不過您無法鎖定檢視。

範例

begin; lock event, sales; ...