事务的四大特性和隔离级别

概念:
事务是逻辑上的一组操作,要么都执行,要么都不执行。
保证多个操作原子性,要么全成功,要么全失败。对于数据库来说事务保证批量的DML要么全成功,要么全失败。

事务的四大特性:

原子性(Atomicity):事务是最小的工作单元,不可再分。
一致性(Consistency):事务必须保证多条DML语句同时成功或同时失败。
隔离性(Isolation):一个事务不会影响其他事务的运行,互不干扰。事务之间隔离,四个隔离级别。
持久性(Durability):事务一旦提交成功,它对数据库中数据的改变就是永久性的

注意:rollback,或者commit后事务就结束了。

事务之间的隔离性:

第一级别:读未提交 (Read Uncommited)

对方事务还未提交,但当前事务可以读取到对方未提交的数据
读未提交存在脏读现象:表示读到了脏的数据,因为还未提交到硬盘,数据及其不稳定。(所有数据库都是从第二级别起步,第一级别太低)
脏读:本质是事务 B 去查询了事务 A 修改过的数据,但是此时事务 A 还没提交,所以事务 A 随时会回滚导致事务 B 再次查询就读不到刚才事务 A 修改的数据了,这就是脏读。

第二级别:读已提交 (Read Commited)

当前事务只能读取到对方事务已经提交的数据。由于未提交的读不到,则解决了脏读现象。
存在的问题:不可重复读,即可能每次读的数据不一样,做不到数据从头到尾查的数据是一样的。

第三级别:可重复读 (Repetable Read)

解决了不可重复读的问题
确保如果在一个事务中执行两次相同的SELECT语句,都能得到相同的结果,不管其他事务是否提交这些修改(如银行总账)。每一次读的都是事务初始的备份数据,每次读结果都一样
存在的问题:读取到的数据是幻象读
幻象读:一个事务先后读取一个范围的记录,但两次读取的纪录数不同
在这里插入图片描述

第四级别: 序列化(串行)读 (Serializable) (同步)

解决了所有问题
但是效率低,需要事务排队

每一个级别出现都解决了上一个级别存在的问题。
oracle数据库的默认隔离级别是:读已提交 (Read Commited)
mysql数据库默认的隔离级别:可重复读 (Repetable Read)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值