码迷,mamicode.com
首页 > 数据库 > 详细

数据库事务

时间:2017-09-04 16:29:09      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:rollback   ace   detail   结果   com   html   可重复   target   log   

                                                                          数据库事务

通过将一组相关操作组合成一个要么全部执行成功,要么全部执行失败的单元,极大地简化了错误恢复并使应用程序更加可靠。事务既可以在存储过程中写,也可以在应用程序中写。

事物的三个操作:

开始,提交,回滚。

保存点:设置保存点后,事物回滚可以回滚到设置的保存点,而不必全部回滚。

   

java事务的类型有三种;JDBC事务,JTA事务(分布式多数据源),容器事务。

在jdbc api中,默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句代表一项事务,操作成功后,系统自动调用commit()来提交,否则将调用rollback()来撤消事务。 
在jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项 sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。

 

                                                                          存储过程

存储过程是大型数据库系统中一组为了完成特定功能的SQL语句集,存储在数据库中。经过第一次编译后再次调用不用再编译。用户通过指定存储过程的名字并给出参数(如果该存储过程有名字)来执行它。

 

 

                                                                     数据库事务隔离级别

http://blog.csdn.net/fg2006/article/details/6937413

数据库事务的隔离级别有四个,由低到高依次为读未提交,读提交,重复读,序列化。这四个级别可以逐个解决脏读,不可重复读,幻读的问题。事务隔离的场景主要发生在事务并发的情况下。

技术分享

脏读:

脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。【事务提交前事务中的每个修改操作语句执行后数据库的值会变,不是提交后才变。事务的作用只是起一个将库中修改后的数据恢复原样的作用】

不可重复读:

不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。
这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。
幻读:
同不可重复读一样,唯一的区别是修改数据的事务中修改要为增加/删除记录。
三种情况的区别:
脏读和不可重度读(及幻读)的区别是两个事务的交叉点不一样。后者的两次读将修改操作事务完全包围。前者是两个事务的开头和结尾互相交叉。而不可重复读和幻读的区别是修改事务的修改操作的区别,一个为修改记录值,一个为删除或添加记录行。
 

set 作用域 transaction isolation level 事务隔离级别,例如~

mysql> set global transaction isolation level read committed; //全局的

mysql> set session transaction isolation level read committed; //当前会话

 

http://www.cnblogs.com/aliger/p/3898869.html

 

事务传播行为:

数据库事务

标签:rollback   ace   detail   结果   com   html   可重复   target   log   

原文地址:http://www.cnblogs.com/jianmianruxin/p/7474147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!