linux事務隔離級別,事務的隔離級別(Transaction isolation levels)2

READ COMMITTED

READ COMMITTED這是數據庫默認的隔離級別。它能保證你不能讀取那張表格數據,只要有其它事務還在改變這張表格數據。可是,因為sql server在select操作的時,鎖表格時間就那么一小會兒,如果一個事務在READ COMMITTED級別下重復讀數據,這樣那個數據可能還是會變,或者新的行可能出現并且還是滿足了原來的查詢條件,能查詢到。你以為還是原來的那些數據,其實又有新的內容在里面了。

READ COMMITTED有兩個地方要注意。第一,它能阻止?dirty reads,但是第二,它還是允許non-repeatable reads和phantom reads.

第一點阻止?dirty reads,舉個例子,

-- Step 1:

-- Start a transaction but don't commit it

USE IsolationDB ;

GO

BEGIN TRAN

UPDATE IsolationTest

SET col2 = 'New Value' ;

-- 更新了數據,但未結束事務,事務還在影響這張表格。

-- Step 2:

-- Start a new connection and change your isolation level

USE IsolationDB ;

GO

SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;

SELECT *

FROM IsolationTest ;

--

-- You should notice that the process blocks, and returns

-- no data or messages!

在READ COMMITTED級別下讀取。你注意到過程是堵塞的,不能返回數據,因為有一個修改事務影響著。

-- To finish up, perform the following two steps:

-- Step 3:

-- Return to the connection from Step 1 and issue a ROLLBACK

ROLLBACK TRANSACTION ;

-- 回滾事物嘍。

-- Step 4:

-- Rerun the SELECT statement in the connection from Step 2

SELECT *

FROM IsolationTest ;

--

-- Verify that the data is available 可以顯示數據了。只不過是原來的數據。

這個就不像READ UNCOMMITTED還能讀取。

看一下READ COMMITTED第二點,non-repeatable reads,舉個例子。

先關閉全部的查詢窗口。打開兩個新的查詢窗口。

-- Step 1:

-- Read data in the default isolation level

USE IsolationDB

SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;

BEGIN TRAN

SELECT AVG(col1)

FROM IsolationTest ;

-- 第一步,設置了默認的隔離級別,開始一個事務來讀取平均值,

-- Step 2:

-- In a new connection, update the table:

USE IsolationDB ;

UPDATE IsolationTest

SET col1 =500

WHERE col1 =50 ;

-- 第二步,更新了表格。假設第一步已經結束了,那么第二步的將會更新成功,即使第一步的連接還是在事務里。這個UPDATE是一個自動提交的事務,所以SQL server會鎖住它,一旦提交完成又自動釋放它。

-- Step 3:

-- Go back to the first connection and

-- run the same SELECT statement:

SELECT AVG(col1)

FROM IsolationTest ;

-- 第三步,再次執行查詢語句,平均值就變了,這就是一個non-repeatable read。默認的READ COMMITTED隔離級別能阻止正在讀取的數據被改變,但是僅僅指的是正在被讀取的數據被改變。一旦這個讀取操作結束了,那么其它的事務就能改變數據,即使讀取操作所在的那個事務還打開著,沒有提交結束。結果就是,也不能保證我們能取得一樣的數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388553.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388553.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388553.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Asp導出到Excel之二

response.contentType "application/vnd.ms-excel" response.addheader "Content-Disposition", "attachment; filename引出文件.xls" 一、適用于動態和表態表。 二、頁面最好只存放數據表,不要有其它內容。 三、對于分頁的情…

warning C4996: “strcpy”被聲明為否決的解決辦法

VC2005中,使用了很多標準的C函數,比如fopen,strcpy之類的。編譯時會出現警告,比如這個: d:\xxxx.c(1893) : warning C4996: “strcpy”被聲明為否決的 緊接著IDE有提示說:“This function or variable…

驗證部分表單是否重復

