2012-02-19 13 views
5

私はNTFSフォルダを持っており、このファイルは100,000〜1,000,000個のファイルを保持することができます。上限はこのanswer on NTFS performanceで説明しています。ファイル名の長さが巨大なNTFSフォルダインデックスに影響しますか?

1)彼らは、長いファイル名(通常は64〜100文字)を持つ:

私のファイルには、次のような特徴を持っています。

2)多くのファイルでは、最初の20〜40文字のファイル名の先頭部分は同じにすることができます。

長いファイル名は、名前、インデックスの断片化、またはインデックスの増加からファイルのレコードを検索する際にNTFSフォルダインデックスのパフォーマンスに影響しますか?

NTFSフォルダインデックスは、(報告されている)Bツリーです。私はソフトウェアを50,000個のファイルにテストしましたが、私はほとんどファイルシステムの変更をしないで、「ハッピーパス」テストを行っています。 1,000,000までのテストには、私のソフトウェアをノンストップで走らせるのに数週間かかります。

私はシミュレータの作成を検討しましたが、それを行う前に誰もが実際にこのような経験をしていますか?メモリ内の現在のLast Access Timeがディスクに格納されているLast Access Timeから複数の時間によって異なり、またはそのファイルへのすべてのインメモリ参照がなくなっているとき、どちらがより最近のものである場合

+0

何百万人にテストするのに何週間もかかると思うのはなぜですか?何百万ものファイルに対して予想される操作を実行する合成テストを作成することができます。また、テストを実行するよりもテストを書くのに多くの時間がかかります。 –

+0

私は64〜100文字のファイル名を長いファイル名とは考えていません。 – dmeister

+0

この記事からhttp://support.microsoft.com/kb/130694レガシー8.3ファイル名のサポートが有効になっていると、パフォーマンスが低下する可能性があります。 – NothingMore

答えて

1

NTFSディレクトリは、内部ノードと葉ノードの両方のデータを持つBTreesです。 「キープレフィックス圧縮」がないため、ファイル名の全文もノードに格納されます。

多くの同じプレフィックス文字を持つテストファイル名でこれを検索すると、ディレクトリの各「ページ」を見ても区別できる文字に遭遇する前に同じ比較が行われるので時間が無駄になります。あなたが名前の最も左の文字を最も変えることができるなら、それは大きな助けになるでしょう。

しかし、最終的に、ファイルシステムはいいデータベースではなく、データベースも良いファイルシステムではありません。あなたのファイルのサイズと予想される使用特性を考慮する必要があります。

2

NTFSは通常、ディスク上のファイルの属性を更新します。 Last Access Timeを無効にすると、フォルダとファイルのアクセス速度が向上します。

あなたはNTFSは、デフォルトでは、8.3の規則に準拠した短いファイル名を持つ第二のファイルのディレクトリエントリを作成し、NTFSドライブに長いファイル名を持つファイルを保存します。 NTFSがディレクトリ内のファイルを列挙する場合、長いファイル名に関連付けられた8.3の名前を検索する必要があります。 NTFSディレクトリはソートされた状態で管理されているため、対応する長いファイル名と8.3の名前は、通常、ディレクトリ一覧の隣にはありません。したがって、NTFSは、存在するすべてのファイルに対してディレクトリの線形検索を使用します。その結果、ディレクトリリストを実行するのに必要な時間は、というディレクトリの数のの平方根とともに増加します。 8.3ファイルの作成を無効にすると、パフォーマンスも向上します。 NtfsDisable8dot3NameCreationNtfsDisableLastAccessUpdateは、あなたがそれを余裕がある場合は、ので、代わりに伝統的なハードドライブのソリッドステートドライブ(SSD)を使用し、1

にその値を設定し、:

2つのレジストリキーを変更する必要があります性能はより良いものになりました。http://en.wikipedia.org/wiki/Solid-state_drive#Comparison_of_SSD_with_hard_disk_drivesをご覧ください。

関連する問題