libmdbx  0.13.0.37 (2024-04-04T17:32:49+03:00)
One of the fastest compact embeddable key-value ACID database without WAL.
Build options

Macros

#define MDBX_OSX_WANNA_DURABILITY   0
 
#define MDBX_OSX_WANNA_SPEED   1
 
#define MDBX_OSX_SPEED_INSTEADOF_DURABILITY   MDBX_OSX_WANNA_DURABILITY
 
#define MDBX_ENABLE_MADVISE   1
 
#define MDBX_ENV_CHECKPID   1
 
#define MDBX_TXN_CHECKOWNER   1
 
#define MDBX_TRUST_RTC   1
 
#define MDBX_ENABLE_REFUND   1
 
#define MDBX_ENABLE_PROFGC   0
 
#define MDBX_ENABLE_PGOP_STAT   1
 
#define MDBX_ENABLE_MINCORE   1
 
#define MDBX_ENABLE_BIGFOOT   1
 
#define MDBX_DISABLE_VALIDATION   0
 
#define MDBX_PNL_PREALLOC_FOR_RADIXSORT   1
 
#define MDBX_DPL_PREALLOC_FOR_RADIXSORT   1
 
#define MDBX_AVOID_MSYNC   0
 
#define MDBX_ENABLE_DBI_SPARSE   1
 
#define MDBX_ENABLE_DBI_LOCKFREE   1
 
#define MDBX_PNL_ASCENDING   0
 
#define MDBX_WITHOUT_MSVC_CRT   1
 
#define MDBX_ENVCOPY_WRITEBUF   1048576u
 
#define MDBX_FORCE_ASSERTIONS   0
 
#define MDBX_ASSUME_MALLOC_OVERHEAD   (sizeof(void *) * 2u)
 
#define MDBX_HAVE_BUILTIN_CPU_SUPPORTS   0
 
#define MDBX_LOCKING_WIN32FILES   -1
 
#define MDBX_LOCKING_SYSV   5
 
#define MDBX_LOCKING_POSIX1988   1988
 
#define MDBX_LOCKING_POSIX2001   2001
 
#define MDBX_LOCKING_POSIX2008   2008
 
#define MDBX_LOCKING_BENAPHORE   1995
 
#define MDBX_LOCKING   MDBX_LOCKING_SYSV
 
#define MDBX_USE_OFDLOCKS   0
 
#define MDBX_USE_SENDFILE   0
 
#define MDBX_USE_COPYFILERANGE   0
 
#define MDBX_USE_SYNCFILERANGE   0
 
#define MDBX_CPU_WRITEBACK_INCOHERENT   0
 
#define MDBX_MMAP_INCOHERENT_FILE_WRITE   0
 
#define MDBX_MMAP_INCOHERENT_CPU_CACHE   0
 
#define MDBX_MMAP_USE_MS_ASYNC   0
 
#define MDBX_64BIT_ATOMIC   1
 
#define MDBX_64BIT_CAS   1
 
#define MDBX_UNALIGNED_OK   0 /* no unaligned access allowed */
 
#define MDBX_CACHELINE_SIZE   64
 
#define MDBX_DEBUG   0...7
 

Detailed Description

The libmdbx build options.

Macro Definition Documentation

◆ MDBX_64BIT_ATOMIC

#define MDBX_64BIT_ATOMIC   1

◆ MDBX_64BIT_CAS

#define MDBX_64BIT_CAS   1

◆ MDBX_ASSUME_MALLOC_OVERHEAD

#define MDBX_ASSUME_MALLOC_OVERHEAD   (sizeof(void *) * 2u)

Presumed malloc size overhead for each allocation to adjust allocations to be more aligned.

◆ MDBX_AVOID_MSYNC

#define MDBX_AVOID_MSYNC   0

Controls dirty pages tracking, spilling and persisting in MDBX_WRITEMAP mode. 0/OFF = Don't track dirty pages at all, don't spill ones, and use msync() to persist data. This is by-default on Linux and other systems where kernel provides properly LRU tracking and effective flushing on-demand. 1/ON = Tracking of dirty pages but with LRU labels for spilling and explicit persist ones by write(). This may be reasonable for systems which low performance of msync() and/or LRU tracking.

