MySQL学习之事务与并发控制
2023-07-09 18:56:14来源:脚本之家
目录
事务概念特性原子性一致性隔离性持久性并发控制undo logread viewLBCC事务
概念
一个事务可以理解为一组操作,这一组操作要么全部执行,要么全部不执行。
特性
原子性
一个事务是一个独立的原子单元,一个事务内所有的操作,要么全部执行,要么全部不执行。关注的是一组操作的执行结果(全部成功or全部失败)。是通过undo log实现的。
(资料图片)
一致性
看了网上很多博客对一致性的讲解,总觉得没有说到点子上,我就从我的个人角度来说说对一致性的理解:
一个事务使得数据库从一个状态A0,转换到另一个状态A1。相邻的两个状态转换之间,只能有一个事务起作用。如果当前状态A0转换到下一个状态A1,之间包括了2个事务,则说明有一个事务的effect被覆盖了。如事务并发问题中的丢失更新,典型的例子是转账问题,A向B转账,同时C也向B转账,最后会发现A或者C转过去的钱不见了,这种例子随便一搜就有,不赘述。用转账问题来解释一致性,比较好理解,因为钱的总数应该是确定的,比如B本来有1000,A向B转100,C向B转200,那么B账户上最后应该有1300,然而最终我们可能看到是1100或1200,因为有一个人的操作被覆盖掉了。其实这也就是说,B账户的钱,从一个状态,到另一个状态,中间有2个事务起了effect,这样是不对的。事务具有隔离性,数据库的每一个状态,应该都有且仅有一个与之对应的事务在take effect。
隔离性
不同的事务之间,应该是不能互相影响的。
4种隔离级别
Read UncommitRead CommitRepetable ReadSerializableRU相当于没有隔离,RC和RR是用MVCC实现(具体是通过undo log 和 read view),Serializable是用锁实现,事务串行执行。
查看当前的隔离级别
select @@tx_isolation; -- mysql 8的变量名变为如下的形式 select @@transaction_isolation; -- 设置隔离级别 set transacation_isolation = "隔离级别名"
数据库隔离级别是一种需求,不同的隔离级别有对应的实现方式。
持久性
事务执行成功后(提交后),对数据库的更改是永久性的(即写到磁盘)。是通过redo log + Force Log at Commit机制实现的
事务并发问题
丢失更新
第一类丢失更新
针对同一行数据,事务A先开始,事务B后开始,事务B提交,随后事务A回滚,则回滚会导致将事务B已提交的修改给覆盖掉。这个问题在现在的数据库软件中已不会产生
第二类丢失更新
针对同一行数据,事务A先开始,事务B后开始,事务A提交,随后事务B提交,则事务B将事务A的修改给覆盖掉了
脏读
事务A读到了事务B未提交的数据,事务B后回滚,则事务A读到的是脏数据
不可重复读
事务A连续2次读一行记录,读取到的是不一样的。这是由于A连续2次读的中间,事务B对这行记录做了更新。
幻读
表现为两次读取的数据数量不一致,发现变多了,或者变少了。
比如我读取age > 10 的学生数据,第一次读发现有10个学生,第二次读发现有20个学生,就好像出现了幻觉一样,同样的查询条件,两次读取发现有学生增加或减少。
事务命令
MySQL命令行下默认是autocommit的,即事务会自动提交。要显示开启一个事务,需使用命令BEGIN
或START TRANSACTION
BEGIN
或START TRANSACTION
开启事务COMMIT
提交事务ROLLBACK
回滚事务
并发控制
两种并发控制策略
MVCC
Multi-Version Concurrency Control
核心理念是快照,InnoDB主要通过undo log 和 read view来实现MVCC。
**读不加锁,读写不互斥。**读会从多个版本的数据中挑选一个合适的版本返回。写操作会产生一个新的版本。
每一行的记录,会包含3个隐藏字段:row_id,tx_id,roll_ptr
其中tx_id表示最近操作该行记录的事务id,roll_ptr则是回滚指针,指向一条undo log记录,即指向该次改动之前的数据
undo log
insert undo log
由insert操作产生,可在事务提交后直接删除。因为insert操作只对当前事务本身可见,其他事务不可见
update undo log
由update/delete产生。是对已有记录的修改,为了提供MVCC机制,该undo log不能在事务提交后就删除,而需要等待purge线程来进行最后的删除
使用update修改当前行时,首先用X锁锁定,然后将该行当前值复制到undo log,然后再执行修改,最后填写事务id,并使回滚指针指向undo log中修改前的行
read view
用于判断数据可见性的一个数据结构,里面存储了
当前活跃事务的最小id:min_id当前活跃事务的最大id:max_id当前活跃事务id list:ids若读取到的某一行的某个版本tx_id < min_id,则说明此行的该版本在本次事务开启之前就已经提交,故这个数据对本次事务可见。
若读取到的某一行的某个版本tx_id >= max_id,说明此行的该版本在本次事务开启之后才开始进行修改,故这个数据对本次事务不可见。
若读取到的某一行的某个版本tx_id在min_id和max_id之间,则判断此行的tx_id是否在ids内,若是,表明此行的事务还在活跃中,此行数据不可见,否则,说明此行的事务已经提交,此行数据可见
简单来说,若在某一时刻开启了一个事务A,则会记录下事务A开启时,还活跃着的其他事务(记下这些活跃事务的id,保存为一个set,比如叫ids),这些事务按照开始的时间先后,会有从小到大的事务id(tx_id),tx_id小的事务,说明是先开启的,tx_id大的事务,说明是后开启的。若在事务A中,读取到某一行数据,这一行数据的tx_id小于ids中最小的id(min_id),说明这一行数据对应的事务,已提交过了(已不活跃了),这一行数据的修改已经持久化,故该行数据对事务A来说是可见的。若这一行数据的tx_id大于或等于ids中的最大id,说明有一个事务,在事务A开始之后,才开始对这一行数据进行修改,故该行数据对事务A不可见。若这一行数据的tx_id,在min_id和max_id之间,那么就判断这个tx_id是不是在ids中,即对这行数据进行修改的那个事务,还在不在活跃的事务列表中,若在,说明修改这行数据的事务还没提交,这行数据还没持久化,故不可见,反之,说明这行数据的修改已经持久化,故可见。
RC隔离级别下,在一个事务中,每次读取数据都会新建一个ReadView。所以可能会产生不可重复读的问题,因为在两次读之间,有其他事务对数据进行了修改,而两次读时都新建了ReadView,故第二次读的时候,修改后的数据是可见的。
RR隔离级别下,在一个事务中,第一次读取时会新建一个ReadView,后序读取都使用这个ReadView。所以哪怕在两次读之间,有其他事务修改了数据,也不会产生不可重复读的问题。因为第二次读,并没有新建ReadView,而是使用了一开始创建的那个ReadView,所以数据可见性和第一次是一样的。
MVCC中,读操作分为两类:快照读,当前读
快照读(一致性非锁定读)读取的时记录的可见版本(可能是历史版本),不加锁。
当某一行被一个事务A加了X锁时,另一个事务B仍然可以读取该行,只不过读取的是历史版本。
-- 简单select SELECT * FROM product;当前读
读取的是记录的最新版本,当前读返回的记录,会加锁,保证了其他并发事务不能修改当前记录
SELECT * FROM product lock in share mode; SELECT * FROM product for update; insert .... update .... delete ....
LBCC
LCC
Lock-Based Concurrency Control
读加读锁,写加写锁。读读不互斥,读写,写写互斥。Serilizable的隔离级别是通过LBCC实现的
以上就是MySQL学习之事务与并发控制的详细内容,更多关于MySQL事务与并发控制的资料请关注脚本之家其它相关文章!
关键词:
责任编辑:hnmd004
-
显卡风扇不转了影响大吗?显卡风扇转好还是不转好?
显卡风扇不转了影响大吗?1、风扇转动主要是使显卡散热,如果在显卡工作是达到一定的温度,风扇会自动转起,控制显卡温度,保护显卡。当低于这一
2023-07-07 15:57:38 -
word文件损坏打不开怎么修复?word文件损坏乱码怎么修复?
word文件损坏打不开怎么修复?1 打开Microsoft Word软件,点击文件菜单,选择打开命令。2 找到损坏的Word文件,选中文件后点击打开按钮
2023-07-07 10:51:03 -
0xc0000005错误代码怎么解决?应用程序0xc0000005是什么错误?
0xc0000005错误代码怎么解决?1、首先按下win+r打开运行,输入regedit按下回车。2、随后依次定位到:HKEY_LOCAL_MACHINE SOFTWARE Microsoft
2023-07-07 10:47:09 -
java环境变量配置后不生效什么原因?怎样看java环境变量是否配置成功?
java环境变量配置后不生效什么原因?1 检查系统是否支持java,即查看java的版本。如果没有安装,需要安装java环境。2 检查配置文件是否正确
2023-07-07 10:43:40 -
ios17什么时候可以更新正式版?ios17什么时候正式推送更新?
ios17什么时候可以更新正式版?ios17正式版预计9月可以更新使用,届时和iPhone15系列新机一起到来。目前,ios17 Beta版在WWDC23发布会结束后
2023-07-07 10:40:52 -
Win11打游戏FPS低怎么办?手机玩游戏帧数低怎么办?
Win11打游戏FPS低怎么办?1、进入Win11系统桌面上,点击开始选择设置进入。2、进入设置界面,点击游戏进入。3、在游戏页面,点击游戏模式进
2023-07-07 10:38:03 -
电脑开不了机怎么办按哪个键?电脑开不了机怎么强制开机?
电脑开不了机怎么办按哪个键?F8:进入 Windows 安全模式。F10:进入 BIOS 设置界面。F11:进入系统恢复界面。Del:进入 BIOS 设置界
2023-07-06 11:14:10 -
显卡风扇不转正常吗?显卡风扇不转怎么解决?
显卡风扇不转正常吗?显卡风扇不转是不正常的。1、灰尘过多可能是显卡上的灰尘太多了,导致堵塞,如果长时间不清理的话,显卡的风扇就会因为
2023-07-06 11:02:33 -
windowshello突然不能用怎么办?windows hello在哪里设置?
windowshello突然不能用怎么办?1、首先按下WIN+R,输入 services msc 回车2、在服务列表中查找 Windows Biometric Service 看这个服
2023-07-06 10:53:30 -
不支持已连接的usb设备怎么解决?无法识别的usb设备是什么意思?
不支持已连接的usb设备怎么解决?需要格式化。USB不支持已连接的设备,是因为U盘文件系统要FAT32格式,需要重新设置U盘格式,先格式化U盘,将U盘
2023-07-06 08:45:03 -
打开dwg格式的软件有哪些?dwg格式文件是什么文件?
打开dwg格式的软件有哪些?1、看图纸DwgSeePlus,一款dwg文件浏览器;2、CAD迷你看图,一款小巧的DWG文件浏览小工具;3、CAD迷你画图,一款CAD
2023-07-06 08:42:40 -
电脑突然没声音了是什么原因?电脑突然没声音了怎么解决?
电脑突然没声音了是什么原因?一起跟着小编来看看吧。电脑没有声音的原因是计算机硬件问题和软件问题,硬件问题主要是声卡坏了,或者输出声
2023-07-05 10:24:15 -
amd是哪个国家的品牌?英特尔和amd哪个厉害?
amd是哪个国家的品牌?amd处理器是美国生产的;美国AMD半导体公司专门为计算机、通信和消费电子行业设计和制造各种创新的微处理器,以及提供
2023-07-05 10:21:36 -
tmp文件可以随便删吗?tmp文件删不掉怎么办?
tmp文件可以随便删吗?是的,可以删除。 tmp文件是一种临时文件,它们通常由操作系统或应用程序创建,以存储暂时数据。一旦完成,它们就会被
2023-07-05 10:19:30 -
mkv格式手机可以看吗?苹果不支持mkv视频吗?
mkv格式手机可以看吗?可以的。 MKV并不是一种压缩格式,而是Matroska的一种媒体文件,是一种多媒体封装格式,或叫多媒体容器。 它可将多种不
2023-07-05 10:16:45 -
电脑开机慢特别卡怎么解决?电脑开机慢系统启动慢什么原因?
电脑开机慢特别卡怎么解决?好多小伙伴不知道如何解决的,那小编就把操作方法分享给大家吧,感兴趣的小伙伴可以参考看看哈。方法一: 减少
2023-07-05 10:11:39 -
zip压缩文件怎么绕过密码?已有的压缩包如何添加密码?
zip压缩文件怎么绕过密码?好多小伙伴不知道的,那小编就来给大家解答一下吧,希望可以帮助到大家吧。1、首先在电脑中,启用英文版nsis,2、
2023-07-05 10:07:06 -
文件后缀隐藏了怎么显示出来?怎么让文件显示扩展名?
文件后缀隐藏了怎么显示出来?一起来看看吧。1、首先,双击打开【计算机】,打开计算机磁盘目录,2、打开后,正常菜单栏是没有显示出来,打
2023-07-04 10:01:15 -
php文件的扩展名是什么?怎么修改php上传文件的大小?
php文件的扩展名是什么?php文件后缀名就是 php文件扩展名和标签为了让服务器来确定我们的PHP文件和脚本,我们必须保存的文件以 php结尾。怎
2023-07-04 09:56:02 -
电脑的文件恢复区在哪里找?恢复文件已损坏怎么办?
电脑的文件恢复区在哪里找?1、1 360文件恢复区打开【360安全卫士】→【木马查杀】,找到并单击左下角的【恢复区】,就可以找到360文件
2023-07-04 09:52:57 -
ipad游戏没有声音怎么回事?ipad打游戏没有声音怎么办?
ipad游戏没有声音怎么回事?1、ipad游戏没有声音可能是忘记开声音或者设置了静音,打开声音或者关闭静音。2、ipad上的游戏设置没有启用声音
2023-07-04 09:42:32 -
电脑快捷方式存在问题是什么原因?快捷方式存在问题怎么解决?
电脑快捷方式存在问题是什么原因?Win11电脑快捷方式可能会出现问题,主要是由于系统更新、病毒感染或者其他原因导致的。快捷方式存在问题怎
2023-07-04 09:34:09 -
DAT是什么文件扩展名?bmp是什么文件扩展名?
DAT是什么文件扩展名? dat文件有两种类型:1、VCD的媒体文件,是数据流格式,可以用一般的视频播放器打开,该类型文件也是MPG格式的,是VCD
2023-07-03 09:48:00 -
mp3文件格式不支持怎么办?mp3格式是什么格式?
mp3文件格式不支持怎么办?是不是好多小伙伴遇到这样的问题不知道如何解决的,那小编就把方法分享给大家吧,感兴趣的小伙伴可以参考看看哈。
2023-07-03 09:44:46 -
任务管理器被禁用怎么解除?任务管理器中没有菜单栏如何解决?
任务管理器被禁用怎么解除?好多小伙伴不知道如何解决的,那小编就把方法给大家解答一下吧,希望可以帮助到大家吧。1、开始 运行 gpedit msc
2023-07-03 09:40:26
精彩推荐
阅读排行
最新资讯
- MySQL学习之事务与并发控制
- 很多家长暑期为孩子选购学习机 老师:学...
- TCL中环公布最新单晶硅片价格
- 梦网科技与华为签署盘古大模型合作协议...
- 恒生电子与华为云签署AI大模型联合创新协议
- 金冠电气股东拟合计减持不超5.702%股份
- 猛料扒到了!神秘央企出手,接下奥园增...
- 锡业股份:锡业分公司停产检修
- 合肥市长丰县举办2023年区域价值发布会...
- 全市住房公积金结息2.15亿元
- 济源示范区颁发首批农村土地承包经营权...
- 共和报:米兰希望出售梅西亚斯,要价100...
- 纯租赁住房小区电动汽车充电难?回应来了
- 国家防办、应急管理部:持续开展隐患排...
- 左蓝微电子完成近亿元B轮融资 润科基金领投
- 今天国际上半年净利润预增78%-97%
- 金冠电气:三名股东拟合计减持不超5.7%股份
- 老旧小区“逆生长” 改造改在居民“心...
- 诚邦股份:上半年预亏1600万元到1900万...
- 太平鸟上半年净利润预增约89%
- 沪一阿姨昏迷倒地,公交车司机"公主抱"...
- 雅安发布一批人事任免
- 南方精工:上半年预亏850万元-1550万元...
- 普利制药:注射用更昔洛韦(0.25g)一致...
- 天奇股份:与富奥股份签署合作备忘录
- 中简科技:上半年净利预增8.33%-19.16%
- 中国天楹:签署3462万欧元垃圾焚烧发电...
- 个人提取三亚公积金需满足什么条件?你...
- 动物精神治疗(动物精神)
- 侨银股份:中标枣庄薛城区城市大管家合...
- 港股上市公司世纪睿科更名为“交个朋友...
- 报告显示二季度房地产市场持续转弱 多...
- 辰安科技:针对芯片领域布局孵化产业公...
- 鹏辉能源:下半年公司工商业储能产品预...
- 宝马女司机醉驾撞人拖行一审判6年,受害...
- 定了!北京57个老旧小区将改造!
- 长飞光纤:子公司完成中广核惠州港口二...
- 快手搜索内测短视频直播行业首个智能问...
- 荣旗科技:融资净偿还626.29万元,融资...
- 青香木图片 清香木图片
- 燕京啤酒还未放弃蔡徐坤
- 【每日天气】今天南部和东部强降雨持续...
- 江核临江“双子星”出场前奏
- “苔花开”第三届乡村儿童美育成果展,...
- 保利发展上半年签约额2368亿元 6月281...
- 信达证券给予盐津铺子买入评级 紧握“...
- 德邦证券给予敏芯股份买入评级 定增加...
- 民生证券给予亚太股份推荐评级 2023年...
- 晋城2个拆迁改造问题回复!
- 捷成股份与华为签署合作协议 面向AIGC...
- 明确位置!约477.3亩!湾里大项目要来了!
- 贵州省127站出现大暴雨 防汛应急响应提...
- 超级一线城市,率先松绑!
- 苹果VisionPro考虑2024年底在中国销售
- 住建部长喊话试点现房销售,今年第5次动...
- 夜读丨她,不仅仅是“书写”了一个励志故事
- 滴滴一季度营收同比增长19%至427亿元 ...
- 瀚川智能发布100PPM全极耳大圆柱高速自...
- 突发!国机汽车摊上事儿
- 大庆油田上半年生产原油超过1500万吨
- 巨量千川可以投视频吗
- 斗罗大陆:瞬移技能烂大街?一集出现四...
- 久安电视国际传媒集团董事长吕奕(久安...
- 开源证券给予保利发展买入评级 公司信...
- 2023-2024年度贵阳贵安住房公积金缴存比...
- 我爱我家总部急发多条短信:杭州公司高...
- 城市管家服务中心在龙华区大浪街道启用...
- 天风证券给予鑫宏业买入评级 新能源特...
- 消息传来,绍兴这几个村要拆迁了!
- 西南证券给予新国都买入评级 牌照续展...
- 西南证券给予利尔化学买入评级 上半年...
- 中泰证券给予长城汽车买入评级 新能源...
- 市少年儿童锦标赛 手球比赛决出名次
- 主播说联播丨办赛与兴城,就要这样完美...
- 龙华首个电商妇联在福城街道成立
- 福城街道关爱骑手 送上暖心营养午餐
- 河西区发布人才服务政策16条
- 民生证券给予嘉环科技推荐评级 事件点...
- 10分钟首签产生!凤溪“城中村”改造项...
- 民生证券给予姚记科技推荐评级 深度报...
- 民生证券给予保利发展推荐评级 2023年...
- 阿娇一生有一个“仙乐”就够了,却还偏...
- 兰州西固区南山小区棚改户改造项目规划...
- 廊坊市不动产登记中心关于2023年4月-6月...
- 中银证券给予泸州老窖买入评级 公司股...
- 香港酒类产品实现深圳前海“自由行”
- 信达证券给予中国中免买入评级 23H1业...
- 约1355亩,兰州将持续发力改造这37个老...
- 签约率突破95%,市中区涝坡村拆迁安置房...
- 文化服务提质升级!福田区文化空间“星...
- 宁夏产品获评“圳品” 47个产品已获“...
- 放心消费在大鹏 大鹏市场监管局强化民...
- 民生证券给予嘉环科技推荐评级 事件点...
- 四川:年内启动四项“三农”领域省级地...
- “130鹏城千社助就业”行动启动
- BMD马棕及大连棕榈油价格上周走高
- 全省首张!韶关南雄颁发农村土地承包经...
- “质优量减”已成土地市场新特征
- 深港各界纪念新安县建县450周年专题联展...
- 突破900万大关!深圳地铁单日客运量再创新高