Григорий Скобелев
гость
гость
Второй выпуск начинает с границ ACID, затем переходит к page cache и buffer pool. Конечная память требует eviction: FIFO и LRU просты, clock-sweep учитывает недавние обращения, а TinyLFU отделяет кандидатов от часто используемых страниц.
Write-ahead log фиксирует изменения раньше data pages. ARIES восстанавливает базу в три фазы: analysis находит dirty pages и транзакции, redo воспроизводит историю, undo отменяет незавершённое. Прогресс recovery тоже журналируется на случай нового сбоя.
Concurrency control бывает optimistic, multiversion и pessimistic. Serializability приравнивает параллельную историю к последовательной; isolation levels допускают разные аномалии. Snapshot isolation выбирает версии, validation проверяет конфликты перед commit, а two-phase locking сначала набирает, затем отпускает locks.
Для write-heavy структур разбирают copy-on-write и LSM tree. Запись идёт в sorted memtable, immutable SSTables сбрасываются и compact, создавая read, write и space amplification. Tombstone не даёт удалённому ключу вернуться из старого уровня, а Bloom filter пропускает таблицы без ключа.