论文部分内容阅读
事务是一种在数据库管理系统和文件系统普遍使用的机制。基于传统的磁盘存储体系结构,事务机制一般实现在上层系统和应用中。这些上层系统和应用都单独实现事务机制,这不仅产生了大量的冗余工作,还增加了数据的出错概率。在存储层次提供事务处理接口,能显著减少上层系统的复杂性,提高系统可靠性。在传统磁盘上通常采用写时复制策略实现事务机制,它容易造成事务操作性能变差。闪存的异地更新策略以及具有良好的随机读性能,使它成为支持事务机制的理想设备。现有的SSD内部嵌入式事务协议有效的提高了事务的吞吐率,但是仍然引发了高的事务跟踪管理开销和长的事务恢复时间。本文针对已有研究的事务跟踪管理开销高和恢复时间长,在SSD内部采用有限容量的非易失性缓存,提出一种基于非易失性缓存的SSD嵌入式事务提交协议。针对实现在SSD内部的嵌入式事务提交协议移植性比较差,在Linux通用块设备层设计了一种基于闪存的通用事务协议。主要工作包括以下两个方面。首先,本文分析了基于闪存的嵌入式事务提交协议应该满足事务跟踪管理开销小、与事务中止比率无关和快速系统恢复的要求,同时需要保证垃圾回收机制的开销比较小。为了满足以上原则,提出了一种基于非易失性缓存的SSD嵌入式事务提交协议NVCTX。为了保证系统宕机后,能够快速的恢复,将未持久化的映射表和正在运行的事务元数据存放在非易失性缓存中。由于非易失性缓存的容量非常小,为了充分利用它,本文设计了缓存动态分配策略;针对真实负载中存在的长事务,设计了混合存储的方法来提高系统性能。本文在TxSSD模拟器上实现了该事务提交协议。实验结果表明NVCTX除了具有更好的性能,更短的系统恢复时间,还能够延长SSD使用寿命。其次,针对现有基于闪存的嵌入式事务提交协议都是实现在FTL固件中、与闪存硬件信息相关和移植性比较差等问题,本文设计了一种基于闪存的通用事务提交协议TxFlashLog。TxFlashLog采用Facebook的FlashCache框架,使用Log-structured的方式重新设计了数据的存储方式。通过逆向遍历为最后一个事务分配的数据块,判断事务是否成功提交,从而确保系统数据的一致性。实验结果表明,TxFlashLog的性能远高于在数据库系统、文件系统中普遍使用的WAL。并且TxFlashLog实现在一个可加载的内核模块中,具有通用性。