Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426710
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Sybase

2008-06-17 23:19:04

多版本时间戳机制

使用多版本时间戳机制,每一个事务在开始执行前,系统都为它分配一个静态的、唯一的时间戳。对系统中的每一个数据项,有一个版本序列与之关联。每一个数据(记为Q)的版本包含三个方面的内容:

1)版本的数值:C(Q)

2)创建数据版本的事务时间戳:W(Q)

3)读取数据版本的所有事务的最大时间戳:R(Q)

事务对数据的查询操作,不用等待、直接选择数据的最近可用版本进行读取。如果一个事务的时间戳大于数据版本的R(Q),就使用该事务时间戳更新R(Q)

事务对数据的更新操作,要使用数据最近可用版本的W(Q)R(Q),和事务的时间戳进行比较,根据一系列规则,决定事务是回滚、继续执行还是创建新的数据版本。

数据库中不再需要的数据版本,需要进行删除以释放磁盘空间。系统根据以下的规则进行删除。假设有某数据项的两个版本,两个版本的W(Q)都小于系统中最老只读事务的时间戳,那么两个版本中较旧的那个版本将不会再被使用,因而可以删除。

对多版本时间戳机制的使用,要考虑所存在的以下两个问题:

1)读取数据项,要求更新数据版本的R(Q),于是产生两次潜在的磁盘访问而不是一次。

2)事务间的冲突通过回滚解决而不是等待,这种做法开销可能很大。

阅读(1152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~