了解数据库事务的问题+隔离级别+特性

数据库的隔离级别分为四个:Read uncommitted(读未提交),Read committed(读已提交),Repeatable read(可重复读),Serializable(序列化)。在介绍四个离别之前我们先来了解一下几种在操作数据库过程可能出现的问题。

数据库操作可能出现的问题

脏读

含义:所谓脏读,指的就是一个事务读取到了另一个事务未提交的数据。
栗子:小红对数据库中某个数据修改,想要将内容“2”改为“3”,但是还未提交,此时小绿读取该字段的值,他得到的值是3;但是小红又进行 回滚动作(值变回2),那么小绿读的值3便是无效的(数据库中的值仍为2)。

更新丢失

(1)回滚丢失
含义:当两(多)个事务更新同一个数据时,其中一个事务更新成功提交,另外一个事务撤销更新并回滚,此时前一个事务的更新也被回滚。
栗子:小红和小绿同时对数据库中某个数据进行修改,小红将内容“2”该为“3”,未提交;小绿将内容“2”修改“4”,并且提交了。此时小红进行了回滚,则内容会恢复为“2”,那么小绿的更新数据就丢失了。
(2)覆盖丢失
含义:当两(多)个事务分别在自己的读取结果的基础上更新同一个数据时,后提交的事务会覆盖前一个事务的更新。
栗子:小红和小绿同时更新数据库中某个数据“2”,小红读取该数据为“2”,想要将其加一边为“3”,但还未提交;此时小绿读取该数据值仍为“2”,小绿将其减一变为“1”,并且提交;接着小红将修改的值“3”进行提交。那么最后的值是3,小绿的更新操作被小红的覆盖了。

不可重复读

含义:事务对某数据读取两次,第一次读取后,另一个事务对该数据进行了修改,该事务再次读取的数据和之前的数据不同。
栗子:小红读取数据库中某数据,读到的值是“2”;小绿将该值更新为“3”,并提交;小红再次读取该数据发现值为“3”,和之前的值不一样。

幻读

含义:事务对某数据进行两次读取,第二次读取发现了第一次读取未出现的内容或缺少了第一次读取已出现的内容。
栗子:小红将数据库中的某表的所有字段均改为“3”,小绿在该表中插入一条数据,该字段内容为“2”,小红再次读取发现了内容为“2”的数据,和自己的操作情况不符,如同幻觉一般。

数据库的隔离级别

了解完以上问题,我们分别介绍数据库各个隔离级别的含义:

Read uncommitted(读未提交)

含义:一个事务开始更新数据,禁止另外的同时进行更新数据;但是允许其他事务读取该数据。
特点:避免了更新丢失问题,但存在脏读问题。

Read committed(读已提交)

含义:一个事务开始更新数据,禁止其他事务读取该数据;相反,一个事务读取该数据,允许其他事务更新该数据
特点:避免了脏读问题,但存在不可重复读问题。

Repeatable read(可重复读)

含义:一个事务开始读取操作,禁止其他事务更新数据,允许读取数据;同时一个事务开始更新操作,禁止其他事务进行任何操作。
特点:避免了脏读和不可重复读问题,但存在幻读问题。

Serializable(序列化)

含义:事务只能一个一个的执行,不能并发执行。
特点:避免了脏读,不可重复读,幻读,但是性能很低,很少使用。

综上所述,这四个隔离级别由低到高依次是:Read uncommitted(读未提交),Read committed(读已提交),Repeatable read(可重复读),Serializable(序列化)。个人感觉单单从文字上理解可能会有些混淆,所以在这记录一下概念。

事务的特性(扩充)

事务的特性简单来说是ACID原则:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Durability(持久性)。分别了解一下:

原子性

含义:事务是一个整体,事务不能执行到一半,要么全部执行完,要么全部回滚

一致性

含义:事务在执行前和执行后,数据库均应处于正确的转态。

隔离性

含义:事务和事务之间的执行不能互相影响,就像线程和线程之间的运行。

持久性

含义:事务产生的结果应该是持久化的,一旦提交便不可更改。

参考:(感谢作者)
https://www.cnblogs.com/xrq730/p/5087378.html
https://www.cnblogs.com/huanongying/p/7021555.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值