论文部分内容阅读
20世纪80年代后,随着内存价格不断走低,存储芯片的集成度越来越高,数据库中的全部数据或者大部分数据存在主存中已完全成为可行,内存数据库的研究与应用开始逐步兴起。内存数据库在实时和高并发的应用中所展现出的数据访问能力是磁盘数据库不可比拟的,然而内存数据库的研究与应用毕竟起步比较晚,它的很多设计理念和传统的磁盘数据库不再完全一致。由于磁盘和内存这两种存储介质间的的巨大的差别,基于磁盘结构的数据库系统的数据结构、算法、查询策略、索引结构等,不一定适用于内存数据库系统。本文以内存数据库为研究方向,以内存数据库中的存储结构和索引为重点研究对象,关注于缓存和TLB。在存储结构上,深入的分析了广泛应用于当前内存数据库中N-Array存储结构,指出它的不足:较差的缓存利用率。随后文章给出了改进方案:利用离散存储结构的思想,在单个内存页面中对要存储的业务表的属性值进行分区储存。这样相同属性值在内存页面中空间局部性得到提高,在属性查询上该存储结构能提供更高的缓存利用率。在索引结构上,根据内存数据库索引结构的研究历程,从当今广泛应用于内存数据库的T树到研究火热的缓存敏感树。在缓存敏感索引树的领域中重点分析了缓存敏感树CSS树、CSB+树、HT树,指出他们各自的优缺点及适用情形。CSS树更新代价太大、CSB+树由于一味注重缓存而忽略了TLB对性能的影响。在HT树的设计中通过把叶子节点设计成Hash桶来降低索引树的高度从而减少TLB失配。在HT树设计思想的指引下,本文对CSB+树提出改进,扩大树节点的扇出度,在兼顾缓存的同时控制索引树的高度。相比于CSB+树,改进的CSB+树中增加了树节点内分区和树节点内的索引。最后给出了改进CSB+树的查询和插入时最主要的算法。最后给出了改进的CSB+树和CSB+树的缓存失配和TLB失配实验对比。