digital-garden/dev/database/Журнал БД.md

5.3 KiB
Raw Blame History

aliases tags date zero-link parents linked
maturity/🌱
2024-05-26
../../meta/zero/00 Реляционная база данных

Журнал базы данных — это структура, в которой фиксируются все изменения, происходящие в базе данных, до их окончательного применения. Основная цель журнала — обеспечить надежность и консистентность данных. Это позволяет выполнять Транзакция БД и ../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

Дополнительные материалы

Дочерние заметки