大量小文件存储提高效率要点详解
在WEB開發中經常會遇到寫文件的情況,最常見的莫過于保存圖片文件。如果是文件數量不多,那我們完全沒有必要擔心其效率問題。但是當你有大量的用戶,大量的圖片的時候,我們怎么存儲圖片文件,就會直接影響整個圖片存儲系統的效率。
通常,有一種說法是:如1個目錄下有10000個子文件,那么讀取某個文件的速度將會明顯下降。那這種說法到底正確不正確呢?下面我們來看一下:
問:為什么單目錄下子文件過多會影響性能?如1個目錄下有10000個子文件,那么讀取某個文件的速度將會明顯慢下來?這和文件索引有關嗎?索引中如何組織這些節點?
答:是的,與索引有關。1w個不算多。上百萬個就看出來了。但是建議不要超過10000個。
問:上百萬個慢是文件系統整體吧,那么和當前目錄怎么關系上呢?一個差不多的文件系統支持幾百萬個文件不算什么
答:我是說一個目錄下,不分子目錄,直接放他幾十萬上百萬的文件,此時檢索這個目錄索引很費資源。
支持數量有限是因為目錄這個對象本身容納的大小有被限制,目錄就是一個容納文件名和文件對應inode號的容器,被限制了,那么容納的條目也就被限制了。
讀取某個文件速度沒影響。但是查找就費勁了。某些文件系統的索引機制不完善,甚至沒有什么優化算法,致使每次查找耗費更多的時間。
從上面的問答我們可以知道,“如1個目錄下有10000個子文件,那么讀取某個文件的速度將會明顯下降。”的說法是對的。那如何分目錄呢?
其實也比較簡單,可以按月份分,hash分,時間加hash組合分,至于用哪種方法,那就要看你的項目需求了。。。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的大量小文件存储提高效率要点详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 序列与映射的解包操作
- 下一篇: PYTHON如何在内存中生成ZIP文件