postgresql-hdd,ssd,效率
阿新 • • 發佈:2019-01-03
既有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的優勢就體現出來了。
https://dba.stackexchange.com/questions/78242/postgresql-maximize-performance-ssd