转载:数据库事务的特性、隔离级别

前言:数据库事务也是面试的时候面试官爱提问的一个方面,最近面试被问到了好几次了,于是想着整理一下。一来加深自己对相关知识的认识;二来要是以后遗忘了,能够快速回忆起来;三来希望对正在查阅相关知识点的朋友有所帮助。

一、事务的特性

①原子性:是指事务是一个不可分割的工作单元,事务中的操作要么都发生,要么都不发生。

        eg:张三给李四转钱,要么张三的钱减少李四的增多,要么两个人的钱都不变。

②一致性:是指事务前后数据的完整性要保持一致。

        eg:本来 张三有1000元 李四有1000元 一共2000。张三给李四转账100元,成功:张三900元,李四1100元 一共2000元。

③隔离性:是指是指多个用户并发访问数据库的时候,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数要相互隔离。

④持久性:是指一个事务一旦提交,他对数据库中数据的改变就是就是永久性的。

         eg:张三 1000  李四 1000  张三给李四转100  张三提交了,数据回滚不了了

二、不考虑隔离性,会引发下列问题

①脏读:是指一个事务读到另一个事务未提交的数据

②不可重复读:在一个事务中,两次查询到的结果不一致(针对 update 操作)

③虚读(幻读):在一个事务中,两次查询到的结果不一致(针对 insert 操作)

三、通过设置事务隔离级别来解决读的问题

①读未提交(Read uncommitted):最低级别,上述情况都不能避免

②读已提交(Read committed):可避免 脏读 发生。Oracle默认隔离级别

③可重复读(Repeatable read):可避免 脏读、不可重复读 发生。Mysql默认隔离级别

④串行化(Serializable):可避免 脏读、不可重复读、虚读 发生

作者:gosin1994
来源:CSDN
原文:https://blog.csdn.net/weixin_39917216/article/details/81063528
版权声明:本文为博主原创文章,转载请附上博文链接!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值