TERADATA的鎖表問題一直很頭疼,經常早上過來發現任務都沒跑,檢查發現中間某張表在凌晨生成的時候被某人的查詢SQL給鎖了,導致後續任務都沒有跑,於是查找TD那一堆英文文檔,發現一個變相的解決辦法,通過建立視圖:
create view etl.Etl_Monitor_View
as locking table etl.Etl_Monitor for access
select * from etl.Etl_Monitor
當然有利也有弊,以前正在insert表的時候如果有任務查詢這張表,會鎖表,通過監控來發現問題,使用這個視圖以後就不再鎖表了,而是select出來0條記錄,導致結果異常。
以下SQL這樣會鎖表:
-------------------------------------------------------------------------------
>Inset into TABLE_1 select * from TABLE_2
>Select * form TABLE_1
-------------------------------------------------------------------------------
以下SQL這樣不會鎖表:
---------------------------------------------------------------------------------
>locking table TABLE_1 for access
Inset into TABLE_1
>Select * form TABLE_1
---------------------------------------------------------------------------------