《高性能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

相关推荐

  • mybatis通用功能代码生成工具「终于解决」

    mybatis通用功能代码生成工具「终于解决」mybatis操作数据库的过程中,如果只考虑单表操作,mapper和dao层基本80%的都是固定的,故而可以使用工具进行生成,文末提供自己编写的工具(基于mysql存储过程):作者其实就是使用(myb

    2023-05-14
    93
  • 【数据库】数据库备份与还原 Navicat Premium备份以及定时备份设置[亲测有效]

    【数据库】数据库备份与还原 Navicat Premium备份以及定时备份设置[亲测有效]✨数据库备份 数据库作为信息系统的核心担当着重要的角色。 尤其在一些对数据可靠性要求很高的行业如银行、证券、电信等,如果发生意外停机或数据丢失其损失会十分惨重。为此数据库管理员应针对具体的业务要求制定

    2023-04-17
    107
  • thinkphp 数据库性能监听SQL

    thinkphp 数据库性能监听SQL如果开启数据库的调试模式的话,你可以对数据库执行的任何SQL操作进行监听,使用如下方法: Db::listen(function($sql, $time, $explain){ // 记录SQL e…

    2023-04-05
    118
  • Python中常用转义字符

    Python中常用转义字符在Python中,有一些字符在字符串中具有特殊的含义,如果要在字符串中原样输出这些特殊字符,就需要使用转义字符来帮助实现。本文将介绍Python中常用的转义字符及其用法,帮助读者更好地处理字符串。

    2024-05-06
    16
  • Python中break的使用方法

    Python中break的使用方法在Python中,break是一种控制流语句,用于中断循环语句的执行。当程序执行到break语句时,循环语句会立即停止执行,程序开始执行循环语句后的第一条语句。通过使用break,我们可以在满足一定条件的情况下,中断循环,提高程序执行的效率。

    2024-03-01
    47
  • 特征工程 降维_数据降维与特征选择异同

    特征工程 降维_数据降维与特征选择异同在业界广泛流传着一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
    由此可见,数据和特征是多么的重要,而在数据大多数场景下,数据已经就绪,不同人对于同样的数据处理得到的特征却千

    2023-02-06
    90
  • 批量提取字符,除了用Ctrl+E外,还有这2个方法可选[通俗易懂]

    批量提取字符,除了用Ctrl+E外,还有这2个方法可选[通俗易懂]从示例中可以看出,目的是提取门店的编号,但无论在目标单元格中输入1个值,还是2个值,都得不到正确的结果,但快速填充快捷键Ctrl+E的用法是完全

    2023-03-01
    102
  • mongodb添加节点_边缘节点部署

    mongodb添加节点_边缘节点部署Ð 安装包下载 Ð 数据库安装 Ð 数据库启动 Ð 补充 MongoDB配置文件注释 安装包下载 下载地址:https://www.mongodb.com/download-center/commu…

    2022-12-27
    125

发表回复

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