我有表 A 和一個存盤程序,它定期從該表中洗掉所有資料。存盤程序中的所有查詢都打包到 1 個事務中。但有時存盤程序的執行需要長達 5 分鐘。難道是執行存盤程序會阻止同一個表A上的插入?
在上一次呼叫完成之前,永遠不會再次呼叫存盤程序。
READ COMMITTED 和 READ COMMITTED SNAPSHOT ISOLATION 會有所不同嗎?
uj5u.com熱心網友回復:
是的,像這樣的陳述句DELETE FROM YourTable;會取出一個表鎖來阻止對表的所有其他更改,直到它完成為止。我認為更改隔離級別不會有太大幫助,除非您將快照放在整個資料庫上(即快照隔離)。
通常,您想針對此類情況嘗試不同的方法。任何一個:
嘗試將 DELETE 分解為更小的“塊”,以便每個塊花費更少的時間并且不會阻塞整個表。或者,如果這不合適,那么...
創建 的空副本
YourTable,然后將 的名稱更改YourTable為類似Yourtable_deleting的名稱并將新表的名稱更改為YourTable。 然后洗掉(或只是洗掉)Yourtable_deleting。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/425859.html
