浏览 2260 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-11
事务是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位,例如,银行转账工作,从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行.所以,应该把它们看成一个事务.事务是数据库维护一致性的单位,在每个事务结束时,都能保持数据一致性. 基本特征: 原子性(Atomic): 事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败. 一致性(Consistencey): 只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态. 隔离性(Isolation): 事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性.同时,并行事务的修改必须与其他并行事务的修改相互独立. 持久性(Durability):事务结束后,事务处理的结果必须能够得到固化. 数据库肯定是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更好新丢失: 两个事务都同时更新一行数据,但是第二个事务去中途失败退出,导致对数据的两个修改都失效了.这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来. 脏读取: 一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够提交.这是相当危险的,因为很可能所有的操作都被回滚. 不可重得读取: 一个事务对同一行数据重复读取两次,但是却得到了不同的结果.例如,在两次读取的中签,有另外一个事务对该行数据进行了修改,并提交. 两次更新问题: 无法重复读取的特例,有两个并发事务同时读取同一行数据,然后其中一个对它进行修改提交,而另一个也进行了修改提交.这就会造成第一次写操作失效. 虚读: 事务在操作过程中进行两次查询,第二次查询的结果包含了一次查询中未出现的数据(这里并不要求两次查询的Sql语句相同).这是因为在两次查询过程中有另外一个事务插入数据造成的. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-12
楼主贴段书本里的上来就标题主题:hibernate:事务处理,缓存,以及性能优化.????
|
|
返回顶楼 | |
发表时间:2008-10-13
呵呵,不好意思.我是个菜鸟
|
|
返回顶楼 | |