libmdbx 0.12.3 вече е пусната и това са нейните новини

libmdbx

libmdbx е изключително бърза, компактна, мощна, интегрирана и разрешително лицензирана транзакционна база данни ключ-стойност.

В пускане на новата версия на libmdbx 0.12.3 (MDBX) реализация на компактна, високопроизводителна вградена база данни ключ-стойност.

libmdbx е дълбока преработка на LMDB DBMS и надминава своя предшественик по отношение на надеждност, набор от функции и производителност. В сравнение с LMDB, libmdbx поставя голям акцент върху качеството на кода, стабилността на API, тестването и самопроверките.

Основни нови функции на libmdbx 0.12.3

В тази нова версия можем да намерим това внедри динамичен избор между едновременен запис на диск и запис нормален, последван от fdatasync(), контролиран от опцията MDBX_opt_writethrough_threshold. В трайни режими данните могат да се изхвърлят на диск по два начина: едновременно записване чрез файлов дескриптор, отворен с O_DSYNC, и нормално писане, последвано от fdatasync().

Първият метод по-удобно е при писане на малък брой страници и/или ако комуникационният канал с диска/носителя има забавяне, близко до нула. Вторият метод е удобен, ако трябва да напишете много страници и/или каналът за взаимодействие има значително забавяне (центрове за данни, облаци). Добавената опция MDBX_opt_writethrough_threshold ви позволява да зададете праг по време на изпълнение, за да изберете динамично метода на запис въз основа на обема и специфичните условия на използване.

Друга промяна, която се откроява, е тази добави опция за компилиране MDBX_MMAP_USE_MS_ASYNC което ви позволява да деактивирате използването на системно извикване msync(MS_ASYNC), което не е необходимо на по-голямата част от текущите операционни системи.

Освен него по подразбиране MDBX_MMAP_USE_MS_ASYNC=0(хора с увреждания) на Linux и други системи с унифициран кеш на страници. Това поведение (без използване на msync(MS_ASYNC)) съответства на твърдо кодирана логика на LMDB. В резултат на това при прости/наивни бенчмаркове libmdbx превъзхожда LMDB по същия начин, както при реална употреба.

За всеки случай си струва да се отбележи/запомни още веднъж, че в Windows се очаква libmdbx да изостава от LMDB в сценарии с много малки транзакции, тъй като libmdbx умишлено използва заключвания на файлове в Windows, които са бавни (зле внедрени). в ядрото на операционната система), но ви позволява да защитите потребителите от големия брой грешни действия, които водят до повреда на базата данни.

В режим на разпределение/повторно използване на MDBX_WRIITEMAP страниците генерират грешка на страницата и страницата се чете от диска, дори ако съдържанието на страницата не е необходимо (то ще бъде презаписано). Това е следствие от работата на подсистемата на виртуалната памет, а обикновеният метод на лечение MADV_REMOVE не работи на всички файлови системи и често е по-скъп от получените спестявания.

Освен това си струва да се отбележи, че libmdbx сега използва "write-ahead" на такива страници, което на системи с унифициран кеш на страници кара данните да бъдат "избутвани", елиминирайки необходимостта от четене от диска при достъп до тази страница от паметта. Новата функционалност работи във връзка с автоматичното управление на кеша за състояние на четене напред и на присъствие на страници в RAM чрез mincore().

Също така се споменава, че писането преди повреда е внедрено при разпределяне на страници за разпределения за четене и запис. Това води до многократно намаляване на системните разходи и значително повишаване на производителността в съответните случаи на използване, когато: размерът на базата данни и количеството данни са значително по-големи от RAM; Използва се режим MDBX_WRIITEMAP; Немалки транзакции (много стотици или хиляди страници се разпределят в хода на транзакция).

От останалите промени които се открояват:

  • Добавен е контрол за липсата на LCK файлове с алтернативни имена.
  • Подобрена поддръжка за автоматично сливане на GC записи в page_alloc_slowpath().
  • Включва един курсор за търсене в GC. Променени вътрешни флагове, свързани с GC страниране.
  • Подобрена подготовка на резервацията преди актуализиране на GC с активиран BigFoot.
  • Оптимизирано е използването на pnl_merge() за случаи на обединени списъци без припокриване.
  • Оптимизирана поддръжка за подреден списък от страници в dpl_append().
  • Подобрена производителност на mdbx_chk при обработка на потребителско въвеждане на @MAIN.
  • Модифицирани LRU маркировки
  • Преработен контрол за „несъответствие“ в унифицирания кеш на страниците, за да се намалят режийните разходи.
  • Автоматично инсталиране осигурява MDBX_opt_rp_augment_limit в зависимост от размера на базата данни.
  • Добавена е опция MDBX_opt_prefault_write_enable за принудително активиране/деактивиране на запис преди грешка.
  • Добавена е поддръжка за непечатаеми имена за subDb.
    Добавена е изрична опция tls_model("local-dynamic") за коригиране на проблем "преместване R_X86_64_TPOFF32 срещу FOO не може да се използва с -shared" поради грешка в Clang, която е причинила използването на грешен режим ls_model.

И накрая, ако се интересувате да научите повече за това, можете да проверите подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.