5.3 KiB
aliases | tags | date | zero-link | parents | linked | ||
---|---|---|---|---|---|---|---|
|
2024-05-26 |
|
Журнал базы данных — это структура, в которой фиксируются все изменения, происходящие в базе данных, до их окончательного применения. Основная цель журнала — обеспечить надежность и консистентность данных. Это позволяет выполнять Транзакция БД и ../architecture/highload/Репликация БД.
Перед выполнением SQL-запроса база данных сначала записывает в журнал информацию о планируемых действиях, например: "Обновить значение колонки amount
в таблице orders
для записи с id = 5
". После фиксации записи в журнале база данных изменяет данные в памяти, чтобы ускорить обработку операций, а затем, с некоторой задержкой, записывает их на диск в основное хранилище. Этот подход улучшает производительность за счет уменьшения количества операций записи на диск, которые являются более медленными по сравнению с изменениями в памяти. В случае сбоя системы до записи данных на диск, изменения можно восстановить из журнала. Этот алгоритм называется ../../../../_inbox/Point In Time Recovery (PITR) (Point In Time Recovery).
Этот процесс обеспечивает два важных аспекта:
- Надежность: В случае сбоя системы данные можно восстановить из журнала до последнего зафиксированного состояния.
- Консистентность: Все транзакции, записанные в журнал, будут применены в базе данных в правильном порядке, что предотвращает потерю данных и сохраняет целостность системы.
Недостатки:
- Увеличение времени записи: каждая транзакция требует предварительной записи в журнал, что может замедлить выполнение операций.
- Потребление дискового пространства: журналы могут занимать значительное место, особенно в системах с высокой активностью.
[!INFO] Журналы базы данных часто имеют циклическую структуру, где новые данные записываются поверх старых, когда журнал заполняется. Это позволяет эффективно использовать дисковое пространство и упрощает управление журналом.
Реализации в СуБД:
Главные вопросы, которые встают перед разработчиком любой БД:
- Как организовать журнал?
- Как его писать?
- Как писать его меньше?
- Как сделать так, чтобы это работало быстрее?
- При чем тут репликация?
Для повышения производительности рекомендуется выделять отдельные жесткие диски под журналы, чтобы у них был эксклюзивный доступ к ресурсам диска. Это менее актуально для SSD, так как у них значительно выше скорость чтения и записи, а также отсутствует проблема механического доступа, что делает их более эффективными для параллельной работы с данными.
Мета информация
Область:: ../../meta/zero/00 Реляционная база данных Родитель:: Источник:: Автор:: Создана:: 2024-05-26