论文部分内容阅读
缓存作为中央处理器(CPU)和主存之间的高速、低容量存储设备,可以非常快速的传递数据到CPU。当缓存当中没有CPU需要的数据时,就会引发一次访存操作,CPU需要暂停流水线并等待数据从主存传递到缓存,在此期间,CPU无法执行任何任务,即“CPU延时等待”。通过对商业数据库执行任务所消耗的时间进行分析,显示大约50%的时间浪费在CPU延时等待上,其中,90%的CPU延时等待是由于末级缓存数据失效和一级缓存指令时效造成的。索引作为数据库重要的组成部分,提升索引结构对缓存行为的感知能力是非常重要的。本文针对缓存行为特性,结合缓存优化技术,对索引机制进行如下改进:(1)针对现有缓存感知型索引结构,随着索引数据增长时,会消耗大量的存储空间,造成缓存命中率降低,并且索引结点设置成缓存行大小或是缓存行的倍数,增加了树的高度的问题,提出了空间高效缓存感知型索引机制。该索引采用数据压缩的方式,提高索引结构对缓存空间的利用率,减少索引对缓存空间的消耗。同时,采用结点分区的两级结构,使索引结点可以扩大容量,降低索引树的高度。(2)针对HBase查询列信息时需要扫描整张数据表,会使得无效数据对缓存空间进行污染,并且在查询过程中,符合查询条件的有效数据和不符合要求的无效数据交叉存储,破坏了有效数据的空间局部性特征,降低了缓存命中率。同时,无效数据还会消耗大量的缓存空间,增加了缓存失效次数的问题,提出前缀式二级索引方法,该方法通过前缀方式构建索引可以减少查询过程中扫描的存储空间,减少无效数据对缓存空间的消耗,减少缓存失效次数。(3)以流数据处理框架Spark Streaming、消息服务框架Kafka以及HBase为基础,设计实现了一个能源信息查询系统,为大规模能源信息查询提供高效、稳定的服务。论文对该系统的设计思想、系统架构以及各个模块的设计、实现进行了详细的介绍。