交易 ID
事务 ID(xids)具有顺序性。 每个数据库记录包括两个 xid 值:
- 创建记录的事务 ID
- 删除记录的事务 ID(如果未删除,则设置为 0)
系统更新记录时,会删除原始记录,插入新的记录,并保留 rowid。
由于系统不会更新磁盘上的记录,因此数据完整性得以保持(一次写入),回滚和恢复操作也得以简化和加速。
运行查询(或备份操作)时,系统允许查询访问该事务开始前创建但未删除的任何记录。 由于 xid 值是有顺序的,因此系统会比较创建 xid 和删除 xid 值来实现这一目的。
例外情况是,当一个事务开始时,它会生成一个其他活动事务的隐形列表(因此,这些事务的 xid 值会更低)。 事务会忽略任何与创建 xid 值匹配的记录,并包含任何与删除 xid 值匹配的记录。
xid 是一个 8 字节的整数值,其中 48 位有效。 在新安装的系统中,初始 xid 值为 1,024。 系统会在 "/nz/data/xid文件中存储下一个可用的 xid 值。
xid 的大小允许超过 100 万亿个交易 ID,以每毫秒一个交易的速度计算,需要 4000 多年才能用完。 在实际操作中,交易 ID 的生成速度可能较慢,耗费的时间也较长。