加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.zhandada.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

数据库的事务控制和四种隔离级别

发布时间:2022-10-15 21:33:37 所属栏目:MySql教程 来源:未知
导读: 数据库的事务控制
原子性: 事务操作不可分割 要么同时成功要么同时失败
一致性: 事务操作前后, 用户获取的数据都是正确的.
隔离性: 每个事务的操作各自独立,互补影响
持久性: 事务一旦提交

数据库的事务控制

原子性: 事务操作不可分割 要么同时成功要么同时失败

一致性: 事务操作前后, 用户获取的数据都是正确的.

隔离性: 每个事务的操作各自独立,互补影响

持久性: 事务一旦提交之后,就会在数据库中保存. (数据落地-保存到磁盘中)

数据库事务控制 :根本原因就是并发问题 三种并发问题

(两个事务(要做或者所做的事情)在并发执行的情况下)

脏读:事务A读取了事务B更新了但是没有提交的数据,然后事务B进行了回滚,导致事务A读取的数据是错误数据。

不可重复读:事务A两次读取的数据不一致,也就是在事务A进行业务操作的过程中事务B 将数据进行了更新或删除。导致事务A两次读取的数据不一致。

幻读:事务A根据条件得到x条数据,然后事务B改变了表中除了这N条数据之外的数据,或者添加了符合事务A条件的数据导致事务A再次根据条件得到的数据是原来的加上事务B修改条件后符合要求的。(也就是说同一条件下同一张表第二次比第一次读取到的行数)

四种隔离级别

(通过隔离级别的设置可以对应避免一些事务并发问题)

串行化(Serializable):也就是将并发执行改为串行一个一个执行,它可以解决三种并发事务问题,但是会导致执行的效率非常低。

可重复读(REPEATABLE READ)(Mysql默认隔离级别):它解决了不可重复读和幻读的问题数据库更新操作,其实就是事务操作的过程中限制了update(更新的)或者删除的操作,但是避免不了幻读,因为幻读是因为插入操作引起的。

读已提交(READ COMMITTED)( SQL Server和Oracle的默认隔离级别):只能读到已经提交了的数据,保证一事务A不会读到另外一个并发的事务B已修改但是没有提交的数据,直接避免了脏读,但不能避免不可重复读和幻读。

读未提交(READ UNCOMMITTED):可以读到未提交的数据,这种隔离级别的一致行最差,使用它三种并发问题都解决不了

在这里插入图片描述

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!