时态仅日志对象数据库系统中的对象与日志管理
1. 对象操作
在时态仅日志对象数据库系统中,对象的创建、更新和删除操作都会产生新的对象描述符(OD)。
- OD 管理
- 对于大多数短事务,它们生成的 OD 通常在安装到对象索引(OIDX)之前不会从主内存中丢弃。只有在需要进行崩溃恢复时,才会使用与对象一起写入日志的 OD。在一个检查点间隔内提交的事务产生的所有 OD,应在下一个检查点间隔结束前安装到 OIDX 中。
- 长事务(包括传统的长存活事务和生成大量数据的“大事务”)会产生大量的 OD。如果要求所有 OD 在插入 OIDX 之前都驻留在 OD 缓存中,事务的最大大小将受限于 OD 缓存的大小。此外,持续时间超过一定数量检查点间隔的事务,在崩溃恢复时需要处理从该事务开始写入日志时起创建的所有日志,这会耗费大量时间并使清理操作更加复杂。
- 为了解决长事务的问题,允许将未提交事务的 OD 插入到预缓存(PCache)中。由于 PCache 节点经常被读写,且大多数事务会提交,因此这种方法造成的 PCache 空间浪费较低。但不允许未提交事务的 OD 从 PCache 迁移到事务索引(TIDX),因为这会使提交处理、恢复操作复杂化且成本较高。对于非常长的事务,可以自适应调整 PCache 的大小,以确保其大小不会限制事务大小。
- 未提交事务的 OD 管理
- 为避免其他事务访问未提交事务的 OD,且由于未提交事务的 OD 包含事务 ID(TID)而非时间戳,PCache 节点使用两个二叉树来区分已提交和未提交事务的 OD。一个是已提交树,用于存储已提交事务的 OD;另一个是未提交树
超级会员免费看
订阅专栏 解锁全文
2244

被折叠的 条评论
为什么被折叠?



