事务隔离级别
来源:互联网 发布:淘宝首页源代码 编辑:程序博客网 时间:2024/05/31 06:22
事务具有四个特征
1 、原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性 (Consistency)
数据库事务不能破坏关系数据库的完整性以及业务逻辑上的一致性。
3 、隔离性 (Isolation)
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
4 、持续性(Durability)
也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
事务应用场景
对于同一个银行帐户A内有200元,甲进行提款操作100元,乙进行转帐操作100元到B帐户。如果事务没有进行隔离可能会并发如下问题:
脏读(Dirty Read): 一个事务读到另一个事务未提交的更新数据.
事务T1更新了数据还未提交,这时事务T2来读取相同的数据,则T2读到的数据其实是错误的数据,即脏数据。基于脏数据所作的操作是不可能正确的 。
脏读:甲取款100元未提交,乙进行转帐查到帐户内剩有100元,这是甲放弃操作回滚,乙正常操作提交,帐户内最终为0元,乙读取了甲的脏数据,客户损失100元。
解读:甲进行回滚操作,账户将变成200元,乙进行正常提交,200元将被覆盖为0,故顾客损失100元
第一类丢失更新: 撤销一个事务时,把其他事务已提交的更新数据覆盖。
例子:首先甲提款时帐户内有200元,同时乙转帐也是200元,然后甲乙同时操作,甲操作成功取走100元,乙操作失败回滚,帐户内最终为200元,这样甲的操作被覆盖掉了,银行损失100元。
不可重复读(Nonrepeatable Read) :一个事务读到另一个事务已提交的更新数据。
一个事务的两次读取中,读取相同的资源得到不同的值。当事务T2在事务T1的两次读取之间更新数据,则会发生此种错误。(重点在修改)
例子:甲乙同时开始都查到帐户内为200元,甲先开始取款100元提交,这时乙在准备最后更新的时候又进行了一次查询,发现结果是100元,这时乙就会很困惑,不知道该将帐户改为100还是0。
- 事务级别 锁 隔离级别
- 事务隔离级别
- SQL事务隔离级别
- 关于事务隔离级别
- 关于事务隔离级别
- 事务隔离级别
- 事务隔离级别
- 数据库事务隔离级别
- SQL事务隔离级别
- JDBC事务隔离级别
- SQL事务隔离级别
- 事务隔离级别演示
- 事务隔离级别
- 数据库事务隔离级别
- 事务隔离级别
- 事务隔离级别2
- 事务隔离级别
- 事务隔离级别-转
- 正则【大写字母加数字,加顿号,加“至”字】
- 开涛的博客之shiro
- linux ubuntu 16.04下deb文件的安装和一些问题的解决
- ZOJ 3777 11th省赛 B Problem Arrangement【状态压缩DP】
- PE
- 事务隔离级别
- kali Linux系统下对于python3使用pip安装库
- 用each来更改页码编号
- MediaPlayer构建音乐播放器,你所需知道的一切
- 在web.xml中classpath和classpath*的区别
- Android保存图片到图库,扫描文件到媒体库,保存图片到SD卡,可用于下载图片
- How to use epoll? A complete example in C
- 全文检索之lucene入门篇HelloWorld
- execCommand insertimage 插入图片