The libmdbx build options.
| #define MDBX_64BIT_ATOMIC 1 |
| #define MDBX_64BIT_CAS 1 |
| #define MDBX_APPLE_SPEED_INSTEADOF_DURABILITY MDBX_OSX_WANNA_DURABILITY |
Choices MDBX_OSX_WANNA_DURABILITY or MDBX_OSX_WANNA_SPEED for OSX & iOS
| #define MDBX_ASSUME_MALLOC_OVERHEAD (sizeof(void *) * 2u) |
Presumed malloc size overhead for each allocation to adjust allocations to be more aligned.
| #define MDBX_AUXILARY_IOV_MAX 64 |
| #define MDBX_AVOID_MSYNC 0 |
Controls dirty pages tracking, spilling and persisting in MDBX_WRITEMAP.
In other words, disables in-memory database updating with consequent flush-to-disk/msync syscall.
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 goofy systems (Windows) which low performance of msync() and/or zany LRU tracking.
| #define MDBX_BUILD_METADATA "" |
| #define MDBX_CACHELINE_SIZE 64 |
| #define MDBX_CHECKING -1...3 |
Controls enabling of all kind of assertion-like checks. By default MDBX_CHECKING defined same as MDBX_DEBUG, but can be overridden just by a definition.
| #define MDBX_CPU_WRITEBACK_INCOHERENT 0 |
| #define MDBX_DEBUG 0...3 |
Controls enabling of debugging features, Mostly controls logging but also assertion checking via defining default value of MDBX_CHECKING option.
| #define MDBX_DISABLE_GNU_SOURCE 0 or 1 |
Disables using of GNU libc extensions.
| #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.
| #define MDBX_DML_PREALLOC_FOR_RADIXSORT 1 |
| #define MDBX_DPL_CACHE_NPAGES 0 |
| #define MDBX_DPL_PREALLOC_FOR_RADIXSORT 1 |
| #define MDBX_ENABLE_BIGFOOT 1 |
Enables chunking long list of retired pages during huge transactions commit to avoid use sequences of pages.
| #define MDBX_ENABLE_BUNCHES_REMOVAL 1 |
Enables fast deletion by whole b-tree branches feature.
| #define MDBX_ENABLE_DBI_LOCKFREE 1 |
Controls support of lock-free opening of DBI-handles and deferred destroying ones.
| #define MDBX_ENABLE_DBI_SPARSE 1 |
Controls a supporting sparse sets of DBI-handles to reduce transaction startup and processing overhead.
| #define MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS 0 |
Enables fake nested read-only transactions, which are much cheaper but do not restore the state of cursors in case of transaction abortion.
| #define MDBX_ENABLE_NON_READONLY_EXPORT 0 |
if enabled then instead of the returned error MDBX_REMOTE, only a warning is issued, when the database being opened in non-read-only mode is located in a file system exported via NFS.
| #define MDBX_ENABLE_PGET_STAT 1 |
Controls the collection of statistics on pages access operations for each transaction.
| #define MDBX_ENABLE_PGOP_STAT 1 |
Controls the collection of statistics on pages modification operations.
| #define MDBX_ENABLE_PROFGC 0 |
Controls profiling of GC search and updates.
| #define MDBX_ENABLE_REFUND 1 |
Controls online database auto-compactification during write-transactions.
| #define MDBX_ENV_CHECKPID 1 |
Controls checking PID against reuse DB environment after the fork()
| #define MDBX_ENVCOPY_WRITEBUF 1048576u |
Size of buffer used during copying a environment/database file.
| #define MDBX_FORCE_ASSERTIONS 0 |
Forces assertion checking corresponding to define MDBX_CHECKING as 2.
| #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.
| #define MDBX_HISTOGRAM_USING_128BIT 0 |
| #define MDBX_LOCKING MDBX_LOCKING_SYSV |
Advanced: Choices the locking implementation (autodetection by default).
| #define MDBX_LOCKING_POSIX1988 1988 |
POSIX-1 Shared anonymous semaphores for MDBX_LOCKING
| #define MDBX_LOCKING_POSIX2001 2001 |
POSIX-2001 Shared Mutexes for MDBX_LOCKING
| #define MDBX_LOCKING_POSIX2008 2008 |
POSIX-2008 Robust Mutexes for MDBX_LOCKING
| #define MDBX_LOCKING_SYSV 5 |
SystemV IPC semaphores for MDBX_LOCKING
| #define MDBX_LOCKING_WIN32FILES -1 |
Win32 File Locking API for MDBX_LOCKING
| #define MDBX_MMAP_INCOHERENT_CPU_CACHE 0 |
| #define MDBX_MMAP_INCOHERENT_FILE_WRITE 0 |
| #define MDBX_MMAP_NEEDS_JOLT 1 |
Assume system needs explicit syscall to sync/flush/write modified mapped memory.
| #define MDBX_MMAP_NEEDS_JOLT_CONFIG "AUTO=" MDBX_STRINGIFY(MDBX_MMAP_NEEDS_JOLT) |
| #define MDBX_NOSUCCESS_PURE_COMMIT 0 |
if enabled then treats the commit of pure (nothing changes) transactions as special cases and return MDBX_RESULT_TRUE instead of MDBX_SUCCESS.
| #define MDBX_OSX_WANNA_DURABILITY 0 |
Using fcntl(F_FULLFSYNC) with 5-10 times slowdown
| #define MDBX_OSX_WANNA_SPEED 1 |
Using fsync() with chance of data lost on power failure
| #define MDBX_PNL_PREALLOC_FOR_RADIXSORT 1 |
| #define MDBX_ROUNDING_TO_ALLOCATION_GRANULARITY 0 |
Forces rounding size of memory mapped regions and files to system allocation granularity rather to system page size.
In most operating systems, RAM is allocated in larger chunks consisting of several pages. Thus, rounding up to the size of the system page, rather than the actual size of the block used for memory allocation, does not save resources, but only hides what is really happening. On the other hand, system allocation granularity may depend not only on the type of operating system, but also on the version, settings, and amount of available resources (RAM), so increasing the rounding unit may lead to doubtful and unexpected behavior for the user.
| #define MDBX_TRUST_RTC 1 |
Does a system have battery-backed Real-Time Clock or just a fake.
| #define MDBX_TXN_CHECKOWNER 1 |
Controls checking transaction owner thread against misuse transactions from other threads.
| #define MDBX_UNALIGNED_OK 0 /* no unaligned access allowed */ |
| #define MDBX_USE_COPYFILERANGE 0 |
Advanced: Using copy_file_range() syscall (autodetection by default).
| #define MDBX_USE_FALLOCATE 0 |
Advanced: Using posix_fallocate() or fcntl(F_PREALLOCATE) on OSX (autodetection by default).
| #define MDBX_USE_FALLOCATE_CONFIG "AUTO=" MDBX_STRINGIFY(MDBX_USE_FALLOCATE) |
| #define MDBX_USE_MINCORE 1 |
Controls using Unix' mincore() to determine whether DB-pages are resident in memory.
| #define MDBX_USE_MINCORE_CONFIG "AUTO=" MDBX_STRINGIFY(MDBX_USE_MINCORE) |
| #define MDBX_USE_OFDLOCKS 0 |
Advanced: Using POSIX OFD-locks (autodetection by default).
| #define MDBX_USE_SENDFILE 0 |
Advanced: Using sendfile() syscall (autodetection by default).
| #define MDBX_WITHOUT_MSVC_CRT 0 |
Avoid dependence from MSVC CRT and use ntdll.dll instead.