导语:
为了保证数据库事务的一致性和隔离性,Vastbase G100数据库引入了快照隔离技术,即通过事务快照实现事务间的隔离性和一致性。事务快照是一个数据集,存储关于单个事务在某个时间点上事务的活跃状态,活跃事务表示事务正在进行或者尚未启动,对其他事务不可见。
普通事务快照:高并发情况下出现性能瓶颈
普通事务快照包含以下内容:
Ø xmin:最小的活跃事务ID;事务ID小于该值,事务属于已提交或已回滚,是可见的。
Ø xmax:第一个尚未分配的事务ID;事务ID大于或等于该值,事务属于在生成快照时还没有启动,是不可见的。
Ø xip_list:系统中的活跃事务列表,只包括xmin和xmax之间的所有活跃事务。数据库程序使用全局数组(procArray)在共享内存中保存系统中所有事务的状态,对该全局数组的读写操作都需要加锁以保证一致性,比如:事务启动、事务提交、事务回滚都需要修改该全局数组。
在事务处理流程中,普通事务快照的生成步骤如下:
- 首先对procArray加共享锁;
- 计算xmin和xmax, 并拷贝xmin与xmax之间的活跃事务到xip_list;
- 释放锁。
随着数据库系统并发数增加,系统中的活跃事务增加,普通事务快照中的xip_list逐渐变大,导致以下问题:
- 生成快照的时间变长,导致加