資料庫引擎隔離級別

来源:http://www.cnblogs.com/Ffdd/archive/2016/07/08/5652954.html
-Advertisement-
Play Games

ISO 標准定義了下列隔離級別,SQL Server 資料庫引擎支持所有這些隔離級別: 未提交讀(隔離事務的最低級別,只能保證不讀取物理上損壞的數據) 已提交讀(資料庫引擎的預設級別) 可重覆讀 可序列化(隔離事務的最高級別,事務之間完全隔離) SQL Server 還支持使用行版本控制的兩個事務隔 ...


ISO 標准定義了下列隔離級別,SQL Server 資料庫引擎支持所有這些隔離級別:

  • 未提交讀(隔離事務的最低級別,只能保證不讀取物理上損壞的數據)

  • 已提交讀(資料庫引擎的預設級別)

  • 可重覆讀

  • 可序列化(隔離事務的最高級別,事務之間完全隔離)

SQL Server 還支持使用行版本控制的兩個事務隔離級別。一個是已提交讀隔離的新實現,另一個是新事務隔離級別(快照)。

  • 當 READ_COMMITTED_SNAPSHOT 資料庫選項設置為 ON 時,已提交讀隔離使用行版本控制提供語句級讀取一致性。讀取操作只需要 SCH-S 表級別的鎖,不需要頁鎖或行鎖。當 READ_COMMITTED_SNAPSHOT 資料庫選項設置為 OFF(預設設置)時,已提交讀隔離的行為方式與其在早期版本 SQL Server 中行為方式相同。兩個實現都滿足已提交讀隔離的 ANSI 定義。

  • 快照隔離級別使用行版本控制來提供事務級別的讀取一致性。讀取操作不獲取頁鎖或行鎖,只獲取 SCH-S 表鎖。讀取其他事務修改的行時,讀取操作將檢索啟動事務時存在的行的版本。將 ALLOW_SNAPSHOT_ISOLATION 資料庫選項設置為 ON 時,將啟用快照隔離。預設情況下,用戶資料庫的此選項設置為 OFF。

註意:
SQL Server 不支持元數據的版本控制。因此,對於在快照隔離下運行的顯式事務中可以執行的 DDL 操作存在限制。在快照隔離下,BEGIN TRANSACTION 語句之後不允許使用任何公共語言運行時 (CLR) DDL 語句或下列 DDL 語句:ALTER TABLE、CREATE INDEX、CREATE XML INDEX、ALTER INDEX、DROP INDEX、DBCC REINDEX、ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME。在隱式事務中使用快照隔離時允許使用這些語句。根據定義,隱式事務為單個語句,這使得它可以強制應用快照隔離的語義,即便使用 DDL 語句也是如此。違反此原則會導致錯誤 3961:“資料庫 '%.*ls' 中的快照隔離事務失敗,因為自此事務啟動後,該語句所訪問的對象已由其他併發事務中的 DDL 語句修改。這是不允許的,因為未對元數據進行版本控制。如果與快照隔離混合,對元數據的併發更新可能導致不一致。”

下表顯示了不同隔離級別導致的併發副作用。

隔離級別 臟讀 不可重覆讀 幻讀

未提交讀

已提交讀

可重覆讀

快照

可序列化

有關每個事務隔離級別控制的特定類型的鎖或行版本控制的詳細信息,請參閱SET TRANSACTION ISOLATION LEVEL (Transact-SQL)。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據處理過程分為數據挖掘和數據分析,廣義上說數據分析泛指整個過程,然而數據分析大的流程大致相同,如圖: 數據挖掘一般都要經過過濾、漂洗、匹配三個過程: 1.過濾:主要將數據中的不適合分析的數據過濾掉,就好比產品流水線的殘次品一樣,對數據進行組粒度的過濾,其規則可按數據大小,字元長短; 2.漂洗:也稱 ...
  • 微軟資料庫SQL Server 2016正式版在2016年6月就發佈,由於近期工作忙,一直拖到現在才有時間把安裝過程寫到博客上,分享給大家。本人一直習慣使用英文版,所以版本和截圖都是英文版的。廢話少說,轉入正題。 下載地址: https://www.microsoft.com/en-us/serve ...
  • 首先,我用的mysql資料庫是5.7.12版本。 出現的問題: 1.插入數據顯示錯誤,插入不成功,出現:Incorrect string value: '\xCD\xF5\xD5\xBC\xBE\xA9' for column 'Sname' at row 1 2.插入中文,雖然插入成功,但是顯示: ...
  • MapReduce實現基於物品的協同過濾: 實現過程中需要執行多個mapreduce任務。 初始數據: job1: 生成用戶對物品喜愛度矩陣 數據:初始數據 map: key=userid value=item:grade reduce: key=userid value=item:grade,it ...
  • 當我們的項目在不知不覺中做大了之後,各種問題就出來了,真jb頭疼,比如性能,業務系統的並行計算的一致性協調問題,比如分散式架構的事務問題, 我們需要多台機器共同commit事務,經典的案例當然是銀行轉賬,支付寶轉賬這種,如果是一臺機器的話,這個還是很方便的,windows中自帶了一個事務協 調器ms ...
  • 預設情況,在CentOS 6.8 下通過yum安裝的是5.1.73版本,現在需求是安裝5.7版本。 Mysql官方網站:http://www.mysql.com Mysql說明文檔:http://dev.mysql.com/doc/ 一、更改資料庫安裝源 在mysql官方網站上找到下載頁面,選擇其中 ...
  • 在分散式存儲系統中,數據需要分散存儲在多台設備上,數據分片(Sharding)就是用來確定數據在多台存儲設備上分佈的技術。本文主要介紹常見的數據分片方法,以及一致性哈希演算法的應用。 ...
  • 運行環境:CentOS 7(版本號:1503) Redis版本:3.0.5 參考文檔:① http://www.redis.cn/topics/cluster-tutorial.html ② http://www.linuxidc.com/Linux/2015-08/121845.htm 註意:re ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...