Sql-Server
使用數據庫快照進行報告的優勢
使用數據庫快照進行報告的性能優勢是什麼?
在我看來,它可能會降低性能,因為對於原始數據庫中的每次寫入,都必須對快照本身進行另一次寫入。
我可以看到,只要您想報告截至該點的數據,您就會使用快照,但這不屬於性能類別。
再說一遍,有性能優勢嗎?
使用位於生產 OLTP 伺服器上的數據庫快照很可能會使性能變差。主要原因有兩個:
- 額外的寫入成本。快照是寫時複製的,所以這顯然會影響性能。
- 快照將共享磁碟上舊數據庫的頁面,但它使用自己在緩衝池中的記憶體。如果你有一個大表,它最終會消耗 OLTP 數據庫和快照的記憶體,即使是未修改的頁面也是如此。因此,您最終可能會使用大量額外的記憶體,如果您的伺服器沒有可用 RAM 負載,這可能會導致更多的磁碟 I/O。
因此,如果您試圖僅在單個伺服器上減少對報告的干擾,您最好只查詢 OLTP 數據庫並使用 WITH (NOLOCK) 提示,然後在需要時使用資源管理器來控制事情。除此之外,研究某種橫向擴展系統(日誌傳送、鏡像等)