◆ MDBX_CACHELINE_SIZE

#define MDBX_CACHELINE_SIZE   64

◆ MDBX_CPU_WRITEBACK_INCOHERENT

#define MDBX_CPU_WRITEBACK_INCOHERENT   0

◆ MDBX_DEBUG

#define MDBX_DEBUG   0...7

Controls enabling of debugging features.

  • MDBX_DEBUG = 0 (by default) Disables any debugging features at all, including logging and assertion controls. Logging level and corresponding debug flags changing by mdbx_setup_debug() will not have effect.
  • MDBX_DEBUG > 0 Enables code for the debugging features (logging, assertions checking and internal audit). Simultaneously sets the default logging level to the MDBX_DEBUG value. Also enables MDBX_DBG_AUDIT if MDBX_DEBUG >= 2.

◆ MDBX_DISABLE_VALIDATION

#define MDBX_DISABLE_VALIDATION   0

Disable some checks to reduce an overhead and detection probability of database corruption to a values closer to the LMDB.

◆ MDBX_DPL_PREALLOC_FOR_RADIXSORT

#define MDBX_DPL_PREALLOC_FOR_RADIXSORT   1

◆ MDBX_ENABLE_BIGFOOT

#define MDBX_ENABLE_BIGFOOT   1

Enables chunking long list of retired pages during huge transactions commit to avoid use sequences of pages.

◆ MDBX_ENABLE_DBI_LOCKFREE

#define MDBX_ENABLE_DBI_LOCKFREE   1

Управляет механизмом отложенного освобождения и поддержки пути быстрого открытия DBI-хендлов без захвата блокировок.

◆ MDBX_ENABLE_DBI_SPARSE

#define MDBX_ENABLE_DBI_SPARSE   1

Управляет механизмом поддержки разреженных наборов DBI-хендлов для снижения накладных расходов при запуске и обработке транзакций.

◆ MDBX_ENABLE_MADVISE

#define MDBX_ENABLE_MADVISE   1

Controls using of POSIX' madvise() and/or similar hints.

◆ MDBX_ENABLE_MINCORE

#define MDBX_ENABLE_MINCORE   1

Controls using Unix' mincore() to determine whether DB-pages are resident in memory.

◆ MDBX_ENABLE_PGOP_STAT

#define MDBX_ENABLE_PGOP_STAT   1

Controls gathering statistics for page operations.

◆ MDBX_ENABLE_PROFGC

#define MDBX_ENABLE_PROFGC   0

Controls profiling of GC search and updates.

◆ MDBX_ENABLE_REFUND

#define MDBX_ENABLE_REFUND   1

Controls online database auto-compactification during write-transactions.

◆ MDBX_ENV_CHECKPID

#define MDBX_ENV_CHECKPID   1

Controls checking PID against reuse DB environment after the fork()

◆ MDBX_ENVCOPY_WRITEBUF

#define MDBX_ENVCOPY_WRITEBUF   1048576u

Size of buffer used during copying a environment/database file.

◆ MDBX_FORCE_ASSERTIONS

#define MDBX_FORCE_ASSERTIONS   0

Forces assertion checking

◆ MDBX_HAVE_BUILTIN_CPU_SUPPORTS

#define MDBX_HAVE_BUILTIN_CPU_SUPPORTS   0

If defined then enables integration with Valgrind, a memory analyzing tool. If defined then enables use C11 atomics, otherwise detects ones availability automatically. If defined then enables use the GCC's __builtin_cpu_supports() for runtime dispatching depending on the CPU's capabilities.

Note
Defining MDBX_HAVE_BUILTIN_CPU_SUPPORTS to 0 should avoided unless build for particular single-target platform, since on AMD64/x86 this disables dynamic choice (at runtime) of SSE2 / AVX2 / AVX512 instructions with fallback to non-accelerated baseline code.

