最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫事務(wù)隔離級別詳解

 更新時(shí)間:2017年03月15日 16:47:24   投稿:lqh  
這篇文章主要介紹了MySQL數(shù)據(jù)庫事務(wù)隔離級別詳解的相關(guān)資料,需要的朋友可以參考下

數(shù)據(jù)庫事務(wù)隔離級別

數(shù)據(jù)庫事務(wù)的隔離級別有4個(gè),由低到高依次為

  1. Read uncommitted:允許臟讀。
  2. Read committed: 防止臟讀,最常用的隔離級別,并且是大多數(shù)數(shù)據(jù)庫的默認(rèn)隔離級別。
  3. Repeatable read:可以防止臟讀和不可重復(fù)讀。
  4. Serializable:可以防止臟讀,不可重復(fù)讀取和幻讀,(事務(wù)串行化)會(huì)降低數(shù)據(jù)庫的效率。

這四個(gè)級別可以逐個(gè)解決臟讀 、不可重復(fù)讀 、幻讀 這幾類問題。

√: 可能出現(xiàn) ×: 不會(huì)出現(xiàn)

事務(wù)級別 臟讀 不可重復(fù)讀 幻讀
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

注意:我們討論隔離級別的場景,主要是在多個(gè)事務(wù)并發(fā)的情況下。

臟讀、幻讀、不可重復(fù)讀

臟讀:

臟讀就是指當(dāng)一個(gè)事務(wù)正在訪問數(shù)據(jù),并且對數(shù)據(jù)進(jìn)行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中,這時(shí),另外一個(gè)事務(wù)也訪問這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù)。

不可重復(fù)讀:

是指在一個(gè)事務(wù)內(nèi),多次讀同一數(shù)據(jù)。在這個(gè)事務(wù)還沒有結(jié)束時(shí),另外一個(gè)事務(wù)也訪問該同一數(shù)據(jù)。那么,在第一個(gè)事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個(gè)事務(wù)的修改,那么第一個(gè)事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的。這樣就發(fā)生了在一個(gè)事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的,因此稱為是不可重復(fù)讀。(即不能讀到相同的數(shù)據(jù)內(nèi)容)

幻讀:

是指當(dāng)事務(wù)不是獨(dú)立執(zhí)行時(shí)發(fā)生的一種現(xiàn)象,例如第一個(gè)事務(wù)對一個(gè)表中的數(shù)據(jù)進(jìn)行了修改,這種修改涉及到表中的全部數(shù)據(jù)行。同時(shí),第二個(gè)事務(wù)也修改這個(gè)表中的數(shù)據(jù),這種修改是向表中插入一行新數(shù)據(jù)。那么,以后就會(huì)發(fā)生操作第一個(gè)事務(wù)的用戶發(fā)現(xiàn)表中還有沒有修改的數(shù)據(jù)行,就好象發(fā)生了幻覺一樣。

example:

表:

