MySQL事务
创始人
2024-03-30 22:11:58
0

MySQL事务

MySQL事务机制主要用于处理操作量大、复杂度高的数据

  • 在MySQL中只有使用了Innodb数据库引擎的数据表和数据库才支持事务
  • 事务处理可以用来维护数据的完整性,保证多条SQL语句要么全部执行,要么全部不执行
  • 事务用于管理insert、update和delete之类的DML语句,[select语句],其它类型的SQL语句没有事 务的概念

概述事务

事务必须满足ACID4个条件:A原子性、C一致性、I隔离性、D持久性 

  • 原子性:一个事务中的所有操作要么全部完成、要不一个都不做,不会结束在中间某个环节
  • 一致性:事务执行结束后数据库的完整性没有破坏
  • 隔离性:数据库允许多个并发事务对数据库中的数据进行读写操作,隔离性可以防止多个事务并发 执行时导致的数据不一致性。事务根据隔离等级可以分为4级:读未提交、读已提交、可重复读和 串行化
  • 持久性:事务执行完成后对数据的修改就是永久的 

事务与数据库底层数据

事务的进行过程中,在未结束之前,DML语句并不会直接更改底层数据,只是将历史操作记录一下,在 内存中完成记录。只有在事务结束时,而且应该是成功结束时,才会修改底层硬盘文件中的数据

  • 事务的原子性是通过undo log来实现
  • 事务的持久性是通过redo log来实现
  • 事务的隔离性是通过【读写锁+MVCC多版本并发控制】来实现的
  • 事务的一致性是通过原子性、持久性和隔离性来实现的 

事务控制语句

  • begin或者 start transaction可以显式的开启一个事务,结束事务有提交和回滚2种方式
  • commit提交事务,并使已执行的对数据库的所有修改成为永久性修改
  • rollback回滚结束事务,撤销已经执行的未提交的修改操作
  • savepoint 标识名称 用于在事务过程种创建一个保存点,从而支持部分回滚。一个事务中可以添 加多个保存点
  • release savepoint 标识名 用于删除一个事务的保存点,如果对应名称的保存时不存在则抛出异常
  • rollback to 标识名 将事务回滚到指定的保存点,执行名称的保存点到当前位置的所有操作撤销, 但是保存点之前的操作仍旧保留,等待事务结束
  • set transaction isolation level用于设置事务的隔离性,innodb存储引擎提供的隔离性有读未提交 read uncommitted、读已提交read committed、可重复读repeatable read和serializable串行化,系统默认隔离等级为可重复读

相关日志问题

  • 事务的原子性是通过undo log来实现
  • 事务的持久性是通过redo log来实现 

redo log

如果每次读写数据都需要磁盘的IO,效率会很低。innodb提供了缓存buffer pool作为访问数据库的缓 存,读取和修改操作都会涉及到缓存的操作,缓存会定期刷新到磁盘中,但是写入缓存的数据在系统宕 机时会丢失,事务的持久性则无法保证。每次读写硬盘数据的IO成本太高,为了解决这个问题,引入了 redo log来提升更新数据的执行效率。

当事务提交时,先将redo log buffer写入redo log文件进行持久化,待事务commit操作完成时才算完 成。这种作为成为预先日志持久化write-ahead log。在持久化一个数据页之前,先将内存中相应的日志 页持久化。当有一条数据需要更新时,innodb会将记录写入到redo log中,并更新内存,这时更新就算 完成。innodb会在适当的时候,例如系统空闲时,才真正将操作记录更新到磁盘。如果在数据落盘之前 系统宕机,数据库重启后,可以通过日志来保证数据的完整性

undo log

undo log提供了两个作用:提供回滚和多版本控制MVCC

在数据修改时不仅记录redo,还记录了相对应的undo。undo log主要记录的是数据的逻辑变化,为了 在发生错误时回滚之前的所有操作。

undo日志用于将数据库逻辑的恢复到原来的样子,所以实际上记录的时相反的工作。例如insert对应的 是delete。undo日志用于事务的回滚操作,进而保证了事务的原子性 

相关内容

热门资讯

读什么什么有感的英文 读什么什么有感的英文英语读后感标题 “读XXX有感”用英语说是 “Reading after XX...
秦岚个人资料身高体重 秦岚个人资料身高体重身高:165公分 体重:46公斤秦岚 生日:七月十七日 星座:巨蟹座 出生地:沈...
双鱼和天秤会纠缠一辈子,既相配... 双鱼和天秤会纠缠一辈子,既相配又相克,为什么?双鱼座的人和天秤座的人都是比较细心的,而且特别敏感,有...
独自一人在外怎样和别人相处? 独自一人在外怎样和别人相处?我觉得独自一个人在外面一定要好好的照顾自己,应该找一份工作,找一个住的地...
朱自清散文集有哪些写的好,值得... 朱自清散文集有哪些写的好,值得背诵的?《背影》、《 春》、《 荷塘月色》、《 匆匆》都是不错的佳...
大家最讨厌的电视剧的哪一个主角... 大家最讨厌的电视剧的哪一个主角?我觉得最讨厌的电视剧主角是容嬷嬷。都挺好,里面的苏大强就是越看越别扭...
69DT伤害怎么才能上1300... 69DT伤害怎么才能上1300 !我加点是4L1M!现在60了!伤害才800!我没大号,想买梦幻币买...
孩子上课不认真听讲 孩子上课不认真听讲我的孩子七周半,已经上二年级了,但是上课不认真听讲总是搞小动作,说了很多次也不听,...
《红脸儿》的主要内容 《红脸儿》的主要内容  红脸儿主要内容:   小说以散淡而富有诗意的语言回顾了“我”与3个小伙伴之间...
异地恋的成功例子 异地恋的成功例子 情侣异地恋8年终成正果 两人存下186张火车票见证爱情一对河南的情侣在大学恋爱时便...
小狗吃了死耗子怎么办 小狗吃了死耗子怎么办你好,没事的,放心吧,你的小狗是宠物狗还是土狗,若是宠物狗的话可能会给它造成身体...
请问有没有死亡万花筒广播剧资源... 请问有没有死亡万花筒广播剧资源?死亡万花筒,我有呀!死亡万花筒广播剧,地·址:9525.video(...
徐缺有哪些女人 徐缺有哪些女人徐缺是小说《最强反套路系统》中的角色,他有许多女性关系,其中包括:1. 林小红:徐缺的...
假如我是四大名著中的人物作文9... 假如我是四大名著中的人物作文900假如你是的林黛玉的话那你就会好好读书,不至于连900个字都写不出了...
西游记81难? 西游记81难?西游记的81难是师徒四人取经回来在河中落水经书被淹了的事
魔兽世界风暴王子问题! 魔兽世界风暴王子问题!现在3.05这版本 王子第4阶段的屏障 是不是可以被MS驱散? 屏障驱散后是...
如何评价张杰的少年中国说 如何评价张杰的少年中国说我觉得非常棒,张杰的家庭条件不好。从小就非常努力。刻苦学习音乐,经过拼搏奋斗...
智取生辰纲中杨志是怎样的人?他... 智取生辰纲中杨志是怎样的人?他失败的原因是什么?简短些志有智慧,但是他忽略了一个重要的因素:团队的合...
有一本书,名字忘记了.好象是美... 有一本书,名字忘记了.好象是美国人写的.梭罗《瓦尔登湖》 如果你用的是新教材,应该是这篇吧是 海明威...
四岁孩子看什么书 四岁孩子看什么书可以看一些带有简单数字的书、色彩鲜艳的图画、动物图画等,培养他的数字感和色彩感,尽量...