◆ MDBX_LOCKING

#define MDBX_LOCKING   MDBX_LOCKING_SYSV

Advanced: Choices the locking implementation (autodetection by default).

◆ MDBX_LOCKING_BENAPHORE

#define MDBX_LOCKING_BENAPHORE   1995

BeOS Benaphores, aka Futexes for MDBX_LOCKING

◆ MDBX_LOCKING_POSIX1988

#define MDBX_LOCKING_POSIX1988   1988

POSIX-1 Shared anonymous semaphores for MDBX_LOCKING

◆ MDBX_LOCKING_POSIX2001

#define MDBX_LOCKING_POSIX2001   2001

POSIX-2001 Shared Mutexes for MDBX_LOCKING

◆ MDBX_LOCKING_POSIX2008

#define MDBX_LOCKING_POSIX2008   2008

POSIX-2008 Robust Mutexes for MDBX_LOCKING

◆ MDBX_LOCKING_SYSV

#define MDBX_LOCKING_SYSV   5

SystemV IPC semaphores for MDBX_LOCKING

◆ MDBX_LOCKING_WIN32FILES

#define MDBX_LOCKING_WIN32FILES   -1

Win32 File Locking API for MDBX_LOCKING

◆ MDBX_MMAP_INCOHERENT_CPU_CACHE

#define MDBX_MMAP_INCOHERENT_CPU_CACHE   0

◆ MDBX_MMAP_INCOHERENT_FILE_WRITE

#define MDBX_MMAP_INCOHERENT_FILE_WRITE   0

◆ MDBX_MMAP_USE_MS_ASYNC

#define MDBX_MMAP_USE_MS_ASYNC   0

◆ MDBX_OSX_SPEED_INSTEADOF_DURABILITY

#define MDBX_OSX_SPEED_INSTEADOF_DURABILITY   MDBX_OSX_WANNA_DURABILITY

◆ MDBX_OSX_WANNA_DURABILITY

#define MDBX_OSX_WANNA_DURABILITY   0

Using fcntl(F_FULLFSYNC) with 5-10 times slowdown

◆ MDBX_OSX_WANNA_SPEED

#define MDBX_OSX_WANNA_SPEED   1

Using fsync() with chance of data lost on power failure

◆ MDBX_PNL_ASCENDING

#define MDBX_PNL_ASCENDING   0

Controls sort order of internal page number lists. This mostly experimental/advanced option with not for regular MDBX users.

Warning
The database format depend on this option and libmdbx built with different option value are incompatible.

◆ MDBX_PNL_PREALLOC_FOR_RADIXSORT

#define MDBX_PNL_PREALLOC_FOR_RADIXSORT   1

◆ MDBX_TRUST_RTC

#define MDBX_TRUST_RTC   1

Does a system have battery-backed Real-Time Clock or just a fake.

◆ MDBX_TXN_CHECKOWNER

#define MDBX_TXN_CHECKOWNER   1

Controls checking transaction owner thread against misuse transactions from other threads.

◆ MDBX_UNALIGNED_OK

#define MDBX_UNALIGNED_OK   0 /* no unaligned access allowed */

◆ MDBX_USE_COPYFILERANGE

#define MDBX_USE_COPYFILERANGE   0

Advanced: Using copy_file_range() syscall (autodetection by default).

◆ MDBX_USE_OFDLOCKS

#define MDBX_USE_OFDLOCKS   0

Advanced: Using POSIX OFD-locks (autodetection by default).

◆ MDBX_USE_SENDFILE

#define MDBX_USE_SENDFILE   0

Advanced: Using sendfile() syscall (autodetection by default).

◆ MDBX_USE_SYNCFILERANGE

#define MDBX_USE_SYNCFILERANGE   0

Advanced: Using sync_file_range() syscall (autodetection by default).

◆ MDBX_WITHOUT_MSVC_CRT

#define MDBX_WITHOUT_MSVC_CRT   1

Avoid dependence from MSVC CRT and use ntdll.dll instead.