postgresql-hdd,ssd,效率

既有ssd又有hdd是将数据存储到ssd还是将索引存储到ssd的效率更高呢?
一种说法是索引是随机扫描,将索引放入ssd效率会增高,
一种说法是将数据放入ssd效率更高
 
最好的情况是将数据和索引都放到ssd,效率可以提高5-6倍。
为什么在ssd上面放置索引效率没有ssd存表效率高呢?
1.索引通常比表小,因此更容易将索引存储到内存,内存中效率很高。
2.所以级别(在btree中)的页面通常很热(hot),因此保留在内存中
3.当扫描索引时,很多实际的io本质上是顺序的(特别是对于叶子节点)
这样做的结果是,针对索引的I/O的惊人数量要么根本不会发生(由于缓存),要么是顺序的。另一方面,索引是表上随机I/O的一个很好的来源
 
 
当然,这仅仅是一个简单的例子,例如,对于截然不同的工作负载,结论可能会有所不同。同样,由于SSD更昂贵,系统往往在硬盘驱动器上拥有的磁盘空间比在SSD驱动器上更多,因此在索引时,表可能无法容纳在SSD上。在这些情况下,需要更精细的放置 - 例如,不仅要考虑对象的类型,还要考虑它的使用频率(并且只将大量使用的表移动到SSD),甚至是表的子集(例如通过逐渐移动旧的从SSD到HDD的数据)。
最好的情况是将数据和索引都放到ssd,效率可以提高5-6倍。
如果磁盘不是很充足,内存也不是很充足,那么索引可能就不能热加载到内存,这个时候索引放ssd的优势就体现出来了。
 
 

猜你喜欢

转载自www.cnblogs.com/zhangfx01/p/10215753.html