CREATE TABLE `cc_wsyw126_user_test_isolation_copy` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `password` varchar(64) NOT NULL,
 `age` int(11) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `ix_age` (`age`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

模擬數(shù)據(jù):

INSERT INTO `cc_wsyw126_user_test_isolation_copy` (`password`, `age`) 
VALUES 
('1', 1),
('2', 2),
('3', 3),
('4', 4);

第一個(gè)事務(wù)A:

start transaction 
insert into cc_wsyw126_user_test_isolation_copy (password, age) values ('5',5)
commit

第二個(gè)事務(wù)B:

start transaction 
update cc_wsyw126_user_test_isolation_copy set age = 2 where password >='2'
select * from cc_wsyw126_user_test_isolation_copy where password >= '2';
commit

重現(xiàn)步驟:

只要A事務(wù)的insert語句,在B事務(wù)select之前和update之后即可。

MySQL InnoDB存儲引擎,實(shí)現(xiàn)的是基于多版本的并發(fā)控制協(xié)議——MVCC (Multi-Version Concurrency Control) 加上間隙鎖(next-key locking)策略在Repeatable Read (RR)隔離級別下不存在幻讀。如果測試幻讀,在MyISAM下實(shí)驗(yàn)。

在聚集索引(主鍵索引)中,如果有唯一性約束,InnoDB會(huì)將默認(rèn)的next-key lock降級為record lock。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Mysql中的CHECK約束特性詳解

    Mysql中的CHECK約束特性詳解

    這篇文章主要介紹了Mysql中的CHECK約束特性詳解的相關(guān)資料,講解的十分淺顯易懂,這里推薦給大家,需要的朋友可以參考下
    2022-08-08
  • MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫備份詳解

    MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫備份詳解

    本篇文章主要介紹了MySQL中的 數(shù)據(jù)庫備份詳解,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • mysql創(chuàng)建用戶授權(quán)步驟詳解

    mysql創(chuàng)建用戶授權(quán)步驟詳解

    這篇文章主要介紹了mysql創(chuàng)建用戶授權(quán),本文分步驟給大家介紹的非常詳細(xì),對mysql創(chuàng)建用戶授權(quán)詳細(xì)步驟感興趣的朋友一起看看吧
    2023-07-07
  • SQL常用的四個(gè)排序函數(shù)梳理

    SQL常用的四個(gè)排序函數(shù)梳理

    這篇文章主要介紹了SQL常用的四個(gè)排序函數(shù)梳理,四個(gè)排序函數(shù)分別是SQL?Server排序中經(jīng)常用到的ROW_NUMBER()、RANK()、DENSE_RANK()、NTILE()、下文簡單分享,需要的小伙伴可以參考一下
    2022-07-07
  • Linux?安裝?MySQL?8.0?及?配置方法

    Linux?安裝?MySQL?8.0?及?配置方法

    本文詳細(xì)介紹了在Ubuntu操作系統(tǒng)上使用MySQL?APT存儲庫安裝和配置MySQL?8.0的步驟,本文通過圖文示例相結(jié)合給大家講解的非常詳細(xì),感興趣的朋友一起看看吧
    2024-11-11
  • MySQL8.0中的my.ini文件位置說明

    MySQL8.0中的my.ini文件位置說明

    這篇文章主要介紹了MySQL8.0中的my.ini文件位置說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MySQL字符編碼設(shè)置方法

    MySQL字符編碼設(shè)置方法

    這篇文章主要介紹了MySQL字符編碼設(shè)置方法的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • MySQL8.0就地升級到MySQL8.4.0的方法

    MySQL8.0就地升級到MySQL8.4.0的方法

    本文主要介紹了MySQL8.0就地升級到MySQL8.4.0的方法,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • mysql字段為null為何不能使用!=

    mysql字段為null為何不能使用!=

    這篇文章主要介紹了mysql字段為null為何不能使用!=問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • mysql 批量更新與批量更新多條記錄的不同值實(shí)現(xiàn)方法

    mysql 批量更新與批量更新多條記錄的不同值實(shí)現(xiàn)方法

    在mysql中批量更新我們可能使用update,replace into來操作,下面小編來給各位同學(xué)詳細(xì)介紹mysql 批量更新與性能吧
    2013-10-10

最新評論

雷山县| 南京市| 德保县| 崇阳县| 东至县| 双柏县| 天津市| 丽水市| 辰溪县| 色达县| 安康市| 双辽市| 台北县| 鄂托克旗| 南郑县| 六枝特区| 星座| 马公市| 沅江市| 大城县| 蓬安县| 广灵县| 葵青区| 合作市| 广汉市| 虹口区| 佛山市| 永靖县| 手机| 黑河市| 万州区| 华池县| 海淀区| 邵阳县| 石棉县| 梓潼县| 青河县| 渭源县| 黄梅县| 尉氏县| 朝阳市|