多くのファイルがあるディレクトリに新しいファイルを追加するのに時間がかかるのはなぜですか?

多くのファイルがあるディレクトリに新しいファイルを追加するのに時間がかかるのはなぜですか?

2011年、私たちはユニークな問題に直面しました。

私たちは、顧客の処理ツールの1つが1時間あたり約20,000項目を処理するのに長い時間がかかることを確認しました。 3日間毎月300万を超えるファイルを処理する必要があるため、これは私たちにとって問題になります。

また、これは約10%に相当するCPU使用率の問題ではないという事実も確認しました。このツールは、地域の短縮コード(たとえば、デリーの場合はDEL)という名前のフォルダにファイルを書き込むために使用されます。処理が完了すると、フォルダには最終的に5,000〜200,000のファイルを含めることができます。

また、ファイルがフォルダに書き込まれたときに、以前にそのフォルダに書き込まれたファイル(〜10000より大きい場合)をサブフォルダに削除すると、作業速度が大幅に速くなることが観察されました。

結局のところ、ツールベンダーが市外局番(DEL / 110012など)を含むフォルダの郵便番号名が指定されたフォルダにファイルを書き込むようにツールを修正したときの問題を修正しました。各フォルダには最大約2000個のファイルが含まれます。

編集1:使用されるオペレーティングシステムはHP-UXです。編集2:ファイルサイズは平均25〜50KBの範囲です。

それでは、ファイル数が多いディレクトリに新しいファイルを追加するのに時間がかかるのはなぜですか?

ベストアンサー1

ファイルが多い場合は、新しいファイルを追加するときにさらにファイルを検索/シャッフルする必要があります。この問題を解決する1つの方法は、ディレクトリを分割することです。つまり、名前の最初の文字のサブディレクトリを作成することです(または同様に、git(1)はオブジェクトハッシュの最初の2桁の16進数をファイル名として使用します。Fedoraパッケージリポジトリは最初の文字を使用します。文字小文字)。

おすすめ記事