ACID свойства

Тема дорожной карты · PostgreSQL

Свойства ACID — атомарность (Atomicity), согласованность (Consistency), изолированность (Isolation) и долговечность (Durability) — это фундаментальные гарантии, которые PostgreSQL, как и любая корпоративная реляционная база данных, обеспечивает для сохранения целостности данных при обработке транзакций. Атомарность гарантирует, что каждый оператор внутри блока BEGIN/COMMIT либо выполняется полностью, либо откатывается целиком, не оставляя частичных записей в базе данных PostgreSQL. Согласованность обеспечивает перевод реляционной базы данных из одного корректного состояния в другое с соблюдением всех ограничений, внешних ключей и правил CHECK, тогда как изолированность управляет взаимодействием параллельных транзакций через четыре уровня, поддерживаемых PostgreSQL: Read Committed, Repeatable Read, Serializable и Read Uncommitted. Долговечность гарантирует, что после фиксации транзакции данные переживут сбои сервера благодаря журналу упреждающей записи PostgreSQL (WAL), делая соответствие ACID краеугольным камнем надёжной оптимизации запросов и разработки критически важных приложений.

Как это работает

ACID свойства начинается с понимания PostgreSQL как закалённой в бою open-source RDBMS со строгим следованием SQL-стандартам, MVCC-конкурентностью, ACID-транзакциями и богатой типизацией (массивы, JSONB, ranges, геометрические типы, пользовательские через расширения). Кластер Postgres — один работающий postmaster + per-connection backend-процессы; БД живут внутри одного кластера; схемы внутри БД; таблицы, view, sequences внутри схем. Wire-протокол стабилен и задокументирован.

Когда применять

PostgreSQL — дефолтная реляционная БД для любого нового проекта: JSON + реляционка + full-text + расширения в одном движке, MIT-подобная лицензия, без vendor lock-in. MySQL — только если унаследовали деплой. SQLite — когда реально single-host + низкая конкурентность. Managed Postgres (Yandex Managed PostgreSQL, RDS, Cloud SQL) — когда бекапы + HA + мониторинг начинают есть инженерное время.

Типичные ошибки

Ловушки ACID свойства: расчёт, что Postgres "сам масштабируется" без тюнинга (shared_buffers, work_mem, max_connections дефолты крошечные); MySQL-измы (LIMIT m, n нестандартен — используйте LIMIT n OFFSET m); пустой template1-extensions (CREATE EXTENSION per-DB); не выучили EXPLAIN (ответ на большинство "почему медленно" — в плане). Прочтите официальный туториал от и до.

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…