- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存数据库中的索引技术
引言
传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB:
Disk-ResidentDatabase)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,磁盘的读写速度远
远小于CPU处理数据的速度,所以磁盘数据库的瓶颈出现在磁盘读写上。
基于此,内存数据库的概念被提出来了。内存数据库(MMDB:MainMemoryDatabase,也叫主存数
据库)[1],就是将数据全部或者大部分放在内存中进行操作的数据库管理系统,对查询处理、并发控
制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存。相对于磁盘,内存的数
据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。
近十几年来,内存的发展一直遵循摩尔定律[2],内存的价格一直下降,而内存的容量一直在增
加。现在的主流服务器,几百GB或者几TB 的内存都很常见,内存的发展使得内存数据库得以实现。
由于内存数据库与传统的磁盘数据库在设计和架构上都大不相同,所以传统的数据库索引不适用
于内存数据库。研究者为改进内存数据库的索引结构做了相当多的研究跟工作。其中,影响较大的索
引有早期的T树、基于缓存敏感(cacheconscious)的CSS/CSB+树,Trie-tree和Hash等等。本文就
这几种有代表性的索引算法进行研究和分析,为进一步改进内存数据库索引算法和提高索引性能打下
坚实的基础。
2、T-tree
2.1 T-tree
T-tree是针对主存访问优化的索引技术[3]。T-tree是一种一个节点中包含多个索引条目的平衡
二叉树,T-tree 的索引项无论是从大小还是算法上都比B-tree精简得多。T-tree 的搜索算法不分搜
索的值在当前的节点还是在内存中的其他地方,每访问到一个新的索引节点,索引的范围减少一半。
图2-1T-Tree的结点
T-tree索引用来实现关键字的范围查询。T-tree是一棵特殊平衡的二叉树 (AVL),它的每个节
点存储了按键值排序的一组关键字。T-tree 除了较高的节点空间占有率,遍历一棵树的查找算法在
复杂程度和执行时间上也占有优势。现在T-tree 己经成为内存数据库中最主要的一种索引方式。
T-tree具有以下特点:1)左子树与右子树之差不超过1,2)在一个存储节点可以保存多个键值,
它的最左与最右键值分别为这个节点的最小与最大键值,它的左子树仅仅包含那些键值小于或等于最
小键值的一记录,同理右子树只包括那些键值大于或等于最大键值的记录,3)同时拥有左右子树的
节点被称为内部节点,只拥有一个子树的节点被称为半叶节点,没有子树的节点被称为叶子,4)为
了保持空间的利用率,每一个内部节点都需要包含一个最小数目的键值。由此可知T-tree是一个每
个结点含有多个关键字的平衡二叉树,每个节点内的关键字有序排列,左子树都要比根节点关键字小,
右子树都要比根节点关键字大。
在上述T-tree结点结构中,包含如下信息:
(1)balance(平衡因子),其绝对值不大于1,balance=右子树高度-左子树高度;
(2)Left_child_ptr和Right_child_ptr分别表示当前结点的左子树和右子树指针;
(3)Max_Item表示结点中所能容纳的键值的最大数;
(4)Key[0]至K[Max_Item-1]为结点内存放的关键字;
(5)nItem是当前节点实际存储的关键字个数。
对于T-tree有如下特征:
(1)与AVL树相似,T-tree 中任何结点的左右子树的高度之差最大为1;
(2)与AVL树不同,T-tree 的结点中可存储多个键值,并且这些键值排列有序;
(3)T-tree结点的左子树中容纳的键值不大于该结点中的最左键值;右子树中容纳的键值不小于
该结点中的最右键值;
(4)为了保证每个结点具有较高的空间占用率,每个内部结点所包含的键值数目必须不小于某个
指定的值,通常为(Max_Item-2)(Max_Item为结点中最大键值目)。
2.2 T-tree索引的操作
用T-tree作为索引方式主要完成三个工作:查找,插入,删除。其中插入和删除都是以查找为
基础。下面分别介绍三种操作的流程。
2.2.1 查找
T-tre
文档评论(0)