在线事务处理数据库存储引擎的技术创新
在现代数据库系统中,事务处理性能和存储空间效率一直是关键的挑战。为了应对这些挑战,一种名为X-Engine的存储引擎应运而生,它利用FPGA硬件加速Compaction过程,使得系统上限进一步提升。这一技术属首次将硬件加速技术应用到在线事务处理数据库存储引擎中,相关论文已经被2020年的FAST'20国际会议接收。
X-Engine通过数据复用技术减少数据合并代价,同时减少缓存淘汰带来的性能抖动。使用多事务处理队列和流水线处理技术,减少线程上下文切换代价,并计算每个阶段任务量配比,使整个流水线充分流转,极大提升事务处理性能。相对于其他类似架构的存储引擎(例如RocksDB),X-Engine的事务处理性能有10倍以上提升。
X-Engine使用的Copy-on-write技术,避免原地更新数据页,从而对只读数据页面进行编码压缩,相对于传统存储引擎(例如InnoDB),使用X-Engine可以将存储空间降低至10%~50%。此外,X-Engine还利用Bloom Filter快速判定数据是否存在,Surf Filter判断范围数据是否存在,Row Cache缓存热点行,加速读取性能。
LSM基本逻辑与优化
LSM(Log-Structured Merge-tree)存储结构是一种以追加方式写入内存的数据结构,每次写入一定程度后,便将其冻结为一层(Level),并写入持久化存储。所有写入的行,都以主键(Key)排序好后存放,无论是在内存中,还是持久化存储中。在内存中,这是一个排序的内存数据结构(Skiplist、B-Tree等),在持久化存储中也作为一个只读的全排序持久化存储结构。
为了支持事务处理,普通的存储系统需要加入一个时间维度,为每个事务构造出一个不受并发干扰的独立视域。例如,存储引擎会对每个事务定序并赋予一个全局单调递增的事务版本号(SN),每个事务中的记录会存储这个SN以判断独立事务之间的可见性,从而实现事务的隔离机制。
然而,如果LSM存储结构持续写入,不做其他的动作,那么最终会成为层次越多、数据量越大、对查询性能影响越大的结构。因此,LSM引入了Compaction操作来解决这个问题。Compaction操作有两种作用:一是控制LSM层次形状,使数据量较大的层次靠近内存,提高读性能;二是将访问频率高的数据放在较高的层次上,存放在快速存储设备中,而把访问频率低的数据放在较低层次中,存放在廉价慢速存储设备中。这就是X-Engine的冷热分层策略。
总之,X-Engine存储引擎通过硬件加速、数据复用、多事务处理队列、流水线处理等技术,显著提升了事务处理性能,降低了存储空间需求。同时,结合LSM存储结构和Compaction操作,实现了对数据访问的优化,