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

首頁 > 數據庫 > MySQL > 正文

MySQL數據庫事務隔離級別詳解

2024-07-24 12:52:19
字體:
來源:轉載
供稿:網友

數據庫事務隔離級別

數據庫事務的隔離級別有4個,由低到高依次為

    Read uncommitted:允許臟讀。 Read committed: 防止臟讀,最常用的隔離級別,并且是大多數數據庫的默認隔離級別。 Repeatable read:可以防止臟讀和不可重復讀。 Serializable:可以防止臟讀,不可重復讀取和幻讀,(事務串行化)會降低數據庫的效率。

    這四個級別可以逐個解決臟讀 、不可重復讀 、幻讀 這幾類問題。

    √: 可能出現 ×: 不會出現

    事務級別 臟讀 不可重復讀 幻讀
    Read uncommitted
    Read committed ×
    Repeatable read × ×
    Serializable × × ×

    注意:我們討論隔離級別的場景,主要是在多個事務并發的情況下。

    臟讀、幻讀、不可重復讀

    臟讀:

    臟讀就是指當一個事務正在訪問數據,并且對數據進行了修改,而這種修改還沒有提交到數據庫中,這時,另外一個事務也訪問這個數據,然后使用了這個數據。

    不可重復讀:

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

    幻讀:

    是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的數據進行了修改,這種修改涉及到表中的全部數據行。同時,第二個事務也修改這個表中的數據,這種修改是向表中插入一行新數據。那么,以后就會發生操作第一個事務的用戶發現表中還有沒有修改的數據行,就好象發生了幻覺一樣。

    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;

    模擬數據:

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

    第一個事務A:

    start transaction insert into cc_wsyw126_user_test_isolation_copy (password, age) values ('5',5)commit
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
主站蜘蛛池模板: 阳原县| 同心县| 潜江市| 崇礼县| 大方县| 棋牌| 巩留县| 手机| 从江县| 册亨县| 静海县| 萨嘎县| 砀山县| 克拉玛依市| 泰宁县| 广汉市| 长武县| 保康县| 连州市| 宁化县| 桦甸市| 泰顺县| 宁晋县| 两当县| 兖州市| 淮南市| 拉萨市| 濮阳县| 乃东县| 西吉县| 神池县| 宿迁市| 北海市| 云龙县| 高陵县| 澄迈县| 莆田市| 高台县| 普陀区| 嵩明县| 岢岚县|