Sql-Server

SQL Server 數據庫使用快照隔離是否會降低寫入速度?

  • December 10, 2015

我的系統中有很多死鎖。

我想使用快照隔離來修復它們,但我的 DBA 對此有所保留。

他擔心的一個問題是快照隔離會減慢寫入速度。這是因為它必須先寫入記憶體,然後再寫入 TempDb(行版本),然後才能返回給呼叫者。

“正常”寫入可以只寫入記憶體然後完成。

這是行版本控制的工作方式嗎?還是比這更複雜?它是否以某種方式並行執行這些操作?

或者快照隔離的寫入速度變慢了?

> > 是因為它必須先寫入記憶體,然後再寫入 TempDb(行版本),然後才能返回給呼叫者。 > > >

不,這是不正確的。它以某種方式暗示存在版本控制的寫入具有更高的延遲,因為每次寫入都必須觸及磁碟(對於 tempdb),這是不正確的。寫入 tempdb 也是寫入“記憶體”。唯一的“等待”發生在 COMMIT 時間,此時必須強化日誌。確實,通過版本控制 DB 日誌和 tempdb 日誌都必須加強,但這並不一定意味著更高的延遲(IO 應該在不同的儲存路徑上並行,tempdb 儲存在與您大量使用的 LDF 不同的驅動器上,正確的?)。要獲得完整的解釋,請閱讀它的工作原理:Bob Dorr 的 SQL Server I/O 展示文稿我真的希望您的 DBA 比您在這里傳達的更了解這一點。

正如我在您的另一篇文章中提到的:快照沒有插入成本,並且可以輕鬆降低更新和刪除的成本。行版本控制資源使用說明了權衡。此時,您可能應該使用實際工作負載進行測試,這是正確評估將體驗到的影響的唯一方法。

引用自:https://dba.stackexchange.com/questions/16014