为了充分发挥SSD的特性,和它适配最好的引擎就是一路append 引擎。这样的追加写能够便于SSD内部一次可以找到多块连续的物理page, 减少内部逻辑地址到物理地址转换索引的更新。但于此同时,相对平坦式地存储引擎,会比较快写到文件末尾。这就对GC的设计提出来比较高的要求。 下面是个人总结的几点建议。
对覆盖写的数据部分尽快trim
在SSD内部trim 是一个比较轻的操作,但trim的越多,内部空闲Page就会增加越多,因而有利于新来的写请求更快找到空闲块。因此它收益很明显。 比较简单的GC策略是,周期性第统计哪些数据段需要删除,然后一起删除。显然这种方法和在覆盖写更新索引的时候
就删去数据相比,显得慢不少。
根据系统负载情况调整GC频率
总体原则如下:
用户IO负载越大,GC做得越慢,避免对整体带宽带来太多影响;
用户IO负载越小,GC做得越频繁,充分利用SSD的闲时带宽。;