论文部分内容阅读
随着大数据时代的到来,数据存储领域的挑战和机遇接踵而至。面对海量数据的存储和管理问题,在关系型数据库存储引擎的基础上,更多的提高存储性能、容错性、可扩展性的存储引擎被设计出来。其中日志结构合并树Log-Structured Merge Trees(LSM-tree)作为一种为写负载优化的数据结构在现代得到了更多的应用。
基于LSM-tree的存储引擎为了提供更佳的写入性能,将客户端的:写入操作以日志(log)的格式保存在内存中,达到一定条件后批量延迟写入到磁盘的分层数据结构中存储。为了提高读取性能并减少存储空间的使用,LSM-tree通过后台任务的方式维护一个数据压缩操作(compaction)来删除过期数据。由于compaction操作会大量消耗CPU并占用IO,其严重阻碍了LSM-tree整体吞吐量的提升。学术界已经提出各种优化相对成功地解决了这个问题,这些技术包括限制落盘(flush)和压缩的速率、有选择的执行压缩以获得最佳压缩效果,以及通过提出新数据结构.分段LSM-tree最大化的限制压缩但不影响读写性能等。尽管提出了各种优化压缩的方法提升了系统性能,但在延迟敏感(1atency-intensive)、要求提供低延迟和可预测的吞吐量的应用程序中,因为客户端经常进行并发查询,其总体延迟由最慢回复请求的响应时间决定,所以为了不影响服务质量,在考虑吞吐量的提升之外,需要更多考虑性能抖动和长尾延迟的问题。
本篇论文首先综述了LSM-tree的研究现状,接着对多个旨在提高吞吐量的LSM-tree存储系统进行性能和延迟实验,发现了其具有的一个共同问题:写入延迟会发生剧烈的抖动,表现为很长的99百分位延迟时间。通过实验分析发现,产生抖动和长尾延迟的根本原因是客户端写入、落盘和压缩三个操作之间的相互干扰和不协调。针对这个问题,本文设计了一种为写入延迟优化存储结构RLSM,创新地提出了LSM-tree系统的IO动态分配和压缩调度器的概念,对客户端写入、落盘和压缩操作进行精细的同步和协调,包括在低写入负载期间地将更多IO分配给落盘和压缩操作,对落盘和不同层级的压缩操作进行优先级排序,以及在高写入负载情况下允许落盘操作抢占压缩操作等新理念。
RLSM是一个平衡了读写性能和写入延迟的LSM-tree存储结构。在公开基准上的实验表明,RLSM作为一个键值对存储引擎在不降低读写性能的情况下,明显的改善了延迟抖动和长尾请求问题。
基于LSM-tree的存储引擎为了提供更佳的写入性能,将客户端的:写入操作以日志(log)的格式保存在内存中,达到一定条件后批量延迟写入到磁盘的分层数据结构中存储。为了提高读取性能并减少存储空间的使用,LSM-tree通过后台任务的方式维护一个数据压缩操作(compaction)来删除过期数据。由于compaction操作会大量消耗CPU并占用IO,其严重阻碍了LSM-tree整体吞吐量的提升。学术界已经提出各种优化相对成功地解决了这个问题,这些技术包括限制落盘(flush)和压缩的速率、有选择的执行压缩以获得最佳压缩效果,以及通过提出新数据结构.分段LSM-tree最大化的限制压缩但不影响读写性能等。尽管提出了各种优化压缩的方法提升了系统性能,但在延迟敏感(1atency-intensive)、要求提供低延迟和可预测的吞吐量的应用程序中,因为客户端经常进行并发查询,其总体延迟由最慢回复请求的响应时间决定,所以为了不影响服务质量,在考虑吞吐量的提升之外,需要更多考虑性能抖动和长尾延迟的问题。
本篇论文首先综述了LSM-tree的研究现状,接着对多个旨在提高吞吐量的LSM-tree存储系统进行性能和延迟实验,发现了其具有的一个共同问题:写入延迟会发生剧烈的抖动,表现为很长的99百分位延迟时间。通过实验分析发现,产生抖动和长尾延迟的根本原因是客户端写入、落盘和压缩三个操作之间的相互干扰和不协调。针对这个问题,本文设计了一种为写入延迟优化存储结构RLSM,创新地提出了LSM-tree系统的IO动态分配和压缩调度器的概念,对客户端写入、落盘和压缩操作进行精细的同步和协调,包括在低写入负载期间地将更多IO分配给落盘和压缩操作,对落盘和不同层级的压缩操作进行优先级排序,以及在高写入负载情况下允许落盘操作抢占压缩操作等新理念。
RLSM是一个平衡了读写性能和写入延迟的LSM-tree存储结构。在公开基准上的实验表明,RLSM作为一个键值对存储引擎在不降低读写性能的情况下,明显的改善了延迟抖动和长尾请求问题。