电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解MySQL事務的隔離級別與MVCC

瀏覽:135日期:2023-10-03 17:25:23
事務隔離級別事務并發執行遇到的問題 臟寫 如果一個事務修改了另一個未提交事務修改過的數據,那就意味著發生了臟寫 臟讀 如果一個事務讀到了另一個未提交事務修改過的數據,那就意味著發生了臟讀 不可重復讀 如果一個事務只能讀到另一個已經提交的事務修改過的數據,并且其他事務每對該數據進行一次修改并提交后,該事務都能查詢到最新值,那就意味著發生了不可重復讀 幻讀 如果一個事務先根據某些條件查詢出一些記錄,之后另一個事務又向表中插入了符合這些條件的記錄,原先的事務再次按照該條件查詢時,能把另一個事務插入的記錄也讀出來,那就意味著發生了幻讀?;米x強調的是一個事務按照某個相同條件多次讀取記錄時,后讀取時讀到了之前沒有讀到的記錄那對于先前已經讀到的記錄,之后又讀取不到這種情況,算啥呢?其實這相當于對每一條記錄都發生了不可重復讀的現象?;米x只是重點強調了讀取到了之前讀取沒有獲取到的記錄。SQL標準中的四種隔離級別 READ UNCOMMITTED: 未提交讀 臟讀、不可重復讀、幻讀 發生 READ COMMITTED:已提交讀 不可重復讀、幻讀 發生 REPEATBLE READ:可重復讀 幻讀 發生 SERIALIZABLE:可串行化 不發生 MySQL中支持的四種隔離級別 MySQL在REPEATABLE READ隔離級別下,是可以禁止幻讀問題的發生的(關于如何禁止我們之后會詳細說明的) MySQL默認隔離級別為REPEATABLE READ MVCC原理版本鏈

對于使用InnoDB存儲引擎的表來說,它的聚簇索引記錄中都包含兩個必要的隱藏列

trx_id:每次一個事務對某條聚簇索引記錄進行改動時,都會把該事務的事務id賦值給trx_id隱藏列 roll_pointer:每次對某條聚簇索引記錄進行改動時,都會把舊的版本寫入到undo日志,然后這個隱藏列就相當于一個指針,可以通過它來找到該記錄修改前的信息。 ReadView 對于使用READ UNCIMMITTED隔離級別的事務來說,由于可以讀到未提交事務修改過的記錄,所以直接讀取記錄的最新版本就好了; 對于使用READ COMMITTED 和REPEATABLE READ 隔離級別的事務來說,都必須保證讀到已經提交了的事務修改過的記錄,也就是說假如另一個事務已經修改了記錄但是尚未提交,是不能直接讀取到最新版本記錄的。核心問題:需要判斷一下版本鏈中的哪個版本是當前事務可見的。為此設計了readview readView包含4個比較重要的內容: m_ids:表示在生成ReadView時當前系統中活躍的讀寫事務的事務IDmin_trx_id:表示生成ReadView時當前系統中活躍的讀寫事務中最小的事務id,也就是m_ids中的最小值max_trx_id: 表示生成ReadView時系統中應該分配給下一個事務的id值creator_trx_id:表示生成該ReadView的事務的事務ID 我們前邊說過,只有在對表中的記錄做改動時(執行INSERT、DELETE、UPDATE這些語句時)才會為事務分配事務id,否則在一個只讀事務中的事務id值都默認為0。 有了這個ReadView,這樣在訪問某條記錄時,只需要按照下邊的步驟判斷記錄的某個版本是否可見: 如果被訪問的版本的trx_id屬性與ReadView中的creator_trx_id相同,意味著當前事務在訪問它自己修改過的記錄,所以該版本可以被當前事務訪問如果被訪問的trx_id屬性值小于ReadView中的min_trx_id值,表明生成該版本的事務在當前事務生成ReadView時已經提交,所以該版本可以被當前事務訪問如果被訪問版本的trx_id屬性值大于或等于ReadView中的max_trx_id值,表明生成該版本的事務在當前事務生成ReadView后才開啟,所以該版本不可以被當前事務訪問如果被訪問版本的trx_id屬性值在ReadView的min_trx_id和max_trx_id之間,那就需要判斷一下trx_id屬性值是不是在m_ids列表中,如果在,說明創建ReadView時生成該版本的事務還是活躍的,該版本不可被訪問;如果不在,說明創建ReadView時生成該版本的事務已經被提交,該版本可以被訪問。

總結一下:

READ COMMITTED隔離級別的事務在每次查詢開始時都會生成一個獨立的ReadView REPEATABLE READ :在第一次讀取數據時生成一個ReadView,也就是說兩次SELECT 查詢得到的結果是重復的。

MVCC總結: 所謂的MVCC指的就是在使用 READ COMMITTED 和REPEATABLE READ 這兩種隔離級別的事務在執行普通的SELECT 操作時訪問的記錄的版本鏈的過程,這樣子可以使不用的事務的讀-寫、寫-讀操作并發執行,從而提升性能。

mysql如何在RR級別解決幻讀的

1.當前讀,讀的是最新版本,并且需要獲取對應記錄的鎖,如下SQL

select ... lock in share mode select ... for update update 、delete 、insert

是通過next-key 來實現幻讀的

2.快照讀 是通過mvcc 來解決的

以上就是詳解MySQL事務的隔離級別與MVCC的詳細內容,更多關于MySQL事務的隔離級別與MVCC的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 缝纫客| 西安中国国际旅行社(西安国旅) | 南京精锋制刀有限公司-纵剪机刀片_滚剪机刀片_合金刀片厂家 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 不锈钢水箱生产厂家_消防水箱生产厂家-河南联固供水设备有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 东莞工作服_东莞工作服定制_工衣订做_东莞厂服 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 |