数据库实验室林子雨老师小组2012—2013学年第二学期
第一次小组会议会议纪要
会议时间:2013年3月16日(星期六)上午9时到12时
会议地点:厦门大学海韵园科研二号楼303室
与会者:林子雨老师和苏志锋、赖明星、刘颖杰、唐振坤同学
会议纪要撰写:赖明星
(备注:唐振坤同学来实验室找人碰巧遇到报告,旁听了一个报告后离开)
会议内容:
厦门大学计算机系数据库实验室林子雨老师小组2012—2013学年第二学期第一次小组会议在2013年3月16日召开,会议首先由刘颖杰作的实验报告,随后林子雨老师对刘英杰同学的报告进行了点评,肯定了报告中的优点,指出不足之处;然后由赖明星同学作题为《Commit Flag: Supporting Efficient Transaction Recovery in Flash-Based DBMSs》的论文阅读报告,在报告过程中,大家进行了热烈的讨论。最后,林子雨老师高度肯定了赖明星的报告。
- 刘颖杰作题为《linux文件系统介绍》的实验报告
刘颖杰同学参加了一个由企业举办技术竞赛,选题为“文件系统的优化”,试图针对特定的应用,优化文件系统结构,以此来获得更好的性能。
首先介绍了linux下的文件系统;然后介绍了系统负载检测工具;最后通过比较不同的文件系统在不用的工作负载、不同的应用程序上的性能表现,指出该竞赛需要做的事情,以及需要达到的效果。
- 文件系统介绍
在这一部分,主要介绍了VFS文件结构,VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。
- Linux系统负载检测工具
在这一部分,刘颖杰同学向大家介绍了许多linux下系统负载检测工具。实验的目的是检测不同的文件系统对应用程序性能的影响,但是,首先要找到应用程序的性能瓶颈,如果,应用程序的性能瓶颈不在文件系统,那么所做的工作是没有意义的,所以需要使用这些系统负载检测工具。工具包括:uptime, top, mpstat, iostat, vmstat, free, dstat,sar等。
- 比较不同的文件系统在不同工作负载和不同应用程序下的表现
刘颖杰同学通过测试发现,对于全是小量写操作的应用,ext4的性能表现更好,对于多线程的应用ext2的性能更好。产生这种现象的原因还有待研究。通过这个观察,给实验找到了一个切入点,方便接下来的研究。
- 赖明星同学作题为《Commit Flag: Supporting Efficient Transaction Recovery in Flash-Based DBSMs》的论文阅读报告
赖明星同学此次的报告的主要内容是介绍闪存数据库的事务恢复策略,首先带领大家一起回顾了事务的概念和事务的ACID特性;然后介绍了闪存的特性,闪存的优点和闪存的缺点;之后介绍了两种传统的事务恢复方法,并分析了传统的事务恢复方法在闪存数据库中的不可行的原因;最后介绍了论文中提出了两种事务恢复协议,即CFC和AFC。
- 事务的概念
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务具有原子性、一致性、隔离性和持久性。其中,事务恢复的作用是保证事务的原子性与持久性,在系统发生故障或者认为中止事务时,能够回滚到事务执行之前的状态。
- 闪存的特性
闪存是一种非易失的存储器,具有如下优点:1)速度快;2)省电 3)重量轻;4)体积小;5)抗震。 同时,闪存还具有如下特性:1)写前擦除;2)异地更新;3)擦除操作以块为单位、读写操作以页为单位;4)读写效率对称;5)有限次擦除操作。
正是因为闪存永远上面的特性,传统的数据库系统不能直接应用到闪存设备上,需要针对闪存的特性修改或者设计已由的算法和数据结构,以充分利用闪存的优点,避免闪存的缺点。
- 传统的事务恢复策略
在传统的基于日志的恢复技术中,一个关键的原则是日志先写原则(WriteAheadLogging,WAL)。WAL要求在磁盘上的数据被更新之前先写入其更新日志,事务提交时先写入该事务的所有更新日志,再写入事务提交日志。虽然日志的写入较为频繁,但由于数据库中日志一般连续存储在一个独立区域,日志写入时磁盘几乎不需要寻道和旋转,因此,记录日志对系统性能的影响不大。
但是,在闪存中,写操作的代价大于读操作的代价,WAL会产生很多读操作,与此同时,日志一般都很小,而闪存中的读写操作都是以页为单位,如果将WAL应用到闪存数据库中,不但浪费存储空间,性能也不高。
另一种事物恢复机制是影子页技术,影子页(shadow paging)技术的思想如下:当一个事务需要修改逻辑页时,系统将分配一个新的空闲页作为该逻辑页的影子页,将修改后的数据保存在影子页中。影子页技术在传统的基于磁盘的数据库系统中应用不多,因为它需要地址映射、垃圾回收、异地更新,而这些功能都是闪存设备自身具有的功能,所以,影子页技术缺点在闪存数据库系统中不复存在。
- CFC和AFC
CFC和AFC的基本思想都是使用影子页(shadow paging)技术实现事务的更新操作,当一个事务需要修改逻辑页时,系统将分配一个新的空闲页作为该逻辑页的影子页,将修改后的数据保存在影子页中,并在影子页的带外区(spare area)中保存逻辑页号,事务的ID、事务的提交标识等信息。提交事务或中止事务时,通过影子页的带外区中事务提交标识,就可以跟踪事务的状态。在事务的更新、中止、提交过程中,都没有写入任何日志,减少了日志的数量,因此也减少了写操作和擦出操作的次数,最后提高了事务恢复的整体性能。
CFC和AFC之所以能够利用影子页的带外区来跟踪事务的状态,是因为它们利用了SLC型闪存具有部分页编程(partial page programming)的特征。所谓部分页编程,是指在不擦除逻辑页的情况下,修改逻辑页的带外区中的数据,即原地修改了物理页的带外区中的数据,以此实现了原地更新事务的状态。
(摄影:林子雨 下图为:苏志锋(左一)、赖明星(左二)、刘颖杰(左三,在做LINUX项目汇报)和唐振坤(左四))
(备注:唐振坤同学临时到实验室找同学,碰到做报告,就坐下来听了一会儿,然后离开)