Commit Graph

2769 Commits

Author SHA1 Message Date
Leonid Yuriev
49296cad14 mdbx: refactor mdbx_drop_tree() & drop mdbx_retire pgno().
Change-Id: I37f33d7a11e958ccc1c48a6af31599deb677038d
2021-04-10 22:20:31 +03:00
Leonid Yuriev
dfed1dbc17 mdbx: refactoring: merge page_retire() and page_loose().
Change-Id: I4b47c11eedad6ef1b83dbf3d34977cdd8fa79505
2021-04-10 22:20:24 +03:00
Leonid Yuriev
0dd27a46ee mdbx++: minor fix constexpr/inline for slice::invalid().
Change-Id: I48864a61f4fef711117b2e04ac92656267e2d229
2021-04-10 17:48:40 +03:00
Leonid Yuriev
20299f87cb mdbx: minor refine get_reasonable_db_maxsize().
Change-Id: I5d654940a325c0c3966a59a37615820587c52c78
2021-04-10 17:48:31 +03:00
Leonid Yuriev
7f5cbf7dd8 mdbx: avoid float-point ops in prev commit.
Change-Id: I7fadc5096f49502c01a60436840bb1a87dfe27bd
2021-04-07 14:29:14 +03:00
Leonid Yuriev
c14e4235ee mdbx: guess a reasonable maximum DB size for the default upper limit of geometry.
Fixes https://github.com/erthink/libmdbx/issues/183

Change-Id: Ic7b616e229d3008fda49e5a04121e22997ac53ea
2021-04-07 05:23:06 +03:00
Leonid Yuriev
8ff44026c3 mdbx: fix minor MSVC warning.
Change-Id: Ia7ec726b8a516d2115b727960cf7fbc874882cd4
2021-04-07 04:52:38 +03:00
Leonid Yuriev
43caec46e7 mdbx-ci: more spelling exclusions.
Change-Id: I96c26956ba0c290792d415fe90d91e2a30bcf630
2021-04-07 04:52:38 +03:00
Leonid Yuriev
024ccf6826 mdbx: extract mdbx_get_sysraminfo().
Change-Id: I8821009572d275a3b5d2d8729f605b115a80e50a
2021-04-07 04:45:53 +03:00
Leonid Yuriev
0f76002dde mdbx: merge branch master into devel.
Change-Id: I6b34ecb6e1d9d1bc2832012b89ebc94fc186b32c
2021-04-06 03:08:30 +03:00
Leonid Yuriev
9405d51716 mdbx-ci: more spelling exclusions.
Change-Id: Iee349afa591e4204f4758ef1faeca93c2d897df2
2021-04-06 01:19:14 +03:00
Leonid Yuriev
2ecfbdb1bd mdbx: add ETH address for donations.
Change-Id: Ia0a302f5374de0d50af421dfbca985ddae7e407f
2021-04-06 01:19:11 +03:00
Leonid Yuriev
6ee62650af mdbx: add comment for unsure_equal().
Change-Id: I0629b5cd4812415c3a240047ec4202f33dddd189
2021-03-30 01:41:34 +03:00
Leonid Yuriev
66df21ba78 mdbx: add a TODO/FIXME note (first r/w opening while r/o present).
Change-Id: I5351628aa22313fffd6c2501a2aa16f2c5f573d5
2021-03-30 01:38:24 +03:00
Leonid Yuriev
4f62b059ef mdbx: minor clarify TODO (configurable threshold to keep reserve space for large/overflow pages).
Change-Id: I73a3847852466eb3e34927c5648435c8cf283c0e
2021-03-30 01:34:46 +03:00
Leonid Yuriev
af9b7b5605 mdbx: MAJOR rework page splitting (squashed).
Basically, this (squashed) commit introduces:
 - An "auto-appending" feature upon insertion for both ascending and
   descending key sequences. As a result, the optimality of page filling
   increases significantly (more densely, less slackness) while
   inserting ordered sequences of keys,
 - A "splitting at middle" for more balanced page tree on average.

---

