mysql写放⼤_存储系统中的各种“写放
⼤”(WriteAmplification)
“写放⼤”(Write Amplification)在存储系统中是很常见的。但是,即使都是在存储系统中,“写放⼤”也有很多种,各种的写放⼤原理并不是很⼀样。下边根据⾃⼰的理解,进⾏了下总结,如有问题,恳请指正。
1. 读写单元较⼤导致的写放⼤
在⽂件系统中,读写单元固定,⽐如都是4K,这样,如果write函数写的数据⼩于4K,则要先把整块读⼊,再修改,再把新的4K整体写⼊(O_DIRECT情况除外)。这个过程可以称为 RMW (Read-Modify-Write),这就是File System的写放⼤问题。[1][2][5] (注意:Read-Modify-Write被更⼴泛地⽤在原⼦指令[3]和RAID[4]中。)
再如,在DBMS等应⽤层存储系统中,同样存在⾃⼰管理的读写单元,如MySQL的默认读写单元称为页,默认是16KB,所以⼀次读写只能以页的单位进⾏,这时,⼩于页的数据读写同样会带来整页的读写,进⽽造成了“写放⼤”,道理和⽂件系统是⼀样的。
2. RAID中的Read-Modify-Write造成的写放⼤
吕氏春秋孙叔敖疾将死原文及翻译如前段所述,RAID中更新⼀个块,需要额外读原始块、校验块,额外写校验块,所以多了两个读,⼀个写,也称为Read-Modify-
Write[4]。 这是由于校验块必须更新,且根据异或运算的可逆性,新校验块=新数据块^旧校验块^旧数据块。
个人网站模板设计3. SSD中闪存特性造成的写放⼤
在SSD中,⼀个block可以分为多个page,在读的时候,可以以page为单位,但是写的时候,只能以block为单位。因此写的单元⽐较⼤。在上层(⽐如⽂件系统)读写单元相同的情况下,同样是读写1个page的⼤⼩,读的话直接读就⾏,写的话却需要先把与要写page同⼀个block的数据全复制⼀遍,加上修改的page后,再⼀起写⼊block。写⼊的数据量远⽐实际的⼤,这就是SSD的写放⼤问题。
4. 存储系统⼀致性机制造成的同步写放⼤gestures是什么意思
在存储系统的很多层次中,都有保证系统crash consistency(⼀致性)的设计。因此,不管是应⽤层的存储系统(如DBMS、KV-store)、虚拟化层中的镜像管理、系统层的⽂件系统,甚⾄是硬件层的SSD FTL[7],都要通过强制同步各种元数据的写⼊顺序,或者利⽤redo log的思想,⽤journaling、log-structured或copy-on-write等策略保证元数据写⼊⽬的位置⽣效前先完整地⽣成⽇志,来保证系统崩溃
或断电时,元数据之间是⼀致。但是,如果多层存储系统重叠,由于⼀致性机制导致同步次数增加就会层层放⼤。
⽐如,运⾏在x86虚拟机中的levelDB,其⼀次更新操作就会(1)最终导致levelDB写log⽂件和写数据两次同步写,这两次写就⼜会(2)导致2次的Guest⽂件系统log写和2次Guest⽂件系统数据写,⼀共4次同步写,这4次写⼜会导致(3)虚拟化镜像管理层的4 x N次写(N取决于镜像为保证元数据crash consistency的同步次数,若是qcow2格式,N可能有5次之多[6]),最后导致(4)Host⽂件系统的4 x N x 2 = 8 x N次同步写。当然这是⼀种⽐较极端的情况,但实际应⽤中也应该存在。
5. 基于LSM树的KV系统的Merge操作造成的写放⼤
levelDB等KV存储⼴泛采⽤了LSM树等结构进⾏存储组织,其特点就是靠上的level的数据会最终被merge sort到下层,由于多数level在磁盘⽂件中,这也就导致了同⼀KV数据的总写放⼤,放⼤的倍数就是⼤约是level的数⽬。和前边4中写放⼤不同的是,这种写放⼤并⾮写操作时马上就会发⽣写放⼤,⽽是写操作发⽣时会潜在的导致“未来会发⽣”写放⼤,所以这种写放⼤只会导致整体写代价提升,不会影响实时的延迟性能,只可能会影响磁盘带宽或者在SSD做存储设备时影响闪存耐久。FAST 16上有篇论⽂也专门分析了这种写放⼤。[8]
[6] Q. Chen, L. Liang, Y. Xia, and H. Chen, “Mitigating Sync Amplification for Copy-on-write Virtual Di
sk,” 14th USENIX Conf. File Storage Technol. (FAST 16), pp. 241–247, 2016.
[7] J. Yang, N. Plasson, G. Gillis, N. Talagala, and S. Sundararaman, “Don’t stack your Log on my Log,”
[8] H. Lim, D. G. Andersen, M. Kaminsky, I. Labs, and S. Clara, “Towards Accurate and Fast Evaluation of Multi-Stage Log-structured Designs”, (FAST 16).
相关抹茶交易所app下载
mysql怎么读英语>webmvc模式