数据库事务隔离级别(转)
发布日期:2021-06-30 16:53:03
浏览次数:2
分类:技术文章
本文共 1127 字,大约阅读时间需要 3 分钟。
一,事务的4个基本特征
Atomic(原子性): 事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要 么全部成功,要么全部失败。 Consistency(一致性): 只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初 状态。 Isolation(隔离性): 事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正 确性和完整性。同时,并行事务的修改必须与其他并行事务的修改 相互独立。 Durability(持久性): 事务结束后,事务处理的结果必须能够得到固化。 以上属于废话 二,为什么需要对事务并发控制 如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形 Lost update: 两个事务都同时更新一行数据,但是第二个事务却中途失败退出, 导致对数据的两个修改都失效了。 Dirty Reads: 一个事务开始读取了某行数据,但是另外一个事务已经更新了此数 据但没有能够及时提交。这是相当危险的,因为很可能所有的操作 都被回滚。 Non-repeatable Reads: 一个事务对同一行数据重复读取两次,但是却得到了不同的结果。 Second lost updates problem: 无法重复读取的特例。有两个并发事务同时读取同一行数据,然后其 中一个对它进行修改提交,而另一个也进行了修改提交。这就会造成 第一次写操作失效。 Phantom Reads: 事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查 询中未出现的数据(这里并不要求两次查询的SQL语句相同)。这是 因为在两次查询过程中有另外一个事务插入数据造成的。 三, 数据库的隔离级别 为了兼顾并发效率和异常控制,在标准SQL规范中,定义了4个事务隔 离级别,(ORACLE和SQLSERER对标准隔离级别有不同的实现 ) Read Uncommitted: 直译就是"读未提交",意思就是即使一个更新语句没有提交,但是别 的事务可以读到这个改变.这是很不安全的. Read Committed: 直译就是"读提交",意思就是语句提交以后即执行了COMMIT以后 别的事务就能读到这个改变. Repeatable Read: 直译就是"可以重复读",这是说在同一个事务里面先后执行同一个 查询语句的时候,得到的结果是一样的. Serializable: 直译就是"序列化",意思是说这个事务执行的时候不允许别的事务 并发执行. 四,隔离级别对并发的控制 下表是各隔离级别对各种异常的控制能力:
LU | DR | NRR | SLU | PR | |
RU | N | Y | Y | Y | Y |
RC | N | N | Y | Y | Y |
RR | N | N | N | N | Y |
S | N | N | N | N | N |
转载地址:https://laurence.blog.csdn.net/article/details/5403650 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年05月01日 01时21分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ACM 2014 鞍山区域赛 E - Hatsune Miku (dp)
2019-04-30
反向传播&梯度下降 的直观理解程序(numpy)
2019-04-30
ACM 2017 南宁区域赛 Rake it in(对抗搜索)
2019-04-30
CodeForces - 931B World Cup (思维 模拟)
2019-04-30
CodeForces - 996D Suit and Tie (暴力)
2019-04-30
ACM 2017 香港区域赛 E - Base Station Sites(二分)
2019-04-30
ACM 2018 青岛区域赛 J-Books (模拟)
2019-04-30
ACM 2016 沈阳区域赛 E - Counting Cliques (dfs)
2019-04-30
ACM 2017 北京区域赛 J-Pangu and Stones(区间dp)
2019-04-30
HDU - 5643 King's Game (约瑟夫环变式)
2019-04-30
UVA - 1452 Jump (约瑟夫环变式)
2019-04-30
POJ - 3517 And Then There Was One (约瑟夫环变式)
2019-04-30
HDU - 2068 RPG的错排 (错排+组合数)
2019-04-30
CodeForces 591C Median Smoothing(思维 模拟)
2019-04-30
升级yosemite后java出错的解决
2019-04-30
开发人员与测试人员, 道不同也相谋
2019-04-30
Thirdparty之CrashRptProbe, 查询程序奔溃的利器
2019-04-30