数据库的特性以及隔离级别

关于数据库的事务特性以及隔离级别,老是混淆忘记,今天打算写一篇文章记录一下

一、事务的特性:ACID

ACID:
- 原子性(Atomicity):一个事务要么全部执行,要么全都不执行
- 一致性(Consistency):事务前后数据的完整性必须保持一致
- 隔离性(Isolation):事务之间互不干扰
- 持久性(Durability):事务一旦提交,对数据库的改变是永久性的

二、事务隔离性:
- 脏读:指在一个事务处理过程里读取了另一个未提交的事务中的数据【读到了另一个事务还没有提交的数据】
- 不可重复读【修改】:在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值【这是由于在查询间隔,被另一个事务修改并提交了】
- 幻读/虚读【新增】:幻读是事务非独立执行时发生的一种现象【例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。】
【幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)】

三、数据库隔离级别:

- 读未提交【Read uncommitted】:最低级别,任何情况都无法保证
- 读已提交【Read committed】:可避免脏读   (oracle默认级别)
- 可重复读【Repeatable read 】:可避免脏读,不可重复读   (mysql默认级别)
- 串行化【Serializable】:可避免脏读、不可重复读、幻读的发生

隔离级别越高,执行效率越低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值