1. Using left/middle/right tactics for finding the split point of a page:
   - If a key is inserted close to an edge of page,
     then the page splits at that edge;
   - Otherwise a page splits at the middle,
     which leads to a more balanced tree on average;
   - So I expect a better behavior on average,
     but actually effects should be studied further practically.

2. New code for calculating the midpoint of a page split.

3. APPEND-flags no longer affect choosing the page split point.

4. Added left-side splitting by inserting a pure page with a new entry.

Change-Id: Id7441acfc8c90636e3be6bc00a0df15714690f3c
2021-03-29 00:49:34 +03:00
Leonid Yuriev
e0795227e4 mdbx: merge branch master into devel.
Change-Id: Ic78177f8bc5ab3dc1826e4e00599f1a7d3087dda
2021-03-29 00:00:43 +03:00
Leonid Yuriev
0c3fb1804e mdbx-test: add SPECULUM_CURSORS build macro/option.
Change-Id: I5dc9ccde725ce49db4fb0e94be02e9c7b48f1291
2021-03-28 23:34:41 +03:00
Leonid Yuriev
3ed99f8c20 mdbx: minor refine/fix cursor_check() internals.
Change-Id: I89ea9a5336b88e7d0201a7f59d66a8bc53849172
2021-03-28 23:34:41 +03:00
Leonid Yuriev
636c212235 mdbx: minor refine page_check().
Change-Id: I91cae256c47064422d26663078c8c5a6f619a197
2021-03-28 23:34:41 +03:00
Leonid Yuriev
19575e799f mdbx-test: add stochastic reverse mode to the append scenario.
Change-Id: If506aff63b6c517922ae621f7805b58c9282e946
2021-03-28 23:34:41 +03:00
Leonid Yuriev
83cd4f7d58 mdbx: separete DKBUF and DKBUF_DEBUG.
Change-Id: I8d90909ce9c5faec176a12e68f7bab6c2ea1d317
2021-03-28 23:34:41 +03:00
Leonid Yuriev
bfc9921305 mdbx: change branch-node size to ~1/2 of the page size.
Change-Id: I0f455ec04170d792ecc933aa501b4ec1ca9b08c0
2021-03-28 23:34:41 +03:00
Leonid Yuriev
72f3a2fc3f mdbx: check zero-size of the first key on a branch-page.
Change-Id: I2be86ea79f04ea8baea92a6e56ef6b22691eeda0
2021-03-28 22:25:40 +03:00
Leonid Yuriev
3c389d17e8 mdbx: minor refine page_rebalance().
Change-Id: I066e7a22d62c45f9e80fb4735f55f02ca34d3ee3
2021-03-28 22:25:30 +03:00
Leonid Yuriev
2524a0e749 mdbx: output page type from bad_page().
Change-Id: I11e4931de26015204c26c116e91e4a0e02f909b4
2021-03-28 22:25:24 +03:00
Leonid Yuriev
8d3b878965 mdbx: fix minor spelling.
Change-Id: Ibab66dc18c92b0ac4fa705e10befb34e268ee1f7
2021-03-28 22:25:17 +03:00
Leonid Yuriev
9e5fe2c61d mdbx-tools: add to mdbx_chk output the number of keys/entries from a pages.
Change-Id: I7c2d779fa89848287f8b5a0fa1ff2fc89c5a9b8c
2021-03-28 22:24:56 +03:00
Leonid Yuriev
8bb4a4039d mdbx: add PayPal for donations. 2021-03-28 03:49:54 +03:00
Leonid Yuriev
50e729a687 mdbx-make: add install-strip and install-no-strip targets.
Resolves https://github.com/erthink/libmdbx/pull/180
2021-03-26 14:45:32 +03:00
Leonid Yuriev
c77494e2aa mdbx: fix mdbx_env_set_option() for dp_initial & dp_limit.
Fixes https://github.com/erthink/libmdbx/issues/179

