婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL數據庫事務隔離級別詳解

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

熱門標簽:地圖標注直通車 遂寧400電話申請 永州智能外呼系統 趙縣地圖標注 哈爾濱云外呼系統運營商 南寧智能電銷機器人價格 電銷機器人市場價 dq8 全地圖標注 邯鄲400電話注冊辦理

數據庫事務隔離級別

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

  1. Read uncommitted:允許臟讀。
  2. Read committed: 防止臟讀,最常用的隔離級別,并且是大多數數據庫的默認隔離級別。
  3. Repeatable read:可以防止臟讀和不可重復讀。
  4. 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

第二個事務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

重現步驟:

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

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

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

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

您可能感興趣的文章:
  • MySQL中Innodb的事務隔離級別和鎖的關系的講解教程
  • 關于Mysql隔離級別、鎖與MVCC介紹
  • mysql的事務,隔離級別和鎖用法實例分析
  • 深入理解Mysql的四種隔離級別
  • MySQL 四種事務隔離級別詳解及對比
  • MySQL四種事務隔離級別詳解
  • Mysql事務隔離級別之讀提交詳解
  • MySQL隔離級別和鎖機制的深入講解

標簽:張家界 阿里 南寧 鄂州 中衛 上海 定西 浙江

巨人網絡通訊聲明:本文標題《MySQL數據庫事務隔離級別詳解》,本文關鍵詞  MySQL,數據庫,事務,隔離,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL數據庫事務隔離級別詳解》相關的同類信息!
  • 本頁收集關于MySQL數據庫事務隔離級別詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 宜阳县| 宝山区| 万源市| 监利县| 商河县| 乌兰浩特市| 马鞍山市| 淅川县| 峨眉山市| 青州市| 通山县| 泸西县| 嘉黎县| 大英县| 寿光市| 神木县| 宁都县| 大邑县| 马山县| 大竹县| 绥阳县| 孟村| 濉溪县| 贡山| 乌鲁木齐县| 蒲江县| 江都市| 万载县| 开鲁县| 喀喇| 循化| 津南区| 闻喜县| 祥云县| 雷波县| 潮安县| 葵青区| 焉耆| 杨浦区| 惠州市| 上思县|