2021-01-26 07:26:09 +03:00
|
|
|
.\" Copyright 2015-2021 Leonid Yuriev <leo@yuriev.ru>.
|
2019-09-10 16:08:21 +03:00
|
|
|
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
|
mdbx: release v0.9.3
Acknowledgements:
-----------------
- [Mahlon E. Smith](http://www.martini.nu/) for [FreeBSD port of libmdbx](https://svnweb.freebsd.org/ports/head/databases/mdbx/).
- [장세연](http://www.castis.com) for bug fixing and PR.
- [Clément Renault](https://github.com/Kerollmops/heed) for [Heed](https://github.com/Kerollmops/heed) fully typed Rust wrapper.
- [Alex Sharov](https://github.com/AskAlexSharov) for bug reporting.
- [Noel Kuntze](https://github.com/Thermi) for bug reporting.
Removed options and features:
-----------------------------
- Drop `MDBX_HUGE_TRANSACTIONS` build-option (now no longer required).
New features:
-------------
- Package for FreeBSD is available now by Mahlon E. Smith.
- New API functions to get/set various options (https://github.com/erthink/libmdbx/issues/128):
- the maximum number of named databases for the environment;
- the maximum number of threads/reader slots;
- threshold (since the last unsteady commit) to force flush the data buffers to disk;
- relative period (since the last unsteady commit) to force flush the data buffers to disk;
- limit to grow a list of reclaimed/recycled page's numbers for finding a sequence of contiguous pages for large data items;
- limit to grow a cache of dirty pages for reuse in the current transaction;
- limit of a pre-allocated memory items for dirty pages;
- limit of dirty pages for a write transaction;
- initial allocation size for dirty pages list of a write transaction;
- maximal part of the dirty pages may be spilled when necessary;
- minimal part of the dirty pages should be spilled when necessary;
- how much of the parent transaction dirty pages will be spilled while start each child transaction;
- Unlimited/Dynamic size of retired and dirty page lists (https://github.com/erthink/libmdbx/issues/123).
- Added `-p` option (purge subDB before loading) to `mdbx_load` tool.
- Reworked spilling of large transaction and committing of nested transactions:
- page spilling code reworked to avoid the flaws and bugs inherited from LMDB;
- limit for number of dirty pages now is controllable at runtime;
- a spilled pages, including overflow/large pages, now can be reused and refunded/compactified in nested transactions;
- more effective refunding/compactification especially for the loosed page cache.
- Added `MDBX_ENABLE_REFUND` and `MDBX_PNL_ASCENDING` internal/advanced build options.
- Added `mdbx_default_pagesize()` function.
- Better support architectures with a weak/relaxed memory consistency model (ARM, AARCH64, PPC, MIPS, RISC-V, etc) by means [C11 atomics](https://en.cppreference.com/w/c/atomic).
- Speed up page number lists and dirty page lists (https://github.com/erthink/libmdbx/issues/132).
- Added `LIBMDBX_NO_EXPORTS_LEGACY_API` build option.
Fixes:
------
- Fixed missing cleanup (null assigned) in the C++ commit/abort (https://github.com/erthink/libmdbx/pull/143).
- Fixed `mdbx_realloc()` for case of nullptr and `MDBX_AVOID_CRT=ON` for Windows.
- Fixed the possibility to use invalid and renewed (closed & re-opened, dropped & re-created) DBI-handles (https://github.com/erthink/libmdbx/issues/146).
- Fixed 4-byte aligned access to 64-bit integers, including access to the `bootid` meta-page's field (https://github.com/erthink/libmdbx/issues/153).
- Fixed minor/potential memory leak during page flushing and unspilling.
- Fixed handling states of cursors's and subDBs's for nested transactions.
- Fixed page leak in extra rare case the list of retired pages changed during update GC on transaction commit.
- Fixed assertions to avoid false-positive UB detection by CLANG/LLVM (https://github.com/erthink/libmdbx/issues/153).
- Fixed `MDBX_TXN_FULL` and regressive `MDBX_KEYEXIST` during large transaction commit with `MDBX_LIFORECLAIM` (https://github.com/erthink/libmdbx/issues/123).
- Fixed auto-recovery (`weak->steady` with the same boot-id) when Database size at last weak checkpoint is large than at last steady checkpoint.
- Fixed operation on systems with unusual small/large page size, including PowerPC (https://github.com/erthink/libmdbx/issues/157).
TODO:
-----
- Engage new terminology (https://github.com/erthink/libmdbx/issues/137).
- Resolve few TODOs (https://github.com/erthink/libmdbx/issues/124, https://github.com/erthink/libmdbx/issues/127, https://github.com/erthink/libmdbx/issues/115).
- Finalize C++ API.
- Packages for [ROSA Linux](https://www.rosalinux.ru/), [ALT Linux](https://www.altlinux.org/), Fedora/RHEL, Debian/Ubuntu.
Change-Id: I414b8ef2e4b90e04fb344779c0e3f1b4bd1c06be
2021-02-02 22:18:21 +03:00
|
|
|
.TH MDBX_CHK 1 "2021-02-02" "MDBX 0.9.3"
|
2019-09-10 16:08:21 +03:00
|
|
|
.SH NAME
|
|
|
|
mdbx_chk \- MDBX checking tool
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B mdbx_chk
|
|
|
|
[\c
|
|
|
|
.BR \-V ]
|
|
|
|
[\c
|
|
|
|
.BR \-v [ v [ v ]]]
|
|
|
|
[\c
|
|
|
|
.BR \-n ]
|
|
|
|
[\c
|
|
|
|
.BR \-q ]
|
|
|
|
[\c
|
2019-12-05 01:43:57 +03:00
|
|
|
.BR \-c ]
|
|
|
|
[\c
|
2019-09-10 16:08:21 +03:00
|
|
|
.BR \-w ]
|
|
|
|
[\c
|
|
|
|
.BR \-d ]
|
|
|
|
[\c
|
|
|
|
.BR \-i ]
|
2019-12-05 01:43:57 +03:00
|
|
|
[\c
|
|
|
|
.BI \-s \ subdb\fR]
|
|
|
|
.BR \ dbpath
|
2019-09-10 16:08:21 +03:00
|
|
|
.SH DESCRIPTION
|
|
|
|
The
|
|
|
|
.B mdbx_chk
|
|
|
|
utility intended to check an MDBX database file.
|
|
|
|
.SH OPTIONS
|
|
|
|
.TP
|
|
|
|
.BR \-V
|
|
|
|
Write the library version number to the standard output, and exit.
|
|
|
|
.TP
|
|
|
|
.BR \-v
|
|
|
|
Produce verbose output, including summarize space and page usage statistics.
|
|
|
|
If \fB\-vv\fP is given, be more verbose, show summarized B-tree info
|
|
|
|
and space allocation.
|
|
|
|
If \fB\-vvv\fP is given, be more verbose, include summarized statistics
|
|
|
|
of leaf B-tree pages.
|
|
|
|
If \fB\-vvvv\fP is given, be even more verbose, show info of each page
|
|
|
|
during B-tree traversal and basic info of each GC record.
|
|
|
|
If \fB\-vvvvv\fP is given, turn maximal verbosity, display the full list
|
|
|
|
of page IDs in the GC records and size of each key-value pair of database(s).
|
|
|
|
.TP
|
|
|
|
.BR \-q
|
|
|
|
Be quiet; do not output anything even if an error was detected.
|
|
|
|
.TP
|
2019-12-05 01:43:57 +03:00
|
|
|
.BR \-c
|
|
|
|
Force using cooperative mode while opening environment, i.e. don't try to open
|
|
|
|
in exclusive/monopolistic mode. Only exclusive/monopolistic mode allow complete
|
|
|
|
check, including full check of all meta-pages and actual size of database file.
|
|
|
|
.TP
|
2019-09-10 16:08:21 +03:00
|
|
|
.BR \-w
|
|
|
|
Open environment in read-write mode and lock for writing while checking.
|
|
|
|
This could be impossible if environment already used by another process(s)
|
|
|
|
in an incompatible read-write mode. This allow rollback to last steady commit
|
|
|
|
(in case environment was not closed properly) and then check transaction IDs
|
|
|
|
of meta-pages. Otherwise, without \fB\-w\fP option environment will be
|
|
|
|
opened in read-only mode.
|
|
|
|
.TP
|
|
|
|
.BR \-d
|
|
|
|
Disable page-by-page traversal of B-tree. In this case, without B-tree
|
|
|
|
traversal, it is unable to check for lost-unused pages nor for double-used
|
|
|
|
pages.
|
|
|
|
.TP
|
|
|
|
.BR \-i
|
|
|
|
Ignore wrong order errors, which will likely false-positive if custom
|
|
|
|
comparator(s) was used.
|
2019-12-05 01:43:57 +03:00
|
|
|
.TP
|
|
|
|
.BR \-s \ subdb
|
|
|
|
Verify and show info only for a specific subdatabase.
|
2020-09-25 02:10:55 +03:00
|
|
|
.TP
|
|
|
|
.BR \-0 | \-1 | \-2
|
|
|
|
Using specific meta-page 0, or 2 for checking.
|
|
|
|
.TP
|
|
|
|
.BR \-t
|
|
|
|
Turn to a specified meta-page on successful check.
|
|
|
|
.TP
|
|
|
|
.BR \-T
|
|
|
|
Turn to a specified meta-page EVEN ON UNSUCCESSFUL CHECK!
|
|
|
|
.TP
|
|
|
|
.BR \-n
|
|
|
|
Open MDBX environment(s) which do not use subdirectories.
|
|
|
|
This is legacy option. For now MDBX handles this automatically.
|
2020-09-28 15:37:47 +03:00
|
|
|
|
2019-09-10 16:08:21 +03:00
|
|
|
.SH DIAGNOSTICS
|
|
|
|
Exit status is zero if no errors occur. Errors result in a non-zero exit status
|
|
|
|
and a diagnostic message being written to standard error
|
|
|
|
if no quiet mode was requested.
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR mdbx_stat (1),
|
|
|
|
.BR mdbx_copy (1),
|
|
|
|
.BR mdbx_dump (1),
|
|
|
|
.BR mdbx_load (1)
|
|
|
|
.SH AUTHOR
|
2020-02-18 02:22:47 +03:00
|
|
|
Leonid Yuriev <https://github.com/erthink>
|