libmdbx 0.12.3 wurde bereits veröffentlicht und das sind seine Neuigkeiten

libmdbx

libmdbx ist eine extrem schnelle, kompakte, leistungsstarke, integrierte und freizügig lizenzierte transaktionale Schlüsselwertdatenbank.

Der Veröffentlichung der neuen Version von libmdbx 0.12.3 (MDBX) eine Implementierung einer kompakten, leistungsstarken eingebetteten Schlüsselwertdatenbank.

libmdbx ist eine tiefgreifende Überarbeitung des LMDB DBMS und übertrifft seinen Vorgänger in Sachen Zuverlässigkeit, Funktionsumfang und Leistung. Im Vergleich zu LMDB legt libmdbx großen Wert auf Codequalität, API-Stabilität, Tests und Selbsttests.

Wichtigste neue Funktionen von libmdbx 0.12.3

In dieser neuen Version können wir das finden implementiert eine dynamische Wahl zwischen gleichzeitigem Schreiben auf Festplatte und Schreiben normal gefolgt von fdatasync(), gesteuert durch die Option MDBX_opt_writethrough_threshold. In dauerhaften Modi können Daten auf zwei Arten auf die Festplatte geschrieben werden: Durchschreiben über einen Dateideskriptor, der mit O_DSYNC geöffnet wird, und normales Schreiben, gefolgt von fdatasync().

Die erste Methode Es ist bequemer, wenn Sie eine kleine Anzahl von Seiten schreiben und/oder wenn der Kommunikationskanal mit der Platte/dem Medium eine Verzögerung nahe Null hat. Die zweite Methode ist praktisch, wenn Sie viele Seiten schreiben müssen und/oder der Interaktionskanal eine erhebliche Verzögerung aufweist (Rechenzentren, Clouds). Mit der hinzugefügten Option MDBX_opt_writethrough_threshold können Sie zur Laufzeit einen Schwellenwert festlegen, um die Schreibmethode basierend auf dem Volumen und bestimmten Nutzungsbedingungen dynamisch auszuwählen.

Eine weitere Veränderung, die auffällt, ist die folgende Kompilierungsoption MDBX_MMAP_USE_MS_ASYNC hinzugefügt Dadurch können Sie die Verwendung eines msync(MS_ASYNC)-Systemaufrufs deaktivieren, der auf den meisten aktuellen Betriebssystemen nicht benötigt wird.

Daneben standardmäßig MDBX_MMAP_USE_MS_ASYNC=0(desaktiviert) auf Linux und anderen Systemen mit einheitlichem Seitencache. Dieses Verhalten (ohne Verwendung von msync(MS_ASYNC)) entspricht der hartcodierten LMDB-Logik. Infolgedessen übertrifft libmdbx in einfachen/naiven Benchmarks LMDB genauso wie in der tatsächlichen Verwendung.

Für alle Fälle ist es erwähnenswert, noch einmal daran zu erinnern, dass libmdbx unter Windows in Szenarien mit vielen kleinen Transaktionen voraussichtlich hinter LMDB zurückbleibt, da libmdbx absichtlich Dateisperren unter Windows verwendet, die langsam (schlecht implementiert) im Kernel von sind des Betriebssystems), sondern ermöglicht es Ihnen, Benutzer vor der großen Anzahl falscher Aktionen zu schützen, die zu einer Beschädigung der Datenbank führen.

Im MDBX_WRITEMAP-Zuordnungs-/Wiederverwendungsmodus erzeugen Seiten einen Seitenfehler, und die Seite wird von der Festplatte gelesen, selbst wenn der Seiteninhalt nicht benötigt wird (er wird überschrieben). Dies ist eine Folge der Arbeit des virtuellen Speichersubsystems, und die reguläre MADV_REMOVE-Behandlungsmethode funktioniert nicht auf allen Dateisystemen und ist oft teurer als die daraus resultierenden Einsparungen.

Darüber hinaus ist es erwähnenswert, dass dies auch der Fall ist libmdbx verwendet jetzt "Write-Ahead" solcher Seiten, die auf Systemen mit einem einheitlichen Seitencache bewirkt, dass die Daten "gepusht" werden, wodurch die Notwendigkeit entfällt, vom Datenträger zu lesen, wenn auf diese Seite aus dem Speicher zugegriffen wird. Die neue Funktionalität arbeitet in Verbindung mit der automatischen Handhabung des Read-Ahead- und Page-Presence-State-Cache im RAM über mincore().

Es wird auch erwähnt, dass Write-before-failure beim Zuweisen von Seiten für Lese- und Schreibzuweisungen implementiert wurde. Dies führt zu einer mehrfachen Reduzierung der Systemkosten und einer signifikanten Leistungssteigerung in den relevanten Anwendungsfällen, wenn: die Größe der Datenbank und die Datenmenge deutlich größer als der Arbeitsspeicher sind; MDBX_WRITEMAP-Modus wird verwendet; Nicht-kleine Transaktionen (viele hundert oder tausend Seiten werden im Verlauf einer Transaktion zugeordnet).

Von den anderen Änderungen das fällt auf:

  • Kontrolle für das Fehlen von LCK-Dateien mit alternativen Namen hinzugefügt.
  • Verbesserte Unterstützung für das automatische Zusammenführen von GC-Einträgen innerhalb von page_alloc_slowpath().
  • Beteiligte einen einzigen Cursor, um den GC zu durchsuchen. Geänderte interne Flags im Zusammenhang mit GC-Paging.
  • Verbesserte Vorbereitung der Reservierung vor dem Aktualisieren des GC mit aktiviertem BigFoot.
  • Die Verwendung von pnl_merge() für Fälle nicht überlappender zusammengeführter Listen optimiert.
  • Optimierte Unterstützung für geordnete Seitenlisten in dpl_append().
  • Verbesserte Leistung von mdbx_chk bei der Verarbeitung von Benutzereingaben auf @MAIN.
  • Modifizierte LRU-Markierungen
  • Die „Inkonsistenz“-Steuerung des Unified Page Cache wurde neu gestaltet, um den Overhead zu reduzieren.
  • Automatische Installation bereitgestellt MDBX_opt_rp_augment_limitabhängig von der Größe der Datenbank.
  • Option MDBX_opt_prefault_write_enable hinzugefügt, um das Aktivieren/Deaktivieren des Schreibens vor dem Fehler zu erzwingen.
  • Unterstützung für nicht druckbare Namen für subDb hinzugefügt.
    Es wurde eine explizite tls_model("local-dynamic")-Option hinzugefügt, um das Problem "Relocation R_X86_64_TPOFF32 gegen FOO kann nicht mit -shared verwendet werden" aufgrund eines Fehlers in Clang zu beheben, der dazu führte, dass der falsche ls_model-Modus verwendet wurde.

Schließlich wenn Sie mehr darüber wissen möchtenkönnen Sie die Details überprüfen im folgenden link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.