Sql-Server
頻繁的刪除和插入,對性能的影響
在我的應用程序中,我們的更新很少。大多數數據被刪除和插入。
我的問題是,這將如何影響性能?
我們使用的是 SQL Server 2012。
- 表統計資訊(這些會更快過時嗎?)
- 碎片化
請發表您的經驗。
提前致謝!!
使用
DELETE
+INSERT
模式而不是也涉及UPDATE
s 可能會有很大的問題。IMO,這是一種反模式。在 99.9% 的情況下,最好UPDATES
盡可能使用。通常
DELETE
+INSERT
模式是這樣實現的,即在目標中盲目地刪除行的子集,這會產生大量不必要的寫入活動,因為即使沒有任何變化,數據也總是會被重寫。這不僅會增加 I/O 子系統的負載,而且還會殺死數據訪問並發,除非使用快照隔離(這將成倍增加浪費的磁碟寫入工作量)。如果使用預設隔離級別並同時讀取數據,這種模式很容易產生大量死鎖。
話雖如此,需要
UPDATE
仔細實現 s ,因為它們仍然有可能重寫未更改的行。值得慶幸的是,這可以通過一些額外的程式碼輕鬆解決。UPDATE
總而言之,儘管稍微增加了程式碼複雜性,但使用 s 是值得的。根據您正在做的事情,使用表值參數之類的東西將整個所需狀態作為一個整體發送到數據庫並在那里而不是在客戶端進行排序可能會更容易和更可靠。