数据库事务相关知识总结

数据库事务的四个基本要素(ACID)

1.原子性(A):事务的原子性是指事务是一个不可分割的工作单位,这组操作要么全部发生,否则全部不发生。发生错误就回滚。

2.一致性(C):在事务开始以前,被操作的数据的完整性处于一致性的状态,事务结束后,被操作的数据的完整性也必须处于一致性状态。比如转账:有5个账户,每个账户各有100元,5个就是500元。不管5个账户之间如何并发转账,5个账户的总额应该还是500元。

3.隔离性(I):事务隔离性要求系统必须保证事务不受其他并发执行的事务的影响。串行化,使得在同一时间仅有一个请求用于同一数据。

4.持久性(D):事务完成后,该事物对数据库所做的更改持久保存在数据库之中,不会被回滚。

事务的隔离级别

事务的隔离级别有四种,分别是 读未提交、读已提交、可重复读、序列化

隔离级别          脏读            不可重复读         幻读

读未提交           有                   有                    有

读已提交           否                   有                    有

可重复读           否                   否                    有

序列化               否                   否                    否

脏读:一个事务处理过程里读取了另一个未提交的事务中的数据。

不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据做了更新并提交,导致事务A多次读取不一致

幻读:例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

在MySQL数据库中,支持上面四种隔离级别,默认的为可重复读;而在Oracle数据库中,只支持Serializable (串行化)级别和读已提交这两种级别,其中默认的为读已提交级别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊杰eboy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值