libmdbx 0.12.3 ja va ser alliberat i aquestes són les seves novetats

libmdbx

libmdbx és una base de dades transaccional de clau-valor extremadament ràpida, compacta, potent, integrada i amb llicència permissiva.

Es va donar a conèixer el llançament de la nova versió de libmdbx 0.12.3 (MDBX) una implementació duna base de dades clau-valor incrustada compacta dalt rendiment.

libmdbx ca una reelaboració profunda de LMDB DBMS i supera el seu antecessor en termes de confiabilitat, conjunt de funcions i rendiment. En comparació amb LMDB, libmdbx posa molt èmfasi en la qualitat del codi, l'estabilitat de l'API, les proves i les comprovacions automàtiques.

Principals novetats de libmdbx 0.12.3

En aquesta nova versió podrem trobar que es va implementar una elecció dinàmica entre escriptura simultània al disc i escriptura normal seguida de fdatasync(), controlada per l'opció MDBX_opt_writethrough_threshold. En els modes duradors, les dades es poden buidar al disc de dues maneres: escriptura simultània mitjançant un descriptor de fitxer obert amb O_DSYNCy escriptura normal seguida de fdatasync().

El primer mètode és més convenient quan sescriu un nombre reduït de pàgines i/o si el canal de comunicació amb el disc/mitjà té un retard proper a zero. El segon mètode és convenient si necessiteu escriure moltes pàgines i/o el canal d'interacció té un retard important (centres de dades, núvols). L'opció agregada MDBX_opt_writethrough_thresholdle us permet establir un llindar en temps d'execució per seleccionar dinàmicament el mètode d'enregistrament segons el volum i les condicions d'ús específiques.

Un altre dels canvis que es destaca és que s'ha afegit una opció de compilació MDBX_MMAP_USE_MS_ASYNC que permet deshabilitar l'ús d'una trucada al sistema msync(MS_ASYNC), que no és necessària a la gran majoria dels sistemes operatius actuals.

A més d'això s'ha col·locat com a predeterminat MDBX_MMAP_USE_MS_ASYNC=0(desactivat) a Linux i altres sistemes amb memòria cau de pàgina unificada. Aquest comportament (sense utilitzar msync(MS_ASYNC)) correspon a la lògica LMDB codificada. Com a resultat, en els punts de referència simples/ingenus, libmdbx supera l'LMDB de la mateixa manera que en l'ús real.

Per si de cas, val la pena assenyalar/recordar una vegada més que a Windows, s'espera que libmdbx es quedi enrere de LMDB en escenaris amb moltes transaccions petites, ja que libmdbx utilitza deliberadament bloquejos de fitxers a Windows, que són lents (mal implementats al nucli del sistema operatiu), però us permet protegir els usuaris de la gran quantitat d'accions incorrectes que provoquen danys a la base de dades.

A MDBX_WRITEMAP el mode d'assignació/reutilització, les pàgines generen un error de pàgina i la pàgina es llegeix del disc, fins i tot si el contingut de la pàgina no és necessari (se sobreescriurà). Això és una conseqüència del treball del subsistema de memòria virtual, i el mètode regular de tractament MADV_REMOVEno funciona en tots els sistemes de fitxers i sol ser més car que els estalvis resultants.

A més, també val la pena destacar que libmdbx ara fa servir «escriptura anticipada» d'aquestes pàgines, el que en sistemes amb una memòria cau de pàgina unificat fa que les dades s'«insereixin», eliminant la necessitat de llegir des del disc en accedir a aquesta pàgina de memòria. La nova funcionalitat funciona conjuntament amb la gestió automàtica de la lectura anticipada i la memòria cau d'estat de presència de pàgina en RAM, a través de mincore().

També s'esmenta que es va implementar l'escriptura prèvia a la falla en assignar pàgines per a assignacions de lectura i escriptura. Això porta a una reducció múltiple en els costos del sistema i un augment significatiu en el rendiment en els casos dús rellevants, quan: la mida de la base de dades i la quantitat de dades són significativament majors que la RAM; s'utilitza el mode MDBX_WRITEMAP; Transaccions no petites (s'assignen molts centenars o milers de pàgines durant una transacció).

Dels altres canvis que es destaquen:

  • Afegit control per l'absència de fitxers LCK amb noms alternatius.
  • Suport millorat per a la fusió automàtica de registres GC dins de page_alloc_slowpath().
  • Involucrat un sol cursor per buscar al GC. Indicadors interns modificats relacionats amb la paginació del GC.
  • Preparació millorada de la reserva abans d‟actualitzar el GC amb BigFoot habilitat.
  • S'ha optimitzat l'ús de pnl_merge() per a casos de llistes combinades que no se superposen.
  • Compatibilitat optimitzada per a la llista ordenada de pàgines a dpl_append().
  • Rendiment millorat de mdbx_chk en processar entrades d'usuari a @MAIN.
  • Marques LRU modificades
  • Control d'«incoherència» de memòria cau de pàgina unificada redissenyat per reduir la sobrecàrrega.
  • Instal·lació automàtica proporcionada MDBX_opt_rp_augment_limitdepenent de la mida de la base de dades.
  • S'ha afegit l'opció MDBX_opt_prefault_write_enableper forçar l'activació/desactivació de l'enregistrament previ a la falla.
  • S'ha afegit suport per a noms no imprimibles per a subDb.
    S'ha afegit una opció explícita tls_model(«local-dynamic»)per solucionar un problema » relocation R_X86_64_TPOFF32 against FOO cannot be used with -shared» a causa d'un error en Clang que causava l'ús del mode incorrecte ls_model.

Finalment, si estàs interessat en poder conèixer més a l'respecte, Pots consultar els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.