一 。什麼時候可以使用WITH(NOLOCK)? 什麼時候不能使用WITH(NOLOCK),這個要視你係統業務情況,綜合考慮性能情況與業務要求來決定是否使用WITH(NOLOCK), 例如涉及到金融或會計成本之類的系統,出現髒讀那是要產生嚴重問題的。關鍵業務系統也要慎重考慮。大體來說一般有下面一些場景可以使用WITH(NOLOCK)
1: 基礎數據表,這些表的數據很少變更。
2:歷史數據表,這些表的數據很少變更。
3:業務允許髒讀情況出現涉及的表。
4:數據量超大的表,出於性能考慮,而允許髒讀。
當發現系統中存在大量讀寫阻塞的時候,就是我們開啓行版本的時候了。要點:寫寫阻塞的場景行版本技術解決不了
開啓方式:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
開啓語句級行版本注意點:
如果將 READ_COMMITTED_SNAPSHOT 設置爲 ON,則數據庫引擎會使用行版本控制爲每個語句提供一個在事務上一致的數據快照,缺點是用戶讀到的雖然不是一個髒數據,但是可能是個正在被修改馬上就要過期的數據值。如果根據這個過期的值做數據修改,會產生邏輯錯誤。