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

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

MySQL事務及Spring隔離級別實現原理詳解

瀏覽:73日期:2023-02-06 15:01:25

1、事務具有ACID特性

原子性(atomicity):一個事務被事務不可分割的最小工作單元,要么全部提交,要么全部失敗回滾。 一致性(consistency):數據庫總是從一致性狀態到另一個一致性狀態,它只包含成功事務提交的結果 隔離型(isolation):事務所做的修改在最終提交一起,對其他事務是不可見的 持久性(durability):一旦事務提交,則其所做的修改就會永久保存到數據庫中。

2、事務的隔離級別

1)隔離級別的定義與問題

READ UNCOMMITTED(讀未提交):事務的修改,即使沒有提交,對其他事務也都是可見的。事務能夠讀取未提交的數據,這種情況稱為臟讀。 READ COMMITTED(讀已提交):事務讀取已提交的數據,大多數數據庫的默認隔離級別。當一個事務在執行過程中,數據被另外一個事務修改,造成本次事務前后讀取的信息不一樣,這種情況稱為不可重復讀。 PEPEATABLE READ(可重復讀):這個級別是MySQL的默認隔離級別,它解決了臟讀的問題,同時也保證了同一個事務多次讀取同樣的記錄是一致的,但這個級別還是會出現幻讀的情況。幻讀是指當一個事務A讀取某一個范圍的數據時,另一個事務B在這個范圍插入行,A事務再次讀取這個范圍的數據時,會產生幻行。特別說明:InnoDB和XtraDB存儲引擎通過多版本并發控制(MVCC,Multiversion Concurrency Control)解決了幻讀問題,它使用間隙鎖(next-key locking)鎖定查詢涉及的行和索引中的間隙,防止幻影行的插入。 SERIALIZABLE(可串行化):這個事務是最高的隔離級別,它強制事務串行執行,避免了幻讀問題。簡單來說,SERIALIZABLE會在讀取的每一行數據上都加鎖,所以可能會導致大量的超時和鎖競爭

隔離級別 臟讀可能性 不可重復度可能性 幻讀可能性 加鎖讀 READ UNCONMITED Yes Yes Yes No RED COMMITED No Yes Yes No REPEATABLE READ No No Yes No SERIALIZABLE No No No Yes

2)如果查看修改和MySQL的隔離級別

show variables like ’tx_isolation’; # 查看隔離級別,MySQL8以前show variables like ’transaction_isolation’; # 查看隔離級別,MySQL8set global transaction_isolation=’READ-COMMITTED’; // 設置隔離級別,閥域READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE

事務的隔離級別可以是Session層的,我們可以對不同的Session設置不同級別:

set session transaction isolation level read uncommitted;set session transaction isolation level read committed;set session transaction isolation level repeatable read;set session transaction isolation level serializable;

3)Spring事務隔離級別

Spring事務默認使用數據庫的隔離級別,可以通過注解@Transactional中的isolation參數調整Session級的隔離級別。隔離級別是會話級別的,JDBC的java.sql.Connection接口支持隔離級別的設置。

MySQL事務及Spring隔離級別實現原理詳解

Spring在開啟事務時(DataSourceTransactionManager.doBegin),根據注解配置,對Connection的隔離級別進行設置:

MySQL事務及Spring隔離級別實現原理詳解

MySQL驅動com.mysql.cj.jdbc.ConnectionImpl執行SQL語句調整會話級的隔離級別

MySQL事務及Spring隔離級別實現原理詳解

3、死鎖

死鎖是指兩個或多個事務在同一資源上相互占用,并請求鎖定對方占用的資源,從而導致惡性循環。死鎖示例:

# 事務一start transaction;update account set money=10 where id=1;update account set money=20 where id=2;commit;# 事務二start transaction;update account set money=10 where id=2;update account set money=20 where id=1;commit;

假設碰巧,事務一和事務二同時執行完第一個update語句,接著準備執行第二條update語句,卻發現記錄已被對方鎖定,然后2個事務都等待對方釋放資源,同時持有對方需要的鎖,這樣就會出現死循環。

為了避免死鎖問題,數據庫實現了各種死鎖檢測和死鎖超長機制,InnoDB處理死鎖的方式是:將持有最少行級排他鎖的事務進行回滾。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 北京发电车出租-发电机租赁公司-柴油发电机厂家 - 北京明旺盛安机电设备有限公司 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 合金耐磨锤头_破碎机锤头_郑州市德勤建材有限公司 | 宁夏档案密集柜,智能密集柜,电动手摇密集柜-盛隆柜业宁夏档案密集柜厂家 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 宠物店加盟_宠物连锁店_开宠物店-【派多格宠物】 | 2025第九届世界无人机大会| 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 工业用品一站式采购平台|南创工品汇-官网|广州南创 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 快速卷帘门_硬质快速卷帘门-西朗门业| 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 巩义市科瑞仪器有限公司| 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 方源木业官网-四川木门-全国木门专业品牌 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 |