Kontext Wir haben eine selbst erstellte Dateisystem-unterstützte Caching-Bibliothek. Gegenwärtig haben wir aufgrund einer großen Anzahl von Einträgen (z. B. bis zu 100.000) Leistungsprobleme mit einer Installation. Das Problem: Wir speichern alle fs-Einträge in einem "Cache-Verzeichnis". Sehr große Verzeichnisse funktionieren schlecht.NTFS-Verzeichnis hat 100 K Einträge. Wie viel Leistungssteigerung, wenn über 100 Unterverzeichnisse verteilt?
Wir versuchen, diese Einträge über Unterverzeichnisse zu verteilen - wie Git tut, z. 100 Unterverzeichnisse mit je ~ 1000 Einträgen.
Die Frage
Ich verstehe, dass kleinere Verzeichnisse Größen mit Dateisystemzugriff helfen.
Aber wird die "Verbreitung in Unterverzeichnisse" beschleunigen durchqueren alle Einträge, z. Aufzählen/Lesen aller 100.000 Einträge? I.e. Wenn wir den Cache aus dem FS-Speicher initialisieren/aufwärmen, müssen wir alle 100.000 Einträge durchlaufen (und alte Einträge löschen) können mehr als 10 Minuten dauern.
Wird die "Datenspreizung" verringert, verringert sich diese "Traversierungszeit". Zusätzlich kann/"traversal" tatsächlich veraltete Einträge löschen (z. B. älter als N Tage). Werden "Daten verteilen" die Löschzeiten verbessern?
Zusätzlicher Kontext -NTFS -Windows Familie O (Server 2003, 2008)
-Java J2ee Anwendung.
Ich/wir würden uns freuen, wenn wir Probleme bei der Skalierbarkeit des Dateisystems haben.
Vielen Dank im Voraus.
wird
p.s. Ich sollte kommentieren, dass ich die Werkzeuge und die Fähigkeit habe, das selbst zu testen, aber ich dachte mir, dass ich zuerst den Schwarmgeist für die Theorie und Erfahrung auswählen würde.
Haben Sie versucht, Dateisystem zu tunen?Zum Beispiel, kurze Dateinamen deaktivieren? –