1. 效果 圖片中的名稱、機構編碼需要進行重復驗證2. 思路及實現 表單驗證在獲取數據將需要驗證的表單數據進行保存this.nameChangeTemp response.data.orgName;this.codeChangeTemp response.data.orgCode; 通過rule對表單進行驗證 以名字的驗證為例rules: {orgName: [// 設置…

python bokeh_提升視覺效果:使用Python和Bokeh制作交互式地圖

python bokehLet’s face it, fellow data scientists: our clients LOVE dashboards. Why wouldn’t they? Visualizing our data helps us tell a story. Visualization turns thousands of rows of data into a compelling and beautiful narrative. In fact, dashboard vi…

用C#寫 四舍五入函數(原理版)

doubled 0.06576523;inti (int)(d/0.01);//0.01決定了精度 doubledd (double)i/100;//還原 if(d-dd>0.005)dd0.01;//四舍五入 MessageBox.Show((dd*100).ToString()"%");//7%,dd*100就變成百分的前面那一部分了

C++設計UDP協議通訊示例

UDP是一種面向非連接,不可靠的通訊協議,相對于TCP來說,雖然可靠性不及,但傳輸效率較高   一、緒言   UDP是一種面向非連接,不可靠的通訊協議,相對于TCP來說,雖然可靠性不及,但…

浪里個浪 FZU - 2261

TonyY是一個喜歡到處浪的男人,他的夢想是帶著蘭蘭姐姐浪遍天朝的各個角落,不過在此之前,他需要做好規劃。 現在他的手上有一份天朝地圖,上面有n個城市,m條交通路徑,每條交通路徑都是單行道。他已經預先規劃…

C#設計模式(9)——裝飾者模式(Decorator Pattern)

一、引言 在軟件開發中,我們經常想要對一類對象添加不同的功能,例如要給手機添加貼膜,手機掛件,手機外殼等,如果此時利用繼承來實現的話,就需要定義無數的類,如StickerPhone(貼膜是手…

北大青鳥c語言課后答案,北大青鳥C語言教程--第一章 C語言基礎.ppt

《北大青鳥C語言教程--第一章 C語言基礎.ppt》由會員分享,可在線閱讀,更多相關《北大青鳥C語言教程--第一章 C語言基礎.ppt(20頁珍藏版)》請在人人文庫網上搜索。1、第一章,C 語言基礎,2,課程地位,.Net ,以 # 開始的語句稱為預處理器指令,#include語句不…

nosql_探索NoSQL系列

nosql數據科學 (Data Science) Knowledge on NoSQL databases seems to be an increasing requirement in data science applications, yet, the taxonomy is so diverse and problem-centered that it can be a challenge to grasp them. This post attempts to shed light on…

C++TCP和UDP屬于傳輸層協議

TCP和UDP屬于傳輸層協議。其中TCP提供IP環境下的數據可靠傳輸,它事先為要發送的數據開辟好連接通道(三次握手),然后再進行數據發送;而UDP則不為IP提供可靠性,一般用于實時的視頻流傳輸,像rtp、r…

程序員如何利用空閑時間掙零花錢

一: 私活 作為一名程序員,在上班之余,我們有大把的時間,不能浪費,這些時間其實都是可以用來挖掘自己潛在的創造力,今天要討論的話題就是,程序員如何利用空余時間掙零花錢?比如說周末…

編寫程序乘法口訣表C語言,陳廣川問:c語言編程九九乘法口訣表 怎樣用c語言寫九九乘法口訣表?...

怎樣用c語言寫九九乘法口訣表?哈哈,我剛剛用javascript寫好乘法口訣表。C語言,如何編寫程序輸出九九乘法表。形式如下 ********* ******** ******* ****** ***** **** *** ** *?兩個循環,一般用for循環 一個循環控制行…

PHP中文亂碼解決辦法

一&#xff0e;首先是PHP網頁的編碼 1. php文件本身的編碼與網頁的編碼應匹配 a. 如果欲使用gb2312編碼&#xff0c;那么php要輸出頭&#xff1a;header(“Content-Type: text/html; charsetgb2312")&#xff0c;靜態頁面添加<meta http-equiv"Content-T…

python中api_通過Python中的API查找相關的工作技能

python中api工作技能世界 (The World of Job Skills) So you want to figure out where your skills fit into today’s job market. Maybe you’re just curious to see a comprehensive constellation of job skills, clean and standardized. Or you need a taxonomy of ski…

欺詐行為識別_使用R(編程)識別欺詐性的招聘廣告

欺詐行為識別背景 (Background) Online recruitment fraud (ORF) is a form of malicious behaviour that aims to inflict loss of privacy, economic damage or harm the reputation of the stakeholders via fraudulent job advertisements.在線招聘欺詐(ORF)是一種惡意行為…

PE文件的感染C++源代碼

PE文件的感染C源代碼 PE文件規定了可執行文件的格式&#xff0c;凡是符合此格式的文件都能在windows系統上運行。PE文件的格式暫且不談&#xff0c;說一些感染PE文件的幾種途徑。 導入表感染。這個涉及比較復雜的操作&#xff0c;首先&#xff0c;要自行寫一個dll文件&#x…

c語言實驗四報告,湖北理工學院14本科C語言實驗報告實驗四數組

湖北理工學院14本科C語言實驗報告實驗四 數組.doc實驗四 數 組實驗課程名C語言程序設計專業班級 14電氣工程2班 學號 201440210237 姓名 熊帆 實驗時間 5.12-5.26 實驗地點 K4-208 指導教師 祁文青 一、實驗目的和要求1. 掌握一維數組和二維數組的定義、賦值和輸入輸出的方法&a…

c語言宏定義

一. #define是C語言中提供的宏定義命令&#xff0c;其主要目的是為程序員在編程時提供一定的方便&#xff0c;并能在一定程度上提高程序的運行效率&#xff0c;但學生在學習時往往不能理解該命令的本質&#xff0c;總是在此處產生一些困惑&#xff0c;在編程時誤用該命令&#…

rabbitmq channel參數詳解【轉】

1、Channel 1.1 channel.exchangeDeclare()&#xff1a; type&#xff1a;有direct、fanout、topic三種durable&#xff1a;true、false true&#xff1a;服務器重啟會保留下來Exchange。警告&#xff1a;僅設置此選項&#xff0c;不代表消息持久化。即不保證重啟后消息還在。原…