Unterschied zwischen FSDirectory-und MMap-Verzeichnis?
Kann einer mir erklären was ist der Unterschied zwischen FSDirectory und MMapDirectory? Ich möchte zum Aufwärmen meinem cache. Ich habe gelesen, dass das nützlich sein könnte, konnte aber nichts finden, wie dies wird hilfreich sein bei der Erwärmung der cache. Erklären Sie mir, wenn Sie eine Idee haben. Sogar die Zeiger sind willkommen.
Lucene-Dokumentation besagt, dass MMap verwendet virtuellen Speicher, um die Geschwindigkeit der Suche der Indizes.
Wie die speedp bis erreicht ist und was passiert, wenn meine Indizes sind groß, so dass Sie passen nicht in meinen virtuellen Speicher - >
- Den ersten Teil hast 🙂 Da Indizes zur Verfügung, die im virtuellen Speicher der look-up wird schneller sein. Helfen Sie mir, um herauszufinden, zweiten Teil der Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
MMapDirectory
ist eine konkrete Unterklassen der abstraktenFSDirectory
Klasse. Es benutzt memory-mapped-Dateien, um Zugriff auf die Informationen im index.Die anderen Optionen sind
SimpleFSDirectory
undNIOFSDirectory
, die verschiedene Methoden verwenden. Sie sollten einen Blick auf die Dokumentation fürFSDirectory
für eine kurze Erklärung, alle drei. Wie sehen Sie es,FSDirectory.open(File)
versucht, bei der Auswahl der besten Umsetzung für Ihre Umgebung.In meiner eigenen Erfahrung, ich habe nicht bemerkt keinen Unterschied in der Leistung zwischen
NIOFSDirectory
undMMapFSDirectory
sollten, aber Sie tun einige performance-Test mit Ihren eigenen Daten und Ihrem hardware-setup.In Fall, dass Sie am Ende mit
MMapFSDirectory
die virtuelle Speicher-und index-Größe könnte nur ein problem sein, auf einem 32-bit-Maschine (es sei denn, die Indizes sind, die größer als 2^48 bit = 32 TB).Wenn Ihre Indizes nicht im virtuellen Speicher, sind Sie wahrscheinlich besser dran mit FSDirectory. Das problem ist, dass mit MMapDirectory wenn passt es nicht in den virtuellen Speicher entspricht FSDirectory und mit dem Betriebssystem-caching-Algorithmus (OS-caching-Algorithmus ist wahrscheinlich besser, als das, was Sie können hand-code). ('Äquivalent', weil in beiden Fällen nur Teile des index werden im physikalischen Speicher auf einmal.)
Aber als "martin" oben gesagt, müssen Sie jedoch einige performance-Tests Ihrer eigenen.