微学网

热门关键词:   as  thinkphp  ecshop  xxx  商务通  www.ymwears.cn
热门: ASP.NET PHP编程 ASP编程 JSP编程 Python

MySQL笔记之事务基础学习

发布时间:2021-05-04 来源:未知 点击:

一、什么是事务

作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行


二、逻辑架构和存储引擎

  • 第一层:处理客户端连接、授权认证等。
  • 第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。
  • 第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储引擎实现的。

三、四大特性

3-1、原子性

一个事务是最小的工作单元,事务包含的所有操作要么全部成功,要么全部失败回滚

3-2、一致性

事务执行之前和执行之后都必须处于一致性状态。直观点来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性

3-3、隔离性

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离

3-4、持久性

一个事务一旦提交,就会永远保存在数据库中,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作


四、四种隔离级别

  • 读未提交(READ_UNCOMMITTED):读未提交指的是一个事务在提交之前,它所做的修改就能够被其他事务所看到。
  • 读已提交(READ_COMMITTED):读已提交指的是一个事务在提交之后,它所做的变更才能够让其他事务看到。
  • 可重复读(REPEATABLE_READ)MySQL默认隔离级别,可重复读指的是一个事务在执行的过程中,看到的数据是和启动时看到的数据是一致的。未提交的变更对其他事务不可见
  • 串行化(SERIALIZABLE):顾名思义是对于同一行记录,会加写锁会加读锁。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行

五、并发问题

  • 脏读:事务 A 读取了事务 B 更新后的数据,但是事务 B 没有提交,然后事务 B 执行回滚操作,那么事务 A 读到的数据就是脏数据
  • 不可重复读:事务 A 进行多次读取操作,事务 B 在事务 A 多次读取的过程中执行更新操作并提交,提交后事务 A 读到的数据不一致
  • 幻读:事务 A 将数据库中所有学生的成绩由 A -> B,此时事务 B 手动插入了一条成绩为 A 的记录,在事务 A 更改完毕后,发现还有一条记录没有修改,那么这种情况就叫做出现了幻读

六、事务的七大传播机制

  1. PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。

  2. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

  3. PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。

  4. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

  5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

  6. PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

  7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。


七、实战

没完..............


这就是微学网-程序员之家为你提供的"MySQL笔记之事务基础学习"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/14345.html
网络编程 | 前端制作 | 数据库 | CMS教程 | 脚本编程 | 框架 | 服务器 | 微信开发 | APP开发 | 学习教程 |

凡本网站转载的文章、图片等资料的版权归版权所有人所有,因无法和版权所有者一一联系,如果本网站选取的文/图威胁到您的权益,请您及时和本网站联系。 我们会在第一时间内采取措施,避免给双方造 成不必要的损失。
© 2015-2021 微学网 版权所有,并保留所有权利。 备案号:粤ICP备09051474号-1

菜鸟学习网,提供各类程序编程入门,技巧