Bisherige Löschstrategie und damit verbundene Probleme
Autor: Yihua Mo
Datum: 2019-12-18
Bisherige Löschstrategie und damit verbundene Probleme
In Managing Data in Massive-Scale Vector Search Engine haben wir den Löschmechanismus von Datendateien erwähnt. Das Löschen umfasst das sanfte Löschen und das harte Löschen. Nach einer Löschoperation an einer Tabelle wird die Tabelle mit "soft-delete" markiert. Such- oder Aktualisierungsoperationen sind danach nicht mehr zulässig. Die Abfrageoperation, die vor dem Löschen beginnt, kann jedoch weiterhin ausgeführt werden. Die Tabelle wird zusammen mit den Metadaten und anderen Dateien erst dann wirklich gelöscht, wenn der Abfragevorgang abgeschlossen ist.
Wann also werden die mit "soft-delete" markierten Dateien wirklich gelöscht? Vor Version 0.6.0 galt die Strategie, dass eine Datei erst dann wirklich gelöscht wird, wenn sie 5 Minuten lang weich gelöscht wurde. Die folgende Abbildung zeigt die Strategie:
5 Minuten
Diese Strategie basiert auf der Annahme, dass Abfragen normalerweise nicht länger als 5 Minuten dauern und ist nicht zuverlässig. Wenn eine Abfrage länger als 5 Minuten dauert, schlägt die Abfrage fehl. Der Grund dafür ist, dass Milvus zu Beginn einer Abfrage Informationen über Dateien sammelt, die durchsucht werden können, und Abfrageaufgaben erstellt. Dann lädt der Abfrageplaner eine Datei nach der anderen in den Speicher und sucht eine Datei nach der anderen. Wenn eine Datei beim Laden einer Datei nicht mehr existiert, schlägt die Abfrage fehl.
Die Verlängerung der Zeit kann dazu beitragen, das Risiko von Abfragefehlern zu verringern, führt aber auch zu einem anderen Problem: Die Festplattennutzung ist zu groß. Der Grund dafür ist, dass Milvus beim Einfügen großer Mengen von Vektoren ständig Datendateien kombiniert und die kombinierten Dateien nicht sofort von der Festplatte entfernt werden, auch wenn keine Abfrage erfolgt. Wenn die Dateneinfügung zu schnell und/oder die Menge der eingefügten Daten zu groß ist, kann sich die zusätzliche Festplattennutzung auf mehrere Dutzend GB belaufen. Die folgende Abbildung ist ein Beispiel dafür:
Ergebnis
Wie in der vorherigen Abbildung gezeigt, wird der erste Stapel eingefügter Daten (insert_1) auf die Festplatte gespült und wird zu file_1, dann wird insert_2 zu file_2. Der für die Dateikombination zuständige Thread kombiniert die Dateien zu file_3. Anschließend werden file_1 und file_2 als "soft-delete" markiert. Der dritte Stapel von Einfügedaten wird zu file_4. Der Thread kombiniert file_3 und file_4 zu file_5 und markiert file_3 und file_4 als soft-delete.
In gleicher Weise werden insert_6 und insert_5 kombiniert. In t3 werden file_5 und file_6 als "soft-delete" markiert. Zwischen t3 und t4 sind viele Dateien zwar als "soft-delete" markiert, befinden sich aber noch auf der Festplatte. Nach t4 werden die Dateien tatsächlich gelöscht. Zwischen t3 und t4 beträgt die Festplattennutzung also 64 + 64 + 128 + 64 + 196 + 64 + 256 = 836 MB. Die eingefügten Daten sind 64 + 64 + 64 + 64 = 256 MB. Die Festplattennutzung beträgt das Dreifache der Größe der eingefügten Daten. Je schneller die Schreibgeschwindigkeit der Festplatte ist, desto höher ist die Festplattennutzung während eines bestimmten Zeitraums.
Verbesserungen der Löschstrategie in 0.6.0
Daher haben wir die Strategie zum Löschen von Dateien in v0.6.0 geändert. Hard-delete verwendet nicht mehr die Zeit als Auslöser. Stattdessen ist der Auslöser, wenn die Datei von keiner Aufgabe verwendet wird.
neue strategie
Angenommen, es werden zwei Stapel von Vektoren eingefügt. In t1 wird eine Abfrageanfrage gestellt, Milvus beschafft zwei abzufragende Dateien (file_1 und file_2, da file_3 noch nicht existiert). Wenn file_3 erzeugt wird, werden file_1 und file_2 als "soft-delete" markiert. Nach der Abfrage werden file_1 und file_2 von keiner anderen Aufgabe mehr verwendet, so dass sie in t4 hartgelöscht werden. Das Intervall zwischen t2 und t4 ist sehr klein und hängt von dem Intervall der Abfrage ab. Auf diese Weise werden ungenutzte Dateien rechtzeitig entfernt.
Bei der internen Implementierung wird die Referenzzählung, die Softwareingenieuren vertraut ist, verwendet, um festzustellen, ob eine Datei hart gelöscht werden kann. Zur Erklärung ein Vergleich: Wenn ein Spieler in einem Spiel noch Leben hat, kann er noch spielen. Wenn die Anzahl der Leben 0 wird, ist das Spiel vorbei. Milvus überwacht den Status jeder Datei. Wenn eine Datei von einer Aufgabe verwendet wird, wird der Datei ein Leben hinzugefügt. Wenn die Datei nicht mehr benutzt wird, wird ein Leben aus der Datei entfernt. Wenn eine Datei mit Soft-Delete markiert ist und die Anzahl der Leben 0 ist, ist die Datei bereit für Hard-Delete.
Verwandte Blogs
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word