数据库中事务的概念浅析
来源:互联网 发布:可以撕衣服的软件 编辑:程序博客网 时间:2024/06/06 13:10
☆事务的概念
事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
例如:A——B转帐,对应于如下两条sql语句
☆数据库开启事务命令
start transaction
Rollback
Commit
set
select @@tx_isolation
☆事务的特性(ACID)
原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。
使用JDBC管理事务
当一个连接对象被创建时,默认情况下JDBC是自动提交事务:每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚。如想多条SQL在同一事务中,可使用下列语句:
☆JDBC控制事务语句
Connection.setAutoCommit(false);
Connection.rollback();
Connection.commit();
☆演示银行转帐案例
在JDBC代码中使如下转帐操作在同一事务中执行。
☆设置事务回滚点
Savepoint sp = conn.setSavepoint();
Conn.rollback(sp);
Conn.commit();
☆事务的隔离级别
多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。
☆数据库共定义了四种隔离级别:
Serializable(串行化):可避免脏读、不可重复读、虚读情况的发生。
Repeatable read(重复读):可避免脏读、不可重复读情况的发生。
Read committed(读提交):可避免脏读情况发生。
Read uncommitted(读未提交):最低级别,以上情况均无法保证。
☆事务的隔离性
*脏读:
指一个事务读取了另外一个事务未提交的数据。
*不可重复读:
在一个事物内读取表中的某一行数据,多次读取结果不同。
很多人认为这种情况就对了,无须困惑,当然是后面的为准。我们可以考虑这样一种情况,比如银行程序需要将查询结果分别输出到电脑屏幕和写到文件中,结果在一个事务中针对输出的目的地,进行的两次查询不一致,导致文件和屏幕中的结果不一致,银行工作人员就不知道以哪个为准了。
*虚读
是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。
如丙存款100元未提交,这时银行做报表统计account表中所有用户的总额为2700元,然后丙提交了,这时银行再统计发现帐户为2800元了,造成虚读同样会使银行不知所措,到底以哪个为准。
JDBC中的事务处理详见:
http://blog.csdn.net/csc0211/article/details/6232047,http://fzfx88.iteye.com/blog/110295- 数据库中事务的概念浅析
- 数据库中事务的概念浅析
- 数据库中事务的概念浅析(转)
- 数据库中事务的概念及其性质
- 数据库中事务概念的定义
- 浅析数据库的事务
- 数据库事务的概念
- mysql中事务的概念
- Java中事务的概念
- 数据库事务的四个隔离级别浅析
- 数据库事务的概念及ACID
- Android数据库事务浅析
- Android数据库事务浅析
- Android数据库事务浅析
- 事务操作中几个有意思的概念
- 数据库中事务、会话、线程这几个概念是什么关系
- 数据库中事务DML,DDL,DCL,数据字典概念
- 数据库中事务的属性
- web os commander外部表--有更新版本!
- FrameLayout
- J2EE规范总结--JDBC
- 快速生成AWR报告
- redis jedis
- 数据库中事务的概念浅析
- SQL注入式攻击
- tomcat中Virtual Host(虚拟主机)的设置
- 一方断开了网络另一方却不知道
- oracle 锁-1
- 【笔试面试题】腾讯2013实习生面试算法题及参考答案
- redis conf
- Django-- admin后台管理模块的使用
- hdu 2682——Tree(最小生成树)