4.2.1.2.1.1.2. Журнал транзакций

 
Журнал транзакций используется для обеспечения сохранности записываемых данных. Все поступающие в базу данных записи сначала сохраняются в журнал. Также в журнал сохраняются внутренние служебные записи.
 
Для каждой записи, сохранённой в журнал, выделяется уникальный последовательный 8-байтный идентификатор, используемый внутри базы данных для определения отношения последовательности между отдельными записями и фрагментами данных (используется при выполнении операций чтения и слияния).
 
Журнал хранится в отдельном файле tx. Общее устройство файла и принципы работы:
Состоит из сегментов одинакового размера (32 МБ)
Сегменты файла перезаписываются по мере освобождения
При отсутствии свободных сегментов с конца файла выделяется новый сегмент (размер файла журнала увеличивается)
При наличии свободных сегментов приоритет при перезаписи отдаётся сегментам ближе к началу файла журнала
При наличии последовательности свободных сегментов в конце журнала выполняется усечение файла журнала (размер файла журнала сокращается)
Запись и чтение внутри сегментов выполняются линейно, соответственно, с высокой производительностью.
 
Записи из журнала удаляются только при их успешном сохранении в хранилище.
 
Работа журнала регулируется параметрами раздела tx в файле local.jsonc.
<домашняя папка>\.astra.historian.server\config\local.jsonc