论坛首页 入门技术论坛

hibernate:事务处理,缓存,以及性能优化.

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

跳转论坛:
Global site tag (gtag.js) - Google Analytics