髒讀,不可重複讀,幻讀的區別

2021-08-06 05:16:18 字數 656 閱讀 1440

1.髒讀

髒讀是指在乙個事務處理過程裡讀取了另乙個未提交的事務中的資料。

當乙個事務正在多次修改某個資料,而在這個事務中這多次的修改都還未提交,這時乙個併發的事務來訪問該資料,就會造成兩個事務得到的資料不一致。

2.不可重複讀

不可重複讀是指在對於資料庫中的某個資料,乙個事務範圍內多次查詢卻返回了不同的資料值,這是由於在查詢間隔,被另乙個事務修改並提交了。

例如事務t1在讀取某一資料,而事務t2立馬修改了這個資料並且提交事務給資料庫,事務t1再次讀取該資料就得到了不同的結果,發生了不可重複讀。

3.幻讀

例如:目前工資為1000的員工有10人

事務1:讀取所有工資為1000的員工,顯示結果為10;

這時另乙個事務向employee表插入了一條員工記錄,工資也為1000 

事務2:事務1再次讀取所有工資為1000的員工 ,顯示結果為11,這就產生了幻讀。

總結:髒讀讀取的是未提交的資料,不可重複讀和幻讀讀取的是已經提交的資料,但是不可重複讀針對的是同一資料項(即某個資料),而幻讀針對的是一批資料整體(即整體資料)

髒讀,不可重複讀,幻讀區別

在了解髒讀,不可重複度,幻讀之前,首先要明白這三種情況的出現都是和資料庫併發事務有關聯的,如果所有的讀寫都按照佇列的形式進行,就不會出現問題。名詞解析和解決方案 髒讀 髒讀又稱無效資料讀出 讀出了髒資料 乙個事務讀取另外乙個事務還沒有提交的資料叫髒讀。例如 事務t1修改了某個表中的一行資料,但是還沒...

髒讀,不可重複讀,幻讀

髒讀,不可重複讀,幻讀是由於資料庫事務的隔離性導致的問題。髒讀 乙個事務讀取到了其它未提交事務操作的記錄。不可重複讀 乙個事務a內,首次查詢到一條相同記錄,然後事務b修改該條記錄並提交,事務a再次執行相同查詢,得到了事務b更新後的結果,事務a兩次相同的查詢,卻得到了不同的結果,這個叫做不可重複讀。是...

髒讀 不可重複讀 幻讀

髒讀 事務a使用了資料,但是還沒來得及提交,事務b就使用了這個資料,對於事務b來說就是髒讀。允許髒讀 sql server select from category with nolock 不可重複讀 事務a在9點和12點都會操作乙份資料,但是在10點的時候,事務b也操作了該份資料,並且使其數值進行...