- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存数据库优于查询的存储结构的研究与设计.doc
内存数据库优于查询的存储结构的研究与设计 摘 要: 以内存数据库数据存储结构研究重点,以提高数据查询效率为目的,提出在内存数据库现有的N-Array存储结构中利用离散存储结构思想对其改进的方案,并给出具体的设计及实现方式。随后以属性选择查询为主要评估点,对N-Array存储结构和改进的存储结构的查询效率进行全方位分析和对比,最后得出结论:改进的存储结构在属性的选择查询上能更好的利用到系统的缓存优势,在内存数据库的查询效率上它是有意义的。 关键词: 内存数据库;存储结构;查询效率;缓存 中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2012)1210064-02 随着当今的应用对数据库的要求越来越高,尤其表现在高实时性的要求上,传统的磁盘数据库已经开始显得很疲惫,很难再有更多的提高[1]。 在磁盘数据库系统中,数据是以文件格式存储在磁盘上,而在内存数据库中,数据以数据本身的形式直接存储在主存中;同时内存又有着读写速度比磁盘快、相比于磁盘顺序访问的随机访问,所有的的这些特点这些都使得内存数据库在实时性上有着比磁盘数据库先天的优势。目前在国内,中国联通的BSS(Business Sport Sysem,业务支撑系统),中国移动的Boss(Business Operation Support System,业务运营支撑系统),中国电信的SIN(Shared Information Data,共享信息数据平台),以及HLR(Home Location Register,归属位置寄存器)、VLR(Visitor Loeation Register,拜访位置寄存器)等,都己开始采用了内存数据库技术[2]。内存数据库的研究及应用正朝者越来越深入与广泛的方向迈进[3]。 1 内存数据库查询优化的关键点 数据库的查询优化依赖于数据的存储方法、索引的结构等[4]。在查询优化的策略上,内存数据库和磁盘数据库关键点却是不同的:磁盘数据库查询优化的关键是减少磁盘的访问量(有时甚至用牺牲CPU时间代价的方式来减少磁盘I/O次数)。在内存数据库系统中,当前活动的事务需要访问的所有数据都在内存中,这样就完全没有了事务对磁盘的访问,数据的存在形式不再作为大量磁盘上存储的文件看待而作为内存中能直接寻址到的大量数据。由于通过指针访问数据,I/O不再是系统瓶颈,内存空间利用率和CPU的访问效率则成了内存数据库查询效率优化的关键[5]。 目前市场上虽然已经存在了一些商业化的内存数据库产品,但它们都不是很成熟。这些产品在存储结构的设计上,更多注重于内存空间的利用率,而忽略了CPU的内存访问效率及缓存的利用问题。这也导致现有内存数据库存储结构已成为当前内存数据库性能可逾越的一大瓶颈。所以业界对内存数据库的新的存储结构的研究与改进也一直在进行中。 2 改进存储结构的研究与设计 2.1 改进存储结构的提出 在N-Array存储结构中数据表中的记录是连续存放的,并且在记录内部,记录的属性也是按顺序存储。这种结构是非常节省存储空间的,而且实现起来也相对比较简单,目前主流的内存数据库包括SQLite、fastDB、eXtremDB都采用有这种存储结构对数据进行存储。 然而在内存数据库的实际应用中,N-Array存储结构查询效率却不够理想,尤其是在遇到属性选择查询时。因为在N-Array存储结构中,查询程序要访问某条记录的属性前必须要先要访问到整条记录,然后根据属性在记录内部具体的偏移位置拿到具体的属性值。因此在执行属性选择查询过程中,CPU会产生一些不必要的内存访问;再加上相同的属性值在内存中的不连续分布,查询时也很难充分利用到缓存。 在离散存储结构中,在对表的数据进行存储时先对表按照其属性进行分区,将一个完整的表划分为多个单独的子表,每个子表存储与原表中对应属性的数据。离散存储结构对表进行分区的思想就是以对提高属性查询效率为初衷的。因为把数据表中相同属性的值存放在一起,在根据某一属性查询时,查询程序就可以直接在相应的子表中进行,这能大大减少了对数据存储区域的访问。再加上相同属性值在内存中连续紧密分布特性,在属性选择查询时CPU也能更有效的利用到缓存。 但是离散存储结构也有它非常明显的局限性,当属性分区过多,查询性能会下降的特别厉害。由于在离散存储结构中同一条记录属性值的离散分布,它必须要处理数据重组问题。把属于同一记录的属性值组装到一起必须要做子表与子表的连接操作,理论上两个表做连接操作的代价与这两个表的各自记录数相乘的结果成正比,即笛卡尔积。在离散存储结构中,CPU的处理时间会因数据重组而大幅度增加,同时这种数据重组的中间结果也需要大量临时内存来保存直到查询结束,这往往使得离散存储结构有点得不偿失。 2.2 改进存储结构的设计与实现 改进的存储结构是在N
文档评论(0)