大量小文件存儲提高效率要點詳解

在WEB開發中經常會遇到寫文件的情況,最常見的莫過於保存圖片文件。如果是文件數量不多,那我們完全沒有必要擔心其效率問題。但是當你有大量的用戶,大量的圖片的時候,我們怎麼存儲圖片文件,就會直接影響整個圖片存儲系統的效率。

通常,有一種說法是:如1個目錄下有10000個子文件,那麼讀取某個文件的速度將會明顯下降。那這種說法到底正確不正確呢?下面我們來看一下:

問:爲什麼單目錄下子文件過多會影響性能?如1個目錄下有10000個子文件,那麼讀取某個文件的速度將會明顯慢下來?這和文件索引有關嗎?索引中如何組織這些節點?

答:是的,與索引有關。1w個不算多。上百萬個就看出來了。但是建議不要超過10000個。

問:上百萬個慢是文件系統整體吧,那麼和當前目錄怎麼關係上呢?一個差不多的文件系統支持幾百萬個文件不算什麼

答:我是說一個目錄下,不分子目錄,直接放他幾十萬上百萬的文件,此時檢索這個目錄索引很費資源。

支持數量有限是因爲目錄這個對象本身容納的大小有被限制,目錄就是一個容納文件名和文件對應inode號的容器,被限制了,那麼容納的條目也就被限制了。

讀取某個文件速度沒影響。但是查找就費勁了。某些文件系統的索引機制不完善,甚至沒有什麼優化算法,致使每次查找耗費更多的時間。

從上面的問答我們可以知道,“如1個目錄下有10000個子文件,那麼讀取某個文件的速度將會明顯下降。”的說法是對的。那如何分目錄呢?

其實也比較簡單,可以按月份分,hash分,時間加hash組合分,至於用哪種方法,那就要看你的項目需求了。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章