《高性能MySql》摘抄[通俗易懂]

《高性能MySql》摘抄[通俗易懂]1.3.事务 事务,有ACID的概念: atomic 原子性 consistency 一致性 isolation 隔离性 durability 持久性 原子性 一个事务必须被视为一个不可分割的最小工…

《高性能MySql》摘抄

1.3.事务

事务,有ACID的概念:

  • atomic 原子性
  • consistency 一致性
  • isolation 隔离性
  • durability 持久性
  1. 原子性

一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

  1. 一致性

数据库总是从一个一致性的状态转换到另一个一致性的状态。因为事务最终没有提交,所以事务中所作的修改也不会保存到数据库中。

  1. 隔离性

通常来说,一个事务所作的修改在最终提交之前,对其它事务是不可见的。

  1. 持久性

一旦事务提交,则其所作的修改就会永久保存到数据库中。

这里的记忆方式是:事务是酸的。 Transaction is acid. 然后记忆 A代表 Atomic C 代表 consistency I 代表 isolation D代表 durability。然后对应ACID进行记忆,原子性——原子;一致性——能量守恒定律;隔离性——薛定谔猫;持久性——不可逆反应

1.3.1.隔离级别

隔离级别里说了很多,但核心的还是对于几种问题的处理。

  • 脏读:事务中的修改,即使没有提交,对其它事务也都是可见的。(好像信纸上写字,写了一半,墨水还没干,另一个人就着急拿过来看,墨水在信纸上流淌,很脏)

  • 幻读:当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行。(我们要把所有桌子上的苹果换西瓜,换完了发现,有一个人又拿来了一个苹果,放在了桌子上。)

  • 不可重复读:不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。(我们要桌子上第二个苹果,我们拿起来擦了擦,放在桌子上,这时候一个人吃了一口,我们又要第二个苹果时,发现被咬了一口。)

拓展阅读:脏读、幻读、不可重复读

然后,解释清了这些名词,我们理解下面这张表即可:

隔离级别 脏读可能性 不可重复读可能性 幻读可能性 每一行数据都上锁
READ UNCOMMITTED(未提交读) Yes Yes Yes No
READ COMMITTED(提交读) No Yes Yes No
REPEATABLE READ(可重复读) No No Yes No
SERIALIZABLE(串行化) No No No Yes

顺带说一句,MySQL默认事务隔离级别为可重复读。InnoDB存储引擎通过多版本并发控制解决了幻读问题。

1.3.2.死锁

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7786.html

(0)
上一篇 2023-03-14
下一篇 2023-03-14

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注