diff --git a/README.md b/README.md index ccf614f..8858a99 100644 --- a/README.md +++ b/README.md @@ -402,23 +402,25 @@ futriix:~> drop index employees dept_age_idx ## Транзакции -В субд **futriix** реализована полноценная поддержка ACID-транзакций с MVCC (Multi-Version Concurrency Control) и WAL (Write-Ahead Logging). Журнал WAL по умолчанию хранится в файле **futriix.wal**, находящимся в каталоге **futriix**. Доступны команды startSession(), startTransaction(), commitTransaction(), abortTransaction() с восстановлением после сбоев через журнал предзаписи. +В субд **futriix** реализована полноценная поддержка ACID-транзакций с MVCC (Multi-Version Concurrency Control) и WAL (Write-Ahead Logging). Журнал WAL по умолчанию хранится в файле **futriix.wal**, находящимся в каталоге **futriix**. +Доступны команды startSession(), startTransaction(), commitTransaction(), abortTransaction() с восстановлением после сбоев через журнал предзаписи. WAL- это журнал предзаписи транзакций, который в субд **futriix** выполняет следующие действия: - * Хранит все операции транзакций до их фиксации (INSERT, UPDATE, DELETE) - * Записывает каждое изменение последовательно с LSN (Log Sequence Number) - * Используется для восстановления после сбоя через recoverFromWAL() - * Формат: бинарный с CRC-контролем, размером записи и типом (Transaction/Checkpoint) - * Расположение: futriis.wal (один файл) + 1. Хранит все операции транзакций до их фиксации (INSERT, UPDATE, DELETE) + 2. Записывает каждое изменение последовательно с LSN (Log Sequence Number) + 3. Используется для восстановления после сбоя через recoverFromWAL() + 4. Формат: бинарный с CRC-контролем, размером записи и типом (Transaction/Checkpoint) + 5. Расположение: /futriix/futriix.wal (один файл) Кроме того существуют так называемые **Периодические снимки состояния** журнала предзаписи, которые выполняют следующие функции: - * Фиксируют состояние всех активных транзакций на момент создания - * Создаются автоматически каждые 5 минут (300 секунд) - * Именуются по маске: futriis.wal.checkpoint.{timestamp} - * Хранят сжатое состояние: последний LSN + активные транзакции - * Автоматически очищаются: остаётся только 5 последних чекпоинтов + 1. Фиксируют состояние всех активных транзакций на момент создания + 2. Создаются автоматически каждые 5 минут (300 секунд) + 3. Именуются по маске: futriis.wal.checkpoint.{timestamp} + 4. Хранят сжатое состояние: последний LSN + активные транзакции + 5. Автоматически очищаются: остаётся только 5 последних чекпоинтов + 6. Расположение: /futriix/wal.checkpoint.wal (несколько файлов файл) Подводя итог, хочется отметить следующее: журнал предзаписи транзакций и периодические снимки состояния работают следующим образом: