ΠΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libmdbx 0.13.1 (MDBX) Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΊΠ»Π°Ρ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠΎΠ΄ΡΡ Π½Π° libmdbx Π΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0. ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΡΡ ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π°ΠΊΡΡΠ°Π»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΡΡΡΠΊΠΈΡΡ ΠΠ»ΡΠ±ΡΡΡ 2000. ΠΠ° libmdbx ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π·Π²ΠΈΡΠΎ API Π·Π° C++, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ ΠΊΠ°ΡΠΎ Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno ΠΈ Scala.
ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ libmdbx ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π΄ΡΠ»Π±ΠΎΠΊΠ° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π‘Π£ΠΠ LMDB ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°Π²Π° ΡΠ²ΠΎΡ ΠΏΡΠ°ΡΠΎΠ΄ΠΈΡΠ΅Π» ΠΏΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ, Π½Π°Π±ΠΎΡ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ LMDB, Π² libmdbx ΡΠ΅ ΠΎΡΠ΄Π΅Π»Ρ Π³ΠΎΠ»ΡΠΌΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°, ΡΡΠ°Π±ΠΈΠ»Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° API, ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΠ Ρ Π½ΡΠΊΠΎΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΎ libmdbx ΠΏΡΠ΅Π΄Π»Π°Π³Π° ACID, ΡΡΡΠΎΠ³Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΡΠ΄ΡΠ° Π½Π° Π¦ΠΠ£. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΠ ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ (estimate ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ).
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- Π‘ΠΌΡΠ½Π° Π½Π° Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ OpenLDAP Public License Π½Π° Apache 2.0.
- Π Π°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° API Π½Π° ΠΊΡΡΡΠΎΡΠΈΡΠ΅ Ρ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΈ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΡΠ° <, =, > ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ mdbx_cursor_unbind() ΠΈ mdbx_txn_release_all_cursors() Π·Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΡΠΎΡΠΈΡΠ΅ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅. Π€ΡΠ½ΠΊΡΠΈΠΈ mdbx_cursor_scan() ΠΈ mdbx_cursor_scan_from() Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ.
- ΠΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΡΡΡΠΎΡΠΈΡΠ΅ Π·Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ, Π·Π° ΠΏΠΎ-ΡΠ΅Π΄ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
- ΠΡΠ΅Π½ΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° mdbx_chk Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡ mdbx_env_chk() Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΠ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Ρ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
- ΠΠΏΡΠΈΡΡΠ° MDBX_opt_gc_time_limit Π·Π° ΠΏΠΎ-Π³ΡΠ²ΠΊΠ°Π²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΎ Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ ΠΎΡ ΡΡΡΠ΅Π΄Π½ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π² GC.
- Π‘ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ DBI-Ρ Π΅Π½Π΄Π»ΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π°ΡΠ°/Π»Π΅Π½ΠΈΠ²Π°ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΎΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΡΡΠ·Π°Π½ΠΈΡΠ΅ Π½Π°Π±ΠΎΡΠΈ DBI-Ρ Π΅Π½Π΄Π»ΠΈ, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ ΠΎΡ ΠΎΠΏΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ MDBX_ENABLE_DBI_SPARSE, ΠΊΠΎΡΡΠΎ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
- ΠΠ°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° DBI-Ρ Π΅Π½Π΄Π»ΠΈ. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±ΡΡΠ·ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ ΠΎΡ ΠΎΠΏΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ MDBX_ENABLE_DBI_LOCKFREE, ΠΊΠΎΡΡΠΎ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° 'ΠΏΠ°ΡΠΊΠΈΡΠ°Π½Π΅' Π½Π° ΡΠ΅ΡΡΡΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Ρ ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈ MVCC-ΡΠ½ΠΈΠΌΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π·Π°Π±Π°Π²ΡΠ½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Π·Π° ΠΏΠ°ΡΠΊΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠΊΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΅ ΠΊΠ°ΠΊΡΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊΠ° ΠΈ ΠΏΠΎ-ΠΏΡΠΎΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡ ΠΏΠΎΠ²ΠΈΠΊ Handle-Slow-Readers. ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ, ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ mdbx_txn_park() ΠΈ mdbx_txn_unpark() ΠΈΠΌΠ°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΡΠΊΠ°Π½Π΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° 'ΡΠ°ΡΠΏΠ°ΡΠΊΠΎΠ²ΠΊΠ°' Π½Π° ΠΏΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. Π ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° mdbx_copy ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ -d ΠΈ -p.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ½Π° ΡΡΠ΅Π΄Π° Ρ ΠΠ Π² Π΄ΡΡΠ΅ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΡΠ»Π΅Π΄ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅/ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΡΡΠ΅Π· mdbx_env_resurrect_after_fork().
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ΅Π½ΠΎΠΌΠ΅ΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΡΡΠ΅Π· mdbx_dbi_rename() ΠΈ mdbx_dbi_rename2(). ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° mdbx_enumerate_tables() Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ.
- Π Π΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° MDBX_NOSTICKYTHREADS Π²ΠΌΠ΅ΡΡΠΎ MDBX_NOTLS Π·Π° ΡΠ»Π΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ Π»Π΅ΠΊΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ/Π½ΠΈΡΠΊΠΈ, ΡΠ΅Ρ Π½ΠΈΡ ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π°Π΅Π΄Π½ΠΎ Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
- ΠΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΠ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ UUID, Π½Π°Π»ΠΈΡΠ΅Π½ Π² ΠΏΠΎΠ»Π΅ΡΠΎ mi_dxbid Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° MDBX_envinfo, ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΡΡΠ΅Π· mdbx_env_info_ex(). Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΠ Π±Π΅Π· Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΎΡΠ²Π°ΡΡΠ½Π΅ ΡΡΠ΅Π· mdbx_preopen_snapinfo().
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π±Π΅Π· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ vprintf(), ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π»ΠΎΠ³Π²Π°Π½Π΅ΡΠΎ Π² ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Ρ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡΠΈ.
- ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π² API Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ mdbx_txn_copy2pathname() ΠΈ mdbx_txn_copy2fd().
- Π Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π° 'ΡΠ°Π±Π»ΠΈΡΠ°' Π²ΠΌΠ΅ΡΡΠΎ 'subDb'.
- ΠΠ±ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΎΠΏΡΠΈΠΈ MDBX_COALESCE ΠΈ MDBX_NOTLS. ΠΠ°ΠΌΡΠ½Π° Π½Π° ΡΠ±ΠΎΡΡΡΠ½Π°ΡΠ° ΠΎΠΏΡΠΈΡ MDBX_USE_VALGRIND Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠΈΠ΅ΡΠ°ΡΠ° ENABLE_MEMCHECK.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
