迅维网

标题: 数据结构对机械硬盘的优化在对固态硬盘上的优化同样适用么? [打印本页]

作者: pAxvOHtH    时间: 2018-5-10 14:15
标题: 数据结构对机械硬盘的优化在对固态硬盘上的优化同样适用么?
数据结构对机械硬盘的优化在对固态硬盘上的优化同样适用么?
作者: ovhmhmk    时间: 2018-5-10 14:15
你可以参考一下in-memory data base的做法。ssd可能效果还不太明显,但是放在内存里你就能发现,为什么要采取新的结构了。
作者: discuznt    时间: 2018-5-10 14:15
先说结论,优化可能不明显。

传统数据库都是基于磁盘(HDD)的, index和heapfile都是基于磁盘做优化的,磁盘IOPS比较低,所以以往的优化都是基本将随机读写转为大批量的顺序读写来做高吞吐率的优化。

B+-Tree的叶子节点就是一堆页表(page),对应到磁盘就是heapfile的扇区块,传统数据库用heapfile来做存储,但是数据量太大了,不停的检索效率还是不高怎么办,然后就把这些所有磁盘上的文件用链表连接起来啊,这个就是索引。也就是说,传统数据库的索引和heapfile文件存储基本都是针对磁盘来做的优化。

但是你现在想切换到SSD怎么办,SSD有很高的IOPS,随机读写性能不错,顺序读写略好于HDD的性能,写入很多时候还会带来写入放大的问题,但是你想把以往磁盘优化的包袱都丢了重新设计怎么可能。如果你的存储是SSD,那么我可以粗略的估计一下,高并发的读取可能性能有提升,写入多的则没多少明显区别。如果我针对磁盘数据库做了优化,将大量数据缓存在内存中,索引也建的很合适,那估计你用HDD和SSD也没多大区别。区别就是如果大量缓存不命中的时候,高并发场景下SSD也确实可能略优于HDD。

@vczh提到的内存数据库,现在内存越来越便宜,都可以当外存使用的时候,将数据缓存在内存中带来效率上的提升则要大的多了。这个时候呢,传统数据库的索引其实是针对磁盘heapfile一类的数据结构优化的,所以in-memory database的B+-Tree也慢慢改成了Cache Sensitive B+-Tree一类的数据结构,index也针对内存做了优化,变成hash index或者cache sensitive一类的index。至于传统数据库和现在内存数据库的区别,那又要列很长的一个专题来讲了
作者: 小詠。    时间: 2018-5-10 14:15
说不适用有一些绝对了。

事实上有借鉴的地方。例如,日志结构文件系统是针对磁盘不善随机写而设计的,flash SSD同样不擅长随机写,因此日志的思想被SSD广泛应用,在FTL和上层文件系统都可以看到日志的影子。

而b树这种结构也仍然有用,多叉树的深度更小,可以减少io次数,只要SSD仍比DRAM慢,就有意义。
作者: CCouQPvx    时间: 2018-5-10 14:15
很明显并不适用…  SSD的构造类似内存 而传统机械硬盘却用机械臂
besides,现在已经有在研发中的ssd专用文件系统了 就是为了摆脱对传统机械硬盘优化的现有文件系统

甚至有些存储阵列厂商专门推出了面向ssd的全新raid方式

归根到底,这是一场从马车进化到汽车的革命
对马车的优化是不会对汽车有什么好效果的
ssd与机械硬盘之间同理
作者: jeff963    时间: 2018-5-10 14:15
我推测可能会造成负优化,不然fuisionio当时搞个新的系统都能市值几亿美元,这套nvmkv好像就是去掉了那些东西直接新搞了一套系统。对于高强度的io来说,可能原有的文件管理方式不怎么科学




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4