Sql-Server
ALLOW_SNAPSHOT_ISOLATION 持續時間
我想
ALLOW_SNAPSHOT_ISOLATION
在一個擁有約 4 億條記錄的生產數據庫上啟用。我知道每條記錄需要添加 14 個字節。如果我設置
ALLOW_SNAPSHOT_ISOLATION
它會阻塞一段時間與記錄數成正比,還是數據會非同步更新?首先,我想確保啟用此設置後,我的數據庫不會在數小時內停止服務。
…它會阻塞一段時間與記錄數成正比,還是會非同步更新數據。
兩者都不。
額外的 14 個字節用於儲存兩個元素:
- 修改行的事務序列號。
- 如果存在,則指向版本儲存(在 tempdb 中)中行的先前版本的指針。
這些僅在修改行時添加到行,在您啟用快照隔離**之後。**在您打開快照時,不會為每行添加 14 個字節而產生阻塞或額外負載。
您在啟用時可能遇到的唯一阻塞操作是由於需要等待所有目前事務送出,這一點值得牢記。理想情況下,在安靜的時期或最好是在您關閉所有活動的停機時間進行更改。
如果停機時間不是一種選擇,請避免任何可能發生長時間執行事務的時期(例如 ETL)。如果您在幾秒鐘內沒有得到響應,您可以查詢
sys.dm_tran_active_snapshot_database_transactions
以確定發生了什麼問題。