事物的特性及事物的隔离级别
来源:互联网 发布:围棋教学软件 编辑:程序博客网 时间:2024/06/07 01:04
- 第一章
- 事物的四个特性
- 原子性:就是包含的所有操作要么全部成功,要么全部失败回滚
事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
比如:转账的时候还没有成功,则就不能对数据库里面更改,如果更改则会出错
- 一致性:从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
比如:转账之前A和B一共是500 ,那么A和B不管谁向谁转账,钱都是500
- 隔离性:当多个用户并发访问数据库时,不能受到其他事物的影响
比如:操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
4.持久性:事物一旦提交,对数据库的改变是永久的.即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
比如:例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户事务操作完成,当我们程序执行完成直到看到提示后,就可以认定事务以及正确提交,即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成,否则就会造成我们看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。
- 不考虑事务的隔离性,会发生的几种问题
- 脏读:
在一个事务处理过程里读取了另一个未提交的事务中的数据
比如:用户A向用户B转账100元 对应SQL命令如下
update account set money=money+100where name=’B’; (此时A通知B)
updateaccount set money=money- 100 where name=’A’;
当只执行第一条SQL时,A通知B查看账户,B发现确实钱已到账(此时即发生了脏读),而之后无论第二条SQL是否执行,只要该事务不提交,则所有操作都将回滚,那么当B以后再次查看账户时就会发现钱其实并没有转。
- 2.不可重复读(update)
- 一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
比如:例如事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,发送了不可重复读。
不可重复读和脏读的区别是,脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。
- 3. 虚读(幻读)(insert)
非独立执行时发生的一种现象,读取了另一条已经提交的事务.
例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读
幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。
- 四种隔离级别
- Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
- Repeatable read (可重复读):可避免脏读、不可重复读的发生。
- Read committed (读已提交):可避免脏读的发生。
- Read uncommitted (读未提交):最低级别,任何情况都无法保证
隔离级别的设置只对当前链接有效
阅读全文
0 0
- 事物的特性及事物的隔离级别
- 数据库事物的四大特性以及事物的隔离级别
- 事物的四大特性与隔离级别
- 事物的隔离级别和传播特性
- 事物的特性,隔离级别、传播行为
- 事物的隔离级别和传播特性
- 事物的传播特性和隔离级别
- 事物的隔离级别
- 事物的隔离级别
- 事物的隔离级别
- 事物的隔离级别
- 事物的隔离级别
- 事物及事物隔离级别
- 事物—事物的隔离级别
- 数据库的事物隔离级别
- 事物的隔离级别 isolation
- JDBC的事物隔离级别
- 数据库事物的隔离级别
- java异常处理
- axaj
- 【转】去哪儿科技实习生面试总结
- 矩形覆盖
- the beginning
- 事物的特性及事物的隔离级别
- java日期相关的类正则表达式
- 在Ubuntu14.04下安装 labelImg (标数据用)
- 导航栏样式1
- 如何跳出令人窒息的职场死循环
- 数据时代来临,“我的乌托邦工作”是否还要继续?
- android. ARouter使用 theres no route matched! “找不到”!ARouter::No postcard!
- 设计模式大杂烩(24种设计模式的总结以及学习设计模式的几点建议)
- vijos紫色的手链单调栈