MySQL事务

介绍

事务(Transaction)是数据库用来保证数据的完整性---要么都做修改,要么都不做。

特性:ACID
  • 原子性(atomicity):事务是不可分割的工作的单位。
  • 一致性(consistency):事务将数据库从一种状态转变为下一种状态
  • 隔离性(isolation):多个事务并发执行,单独不影响
  • 持久性(durability):提交的事务的结果或效果的系统出现故障的情况下仍然存在

实现

事务隔离性由锁实现;原子性、一致性、持久性通过数据库的redo和undo实现

1 redo

记录的是新数据的备份。在事务提交前,只要将Redo Log持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化,但是RedoLog已经持久化。系统可以根据RedoLog的内容,将所有数据恢复到最新的状态

2 undo

Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)

在操作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为UndoLo)。然后进行数据的修改。如果出现了错误或者用户执行了ROLLBACK语句,系统可以利用UndoLog中的备份将数据恢复到事务开始之前的状态


事务控制语句

在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。因此开启一个事务必须使用begin,start transaction,或者执行 set autocommit=0,已禁用当前会话的自动提交

事务控制语句:

  • start transction | begin : 显示的开启一个事务
  • commit 事务提交
  • rollback 事务回滚

事务隔离级别

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销

Read Uncommitted(读取未提交内容)
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)

Read Committed(读取提交内容)
这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果

Repeatable Read(可重读)
这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。

Serializable(可串行化) 这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MySQL技术内幕:InnoDB存储引擎(第2版) 姜承尧 第1章 MySQL体系结构和存储引擎 >> 在上述例子...
    沉默剑士阅读 7,689评论 0 16
  • 事务简介 ACID 原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全...
    ywhu阅读 698评论 0 0
  • 事务的定义 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元...
    诸葛坚强阅读 1,199评论 0 3
  • 洮州冶力关有一座山峰,其形态酷似一巨大将军在仰天长眠,当地人程“将军睡千年”。幸于庚辰年夏落足目睹,耿耿于怀,念念...
    无墨散人阅读 596评论 4 3
  • 从前,她一直认为在物质与爱情的老话题中,她一定会选择物质,毕竟,她一直是家中的乖乖女,父母的选择也自然也成为了...
    多啦A梦888阅读 441评论 0 0

友情链接更多精彩内容