国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2005使用基于行版本控制的隔離級別初探(1)

2024-08-31 00:51:19
字體:
來源:轉載
供稿:網友

      最近回歸本行,開始數據庫的研究。雖然不是9R2,但是好歹SQLServer的傻瓜式配置也不是浪得虛名,也算混的勉強過關把。
不過仔細研究了下2005的行版本控制這塊做的確實不錯,下面把我研究的共享,歡迎批判。
 
行版本控制隔離:簡介
 
行版本控制的隔離是SQL Server 2005一個新的隔離框架。使用行版本控制的隔離可以在大量并發的情況下,顯著減少所得產生,并且與NoLock相比,它又可以顯著降低骯臟讀,幻影,丟失更新等現象的發生(READ_COMMITTED_SNAPSHOT)
       
        當在基于行版本控制的隔離下運行的事務讀取數據時,讀取操作不會獲取正被讀取的數據上的共享鎖(S 鎖),因此不會阻塞正在修改數據的事務。另外,鎖定資源的開銷隨著所獲取的鎖的數量的減少降至最低。使用行版本控制的已提交讀隔離和快照隔離可以提供副本數據的語句級或事務級讀取一致性。
 
 
行版本控制隔離:優勢
 
使用行版本控制的隔離級別具有以下優點:
·讀取操作檢索一致的數據庫快照。
·SELECT 語句在讀取操作過程中不鎖定數據(讀取器不阻塞編寫器,編寫器也不阻塞讀取器)。
·SELECT 語句可以在其他事務更新行時訪問最后提交的行值,而不阻塞應用程序。
·死鎖的數量減少。
·事務所需的鎖的數量減少,這減少了管理鎖所需的系統開銷。
·鎖升級的次數減少。
 
行版本控制隔離:原理
 
SQL Server 2005的行版本控制原理上很簡單,就是在庫表中每一行的記錄上都悄悄的增加了一個類時間戳列(行版本列)。
當使用行版本控制的隔離時,SQL Server 2005 Database Engine 向使用行版本控制操作數據的每個事務分配一個事務序列號 (XSN)。事務在執行 BEGIN TRANSACTION 語句時啟動。但是,事務序列號在執行 BEGIN TRANSACTION 語句后的第一次讀/寫操作時開始增加。事務序列號在每次分配時都增加 1。
當事務執行時,SQL Server根據行版本列,來提供的行的相應版本。
 
        而SQLServer將維護所有在數據庫中執行的數據修改的邏輯副本(版本)。特定的事務每次修改行時,數據庫引擎 實例都存儲以前提交的 tempdb 中行的圖像版本。每個版本都標記有進行此更改的事務的事務序列號。已修改行的版本使用鏈接列表鏈接在一起。最新的行值始終存儲在當前的數據庫中并鏈接至版本存儲區 tempdb 中存儲的版本。(修改大型對象 (LOB) 時,只有已更改的片段才會復制到 tempdb 中的版本存儲區,  對于短期運行的事務,已修改行的版本將可能保存在緩沖池中,而不會寫入 tempdb 數據庫的磁盤文件中。如果只是臨時需要副本行,它將只是簡單地從緩沖池中刪除而不會引發 I/O 開銷。)
 
       MSDN上一再強調要關注提升tempdb的地位,不然因為tempdb的性能導致整個數據庫性能下降,可就是無妄之災了。

行版本控制隔離:種類
 
    行版本控制分為兩種已提交讀快照隔離級別(READ_COMMITTED_SNAPSHOT)和快照隔離級別(ALLOW_SNAPSHOT_ISOLATION),他們屬于行版本控制的隔離的范疇,但是實際上他們卻有方方面面的不同。
下面是MSDN對他們的比較。

  • 屬性
    已提交讀快照隔離級別
    快照隔離級別
    必須設置為 ON 以便啟用所需支持的數據庫選項。
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 虹口区| 黄梅县| 双辽市| 龙山县| 平江县| 云浮市| 新巴尔虎左旗| 嘉荫县| 祥云县| 高尔夫| 兴和县| 黑龙江省| 岑巩县| 准格尔旗| 千阳县| 玉树县| 雅江县| 内丘县| 大同县| 开远市| 双牌县| 平定县| 横山县| 夹江县| 叶城县| 广安市| 广西| 淮安市| 昆明市| 蓝山县| 深圳市| 南充市| 宜良县| 漯河市| 正镶白旗| 沙田区| 马鞍山市| 西藏| 阳信县| 长宁县| 项城市|

            • <noscript id="da3xm"><tbody id="da3xm"></tbody></noscript>