Change-Id: I925104a45148112e0ce94a069a7468e2b4fc8209
2021-03-24 19:27:31 +03:00
Leonid Yuriev
b71206d119 mdbx: update Changelog.
Change-Id: I2277465a701afebbe512ca45335ce90179b945bd
2021-03-19 19:13:22 +03:00
Leonid Yuriev
f32435e9b1 mdbx-doc: actualize MDBX's limits.
Change-Id: I8ad4a47a30df7f900bf5396bff616ce58fcea101
2021-03-19 18:31:15 +03:00
Leonid Yuriev
422d030820 mdbx: fix minor casting warning.
Change-Id: I9615b3928bb1b88743b42be9d82a986255d1f074
2021-03-19 03:16:47 +03:00
Leonid Yuriev
b3798a9116 mdbx: mdbx_node_search() micro-optimization.
Change-Id: I48064ca284aa89b16e418afdc20d09c5dd6e5cba
2021-03-19 00:17:14 +03:00
Leonid Yuriev
dcb806302f mdbx-ci: fix spelling action failure.
Change-Id: I89b5639edfcd5d7a5c8fc1d98cc484cc22e175bd
2021-03-18 23:29:21 +03:00
Leonid Yuriev
cb0ee2373d mdbx: add mdbx_cursor_set_ex() with non-optional exactp argument.
Resolves https://github.com/erthink/libmdbx/pull/178

Change-Id: I24dc7d44116b5e2e02b5b75375be24c647a762f5
2021-03-18 23:15:55 +03:00
Leonid Yuriev
d0b3c45f04 mdbx: refine check_dbi().
Change-Id: I6d51c27c3acdea1b93861f67a32cd3c1ee13dc0d
2021-03-18 23:12:56 +03:00
Leonid Yuriev
2149d893bc mdbx-doc: add the output of limits to the mdbx_example.
Change-Id: I1bbe194e80f888c37a6a082927444b6897babcc4
2021-03-17 01:27:23 +03:00
Leonid Yuriev
6c9e8817b7 mdbx-posix: use MAP_NORESERVE.
Change-Id: I6a46a5bfa5ed3fa5c3f26775fcba346f71106ad1
2021-03-17 01:27:23 +03:00
Leonid Yuriev
0be7616521 mdbx-posix: minor around MAP_FIXED_NOREPLACE.
Change-Id: I0991a5ed1e1706442675d9514932fad30de372f8
2021-03-17 01:27:23 +03:00
Leonid Yuriev
0fd90de97e mdbx-posix: add check for _POSIX_MAPPED_FILES.
Change-Id: Ie7ee8464346cd57d8cd96b6c5df23da8ed37cbbb
2021-03-17 01:27:19 +03:00
Leonid Yuriev
7dfd3f18f8 mdbx: rework nodes/keys limitations.
Change-Id: Id0515346d762d4554102775f26a0fc33f3c0f29e
2021-03-17 01:18:28 +03:00
Leonid Yuriev
b164baa1f5 mdbx: add MDBX_ENABLE_MADVISE build option/macro.
Change-Id: I6174ec62e4811e891663b8ae0f7918aa09baf5ab
2021-03-17 01:18:18 +03:00
Leonid Yuriev
ecc755881e mdbx: move key generator linearization into actor::review_params().
Change-Id: I35492f64b6b5eae9702d26f3e0ba9df31f57a4af
2021-03-16 02:44:28 +03:00
Leonid Yuriev
f4781b63a8 mdbx-test: add params-review by actors.
Change-Id: I79fb6cb19c73facd8cc8cefc3bf3101e9d0c672c
2021-03-16 01:45:49 +03:00
Leonid Yuriev
b48958c177 mdbx-test: add registry for test cases.
Change-Id: Ie9f069dbe6846af170628945db9897ec690fc3da
2021-03-15 20:52:18 +03:00
Leonid Yuriev
f3356d1f86 mdbx-test: add --keylen=N and --datalen=N options.
Change-Id: I7bb4fdbc3ab5445ca3ecc8065eb90620d1958a1e
2021-03-15 14:20:07 +03:00
Leonid Yuriev
0e0682ff7a mdbx: add link to Ruby bindings.
Change-Id: Idc3f23bec7fc4673cd614eb64a6b3788ae7acd92
2021-03-15 03:36:51 +03:00
Leonid Yuriev
bd2c3d1c9c mdbx-tools: minor refine/cleanup.
Change-Id: I94974246c1212cf98bf3d31419e8a0fc24c5decc
2021-03-15 01:31:38 +03:00