コンテキスト ファイルシステムを基盤とする独自のキャッシング ライブラリがあります。現在、多数のエントリ (最大 100,000 など) が原因で、1 つのインストールでパフォーマンスの問題が発生しています。問題: すべての fs エントリを 1 つの「キャッシュ ディレクトリ」に格納します。非常に大きなディレクトリはパフォーマンスが低下します。
これらのエントリをサブディレクトリに分散することを検討しています--git のように、たとえば 100 個のサブディレクトリにそれぞれ ~ 1,000 個のエントリがあります。
質問
ディレクトリのサイズを小さくすると、ファイルシステムへのアクセスが容易になることを理解しています。
しかし、「サブディレクトリへの展開」は、すべてのエントリのトラバースを高速化しますか? たとえば、100,000 エントリすべてを列挙/読み取りますか? つまり、FS ストアからキャッシュを初期化/ウォームアップする場合、100,000 エントリすべてをトラバースする (および古いエントリを削除する) 必要があり、10 分以上かかる場合があります。
「データを分散する」ことで、この「走査時間」が短縮されます。さらに、この「トラバーサル」は実際に古いエントリ (たとえば、N 日より古い) を削除できます/実際に削除します。
追加のコンテキスト -NTFS -Windows ファミリ OS (Server 2003、2008)
-Java J2ee アプリケーション。
ファイルシステムのスケーラビリティの問題について教えていただければ幸いです。
前もって感謝します。
意思
ps 私はこれを自分でテストするためのツールと能力を持っているとコメントする必要がありますが、最初に理論と経験のためにハイブマインドを選ぶと思いました.