libmdbx 0.13.1.27 (2024-10-08T18:14:15+03:00)
One of the fastest compact embeddable key-value ACID database without WAL.
 
Loading...
Searching...
No Matches
Checking and Recovery

Classes

struct  MDBX_chk_line_t
 Виртуальная строка отчета, формируемого при проверке целостности базы данных. More...
 
struct  MDBX_chk_issue_t
 Проблема обнаруженная при проверке целостности базы данных. More...
 
struct  MDBX_chk_scope_t
 Иерархический контекст при проверке целостности базы данных. More...
 
struct  MDBX_chk_histogram
 Гистограмма с некоторой статистической информацией, собираемой при проверке целостности БД. More...
 
struct  MDBX_chk_table_t
 Информация о некоторой таблицей ключ-значение, при проверке целостности базы данных. More...
 
struct  MDBX_chk_context_t
 Контекст проверки целостности базы данных. More...
 
struct  MDBX_chk_callbacks_t
 Набор функций обратного вызова используемых при проверке целостности базы данных. More...
 
union  MDBX_chk_scope_t.usr_z
 
union  MDBX_chk_scope_t.usr_v
 
union  MDBX_chk_scope_t.usr_o
 
struct  MDBX_chk_histogram.ranges
 
struct  MDBX_chk_table_t.pages
 
struct  MDBX_chk_table_t.histogram
 
struct  MDBX_chk_context_t.result
 

Typedefs

typedef struct MDBX_chk_user_table_cookie MDBX_chk_user_table_cookie_t
 Пользовательский тип для привязки дополнительных данных, связанных с некоторой таблицей ключ-значение, при проверке целостности базы данных.
 

Enumerations

enum  MDBX_chk_flags_t {
  MDBX_CHK_DEFAULTS = 0 , MDBX_CHK_READWRITE = 1 , MDBX_CHK_SKIP_BTREE_TRAVERSAL = 2 , MDBX_CHK_SKIP_KV_TRAVERSAL = 4 ,
  MDBX_CHK_IGNORE_ORDER = 8
}
 Флаги/опции для проверки целостности базы данных. More...
 
enum  MDBX_chk_severity_t {
  MDBX_chk_severity_prio_shift = 4 , MDBX_chk_severity_kind_mask = 0xF , MDBX_chk_fatal = 0x00u , MDBX_chk_error = 0x11u ,
  MDBX_chk_warning = 0x22u , MDBX_chk_notice = 0x33u , MDBX_chk_result = 0x44u , MDBX_chk_resolution = 0x55u ,
  MDBX_chk_processing = 0x56u , MDBX_chk_info = 0x67u , MDBX_chk_verbose = 0x78u , MDBX_chk_details = 0x89u ,
  MDBX_chk_extra = 0x9Au
}
 Уровни логирование/детализации информации, поставляемой через обратные вызовы при проверке целостности базы данных. More...
 
enum  MDBX_chk_stage_t {
  MDBX_chk_none , MDBX_chk_init , MDBX_chk_lock , MDBX_chk_meta ,
  MDBX_chk_tree , MDBX_chk_gc , MDBX_chk_space , MDBX_chk_maindb ,
  MDBX_chk_tables , MDBX_chk_conclude , MDBX_chk_unlock , MDBX_chk_finalize
}
 Стадии проверки, сообщаемые через обратные вызовы при проверке целостности базы данных. More...
 

Functions

LIBMDBX_API int mdbx_txn_lock (MDBX_env *env, bool dont_wait)
 Acquires write-transaction lock. Provided for custom and/or complex locking scenarios.
 
LIBMDBX_API int mdbx_txn_unlock (MDBX_env *env)
 Releases write-transaction lock. Provided for custom and/or complex locking scenarios.
 
LIBMDBX_API int mdbx_env_open_for_recovery (MDBX_env *env, const char *pathname, unsigned target_meta, bool writeable)
 Open an environment instance using specific meta-page for checking and recovery.
 
LIBMDBX_API int mdbx_env_turn_for_recovery (MDBX_env *env, unsigned target_meta)
 Turn database to the specified meta-page.
 
LIBMDBX_API int mdbx_env_chk (MDBX_env *env, const MDBX_chk_callbacks_t *cb, MDBX_chk_context_t *ctx, const MDBX_chk_flags_t flags, MDBX_chk_severity_t verbosity, unsigned timeout_seconds_16dot16)
 Проверяет целостность базы данных.
 
LIBMDBX_API int mdbx_env_chk_encount_problem (MDBX_chk_context_t *ctx)
 Вспомогательная функция для подсчета проблем детектируемых приложением, в том числе, поступающим к приложению через логирование.
 

Detailed Description

Basically this is internal API for mdbx_chk tool, etc. You should avoid to use it, except some extremal special cases.


Class Documentation

◆ MDBX_chk_line_t

struct MDBX_chk_line_t

Виртуальная строка отчета, формируемого при проверке целостности базы данных.

See also
mdbx_env_chk()
Class Members
char * begin
struct MDBX_chk_context * ctx
uint8_t empty
char * end
char * out
uint8_t scope_depth
uint8_t severity

◆ MDBX_chk_issue_t

struct MDBX_chk_issue_t

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

See also
mdbx_env_chk()
Class Members
const char * caption
size_t count
struct MDBX_chk_issue * next

◆ MDBX_chk_scope_t

struct MDBX_chk_scope_t

Иерархический контекст при проверке целостности базы данных.

See also
mdbx_env_chk()
Class Members
struct MDBX_chk_internal * internal
MDBX_chk_issue_t * issues
const void * object
MDBX_chk_stage_t stage
size_t subtotal_issues
union MDBX_chk_scope_t.usr_o usr_o
union MDBX_chk_scope_t.usr_v usr_v
union MDBX_chk_scope_t.usr_z usr_z
MDBX_chk_severity_t verbosity

◆ MDBX_chk_histogram

struct MDBX_chk_histogram

Гистограмма с некоторой статистической информацией, собираемой при проверке целостности БД.

See also
mdbx_env_chk()
Class Members
size_t amount
size_t count
size_t ones
size_t pad
struct MDBX_chk_histogram.ranges ranges[9]

◆ MDBX_chk_table_t

struct MDBX_chk_table_t

Информация о некоторой таблицей ключ-значение, при проверке целостности базы данных.

See also
mdbx_env_chk()
Class Members
MDBX_chk_user_table_cookie_t * cookie
MDBX_db_flags_t flags
struct MDBX_chk_table_t.histogram histogram
int id
size_t lost_bytes
MDBX_val name
struct MDBX_chk_table_t.pages pages
size_t payload_bytes

◆ MDBX_chk_context_t

struct MDBX_chk_context_t

Контекст проверки целостности базы данных.

See also
mdbx_env_chk()
Class Members
MDBX_env * env
struct MDBX_chk_internal * internal
struct MDBX_chk_context_t.result result
MDBX_chk_scope_t * scope
uint8_t scope_nesting
MDBX_txn * txn

◆ MDBX_chk_callbacks_t

struct MDBX_chk_callbacks_t

Набор функций обратного вызова используемых при проверке целостности базы данных.

Функции обратного вызова предназначены для организации взаимодействия с кодом приложения. В том числе, для интеграции логики приложения проверяющей целостность стуктуры данных выше уровня ключ-значение, подготовки и структурированного вывода информации как о ходе, так и результатов проверки.

Все функции обратного вызова опциональны, неиспользуемые указатели должны быть установлены в nullptr.

Note
Данный API еще не зафиксирован, в последующих версиях могут быть незначительные доработки и изменения.
See also
mdbx_env_chk()

Public Attributes

bool(* check_break )(MDBX_chk_context_t *ctx)
 
int(* scope_push )(MDBX_chk_context_t *ctx, MDBX_chk_scope_t *outer, MDBX_chk_scope_t *inner, const char *fmt, va_list args)
 
int(* scope_conclude )(MDBX_chk_context_t *ctx, MDBX_chk_scope_t *outer, MDBX_chk_scope_t *inner, int err)
 
void(* scope_pop )(MDBX_chk_context_t *ctx, MDBX_chk_scope_t *outer, MDBX_chk_scope_t *inner)
 
void(* issue )(MDBX_chk_context_t *ctx, const char *object, uint64_t entry_number, const char *issue, const char *extra_fmt, va_list extra_args)
 
MDBX_chk_user_table_cookie_t *(* table_filter )(MDBX_chk_context_t *ctx, const MDBX_val *name, MDBX_db_flags_t flags)
 
int(* table_conclude )(MDBX_chk_context_t *ctx, const MDBX_chk_table_t *table, MDBX_cursor *cursor, int err)
 
void(* table_dispose )(MDBX_chk_context_t *ctx, const MDBX_chk_table_t *table)
 
int(* table_handle_kv )(MDBX_chk_context_t *ctx, const MDBX_chk_table_t *table, size_t entry_number, const MDBX_val *key, const MDBX_val *value)
 
int(* stage_begin )(MDBX_chk_context_t *ctx, MDBX_chk_stage_t)
 
int(* stage_end )(MDBX_chk_context_t *ctx, MDBX_chk_stage_t, int err)
 
MDBX_chk_line_t *(* print_begin )(MDBX_chk_context_t *ctx, MDBX_chk_severity_t severity)
 
void(* print_flush )(MDBX_chk_line_t *)
 
void(* print_done )(MDBX_chk_line_t *)
 
void(* print_chars )(MDBX_chk_line_t *, const char *str, size_t len)
 
void(* print_format )(MDBX_chk_line_t *, const char *fmt, va_list args)
 
void(* print_size )(MDBX_chk_line_t *, const char *prefix, const uint64_t value, const char *suffix)
 

Member Data Documentation

◆ check_break

bool(* MDBX_chk_callbacks_t::check_break) (MDBX_chk_context_t *ctx)

◆ issue

void(* MDBX_chk_callbacks_t::issue) (MDBX_chk_context_t *ctx, const char *object, uint64_t entry_number, const char *issue, const char *extra_fmt, va_list extra_args)

◆ print_begin

MDBX_chk_line_t *(* MDBX_chk_callbacks_t::print_begin) (MDBX_chk_context_t *ctx, MDBX_chk_severity_t severity)

◆ print_chars

void(* MDBX_chk_callbacks_t::print_chars) (MDBX_chk_line_t *, const char *str, size_t len)

◆ print_done

void(* MDBX_chk_callbacks_t::print_done) (MDBX_chk_line_t *)

◆ print_flush

void(* MDBX_chk_callbacks_t::print_flush) (MDBX_chk_line_t *)

◆ print_format

void(* MDBX_chk_callbacks_t::print_format) (MDBX_chk_line_t *, const char *fmt, va_list args)

◆ print_size

void(* MDBX_chk_callbacks_t::print_size) (MDBX_chk_line_t *, const char *prefix, const uint64_t value, const char *suffix)

◆ scope_conclude

int(* MDBX_chk_callbacks_t::scope_conclude) (MDBX_chk_context_t *ctx, MDBX_chk_scope_t *outer, MDBX_chk_scope_t *inner, int err)

◆ scope_pop

void(* MDBX_chk_callbacks_t::scope_pop) (MDBX_chk_context_t *ctx, MDBX_chk_scope_t *outer, MDBX_chk_scope_t *inner)

◆ scope_push

int(* MDBX_chk_callbacks_t::scope_push) (MDBX_chk_context_t *ctx, MDBX_chk_scope_t *outer, MDBX_chk_scope_t *inner, const char *fmt, va_list args)

◆ stage_begin

int(* MDBX_chk_callbacks_t::stage_begin) (MDBX_chk_context_t *ctx, MDBX_chk_stage_t)

◆ stage_end

int(* MDBX_chk_callbacks_t::stage_end) (MDBX_chk_context_t *ctx, MDBX_chk_stage_t, int err)

◆ table_conclude

int(* MDBX_chk_callbacks_t::table_conclude) (MDBX_chk_context_t *ctx, const MDBX_chk_table_t *table, MDBX_cursor *cursor, int err)

◆ table_dispose

void(* MDBX_chk_callbacks_t::table_dispose) (MDBX_chk_context_t *ctx, const MDBX_chk_table_t *table)

◆ table_filter

MDBX_chk_user_table_cookie_t *(* MDBX_chk_callbacks_t::table_filter) (MDBX_chk_context_t *ctx, const MDBX_val *name, MDBX_db_flags_t flags)

◆ table_handle_kv

int(* MDBX_chk_callbacks_t::table_handle_kv) (MDBX_chk_context_t *ctx, const MDBX_chk_table_t *table, size_t entry_number, const MDBX_val *key, const MDBX_val *value)

◆ MDBX_chk_scope_t.usr_z

union MDBX_chk_scope_t.usr_z
Class Members
size_t number
void * ptr

◆ MDBX_chk_scope_t.usr_v

union MDBX_chk_scope_t.usr_v
Class Members
size_t number
void * ptr

◆ MDBX_chk_scope_t.usr_o

union MDBX_chk_scope_t.usr_o
Class Members
size_t number
void * ptr

◆ MDBX_chk_histogram.ranges

struct MDBX_chk_histogram.ranges
Class Members
size_t amount
size_t begin
size_t count
size_t end

◆ MDBX_chk_table_t.pages

struct MDBX_chk_table_t.pages
Class Members
size_t all
size_t branch
size_t empty
size_t leaf
size_t nested_branch
size_t nested_leaf
size_t nested_subleaf
size_t other

◆ MDBX_chk_table_t.histogram

struct MDBX_chk_table_t.histogram
Class Members
struct MDBX_chk_histogram deep Tree deep histogram.
struct MDBX_chk_histogram key_len Keys length histogram.
struct MDBX_chk_histogram large_pages Histogram of large/overflow pages length.
struct MDBX_chk_histogram nested_tree Histogram of nested trees height, span length for GC.
struct MDBX_chk_histogram val_len Values length histogram.

◆ MDBX_chk_context_t.result

struct MDBX_chk_context_t.result
Class Members
size_t alloc_pages
size_t backed_pages
size_t gc_pages
size_t gc_tree_problems
size_t kv_tree_problems
size_t problems_gc
size_t problems_kv
size_t problems_meta
size_t processed_pages
uint64_t recent_txnid
size_t reclaimable_pages
uint64_t steady_txnid
size_t table_processed
size_t table_total
const MDBX_chk_table_t *const * tables

Указатель на массив размером table_total с указателями на экземпляры структур MDBX_chk_table_t с информацией о всех таблицах ключ-значение, включая MainDB и GC/FreeDB.

size_t total_payload_bytes
size_t total_problems
size_t total_unused_bytes
size_t tree_problems
size_t unused_pages

Typedef Documentation

◆ MDBX_chk_user_table_cookie_t

typedef struct MDBX_chk_user_table_cookie MDBX_chk_user_table_cookie_t

Пользовательский тип для привязки дополнительных данных, связанных с некоторой таблицей ключ-значение, при проверке целостности базы данных.

See also
mdbx_env_chk()

Enumeration Type Documentation

◆ MDBX_chk_flags_t

Флаги/опции для проверки целостности базы данных.

Note
Данный API еще не зафиксирован, в последующих версиях могут быть незначительные доработки и изменения.
See also
mdbx_env_chk()
Enumerator
MDBX_CHK_DEFAULTS 

Режим проверки по-умолчанию, в том числе в режиме только-чтения.

MDBX_CHK_READWRITE 

Проверка в режиме чтения-записи, с захватом блокировки и приостановки пишущих транзакций.

MDBX_CHK_SKIP_BTREE_TRAVERSAL 

Пропустить обход дерева страниц.

MDBX_CHK_SKIP_KV_TRAVERSAL 

Пропустить просмотр записей ключ-значение.

MDBX_CHK_IGNORE_ORDER 

Игнорировать порядок ключей и записей.

Note
Требуется при проверке унаследованных БД созданных с использованием нестандартных (пользовательских) функций сравнения ключей или значений.

◆ MDBX_chk_severity_t

Уровни логирование/детализации информации, поставляемой через обратные вызовы при проверке целостности базы данных.

See also
mdbx_env_chk()
Enumerator
MDBX_chk_severity_prio_shift 
MDBX_chk_severity_kind_mask 
MDBX_chk_fatal 
MDBX_chk_error 
MDBX_chk_warning 
MDBX_chk_notice 
MDBX_chk_result 
MDBX_chk_resolution 
MDBX_chk_processing 
MDBX_chk_info 
MDBX_chk_verbose 
MDBX_chk_details 
MDBX_chk_extra 

◆ MDBX_chk_stage_t

Стадии проверки, сообщаемые через обратные вызовы при проверке целостности базы данных.

See also
mdbx_env_chk()
Enumerator
MDBX_chk_none 
MDBX_chk_init 
MDBX_chk_lock 
MDBX_chk_meta 
MDBX_chk_tree 
MDBX_chk_gc 
MDBX_chk_space 
MDBX_chk_maindb 
MDBX_chk_tables 
MDBX_chk_conclude 
MDBX_chk_unlock 
MDBX_chk_finalize 

Function Documentation

◆ mdbx_env_chk()

LIBMDBX_API int mdbx_env_chk ( MDBX_env env,
const MDBX_chk_callbacks_t cb,
MDBX_chk_context_t ctx,
const MDBX_chk_flags_t  flags,
MDBX_chk_severity_t  verbosity,
unsigned  timeout_seconds_16dot16 
)

Проверяет целостность базы данных.

Взаимодействие с кодом приложения реализуется через функции обратного вызова, предоставляемые приложением посредством параметра cb. В ходе такого взаимодействия приложение может контролировать ход проверки, в том числе, пропускать/фильтровать обработку отдельных элементов, а также реализовать дополнительную верификацию структуры и/или информации с учетом назначения и семантической значимости для приложения. Например, приложение может выполнить проверку собственных индексов и корректность записей в БД. Именно с этой целью функционал проверки целостности был доработан для интенсивного использования обратных вызовов и перенесен из утилиты mdbx_chk в основную библиотеку.

Проверка выполняется в несколько стадий, начиная с инициализации и до завершения, более подробно см MDBX_chk_stage_t. О начале и завершении каждой стадии код приложения уведомляется через соответствующие функции обратного вызова, более подробно см MDBX_chk_callbacks_t.

Parameters
[in]envУказатель на экземпляр среды.
[in]cbНабор функций обратного вызова.
[in,out]ctxКонтекст проверки целостности базы данных, где будут формироваться результаты проверки.
[in]flagsФлаги/опции проверки целостности базы данных.
[in]verbosityНеобходимый уровень детализации информации о ходе и результатах проверки.
[in]timeout_seconds_16dot16Ограничение длительности в 1/65536 долях секунды для выполнения проверки, либо 0 при отсутствии ограничения.
Returns
Нулевое значение в случае успеха, иначе код ошибки.

◆ mdbx_env_chk_encount_problem()

LIBMDBX_API int mdbx_env_chk_encount_problem ( MDBX_chk_context_t ctx)

Вспомогательная функция для подсчета проблем детектируемых приложением, в том числе, поступающим к приложению через логирование.

See also
mdbx_env_chk()
MDBX_debug_func
Returns
Нулевое значение в случае успеха, иначе код ошибки.

◆ mdbx_env_open_for_recovery()

LIBMDBX_API int mdbx_env_open_for_recovery ( MDBX_env env,
const char *  pathname,
unsigned  target_meta,
bool  writeable 
)

Open an environment instance using specific meta-page for checking and recovery.

This function mostly of internal API for mdbx_chk utility and subject to change at any time. Do not use this function to avoid shooting your own leg(s).

Note
On Windows the mdbx_env_open_for_recoveryW() is recommended to use.

◆ mdbx_env_turn_for_recovery()

LIBMDBX_API int mdbx_env_turn_for_recovery ( MDBX_env env,
unsigned  target_meta 
)

Turn database to the specified meta-page.

This function mostly of internal API for mdbx_chk utility and subject to change at any time. Do not use this function to avoid shooting your own leg(s).

◆ mdbx_txn_lock()

LIBMDBX_API int mdbx_txn_lock ( MDBX_env env,
bool  dont_wait 
)

Acquires write-transaction lock. Provided for custom and/or complex locking scenarios.

Returns
A non-zero error value on failure and 0 on success.

◆ mdbx_txn_unlock()

LIBMDBX_API int mdbx_txn_unlock ( MDBX_env env)

Releases write-transaction lock. Provided for custom and/or complex locking scenarios.

Returns
A non-zero error value on failure and 0 on success.