Блог о PostgreSQL от Аристова Евгения
-
Журналы (WAL) в PostgreSQL
Когда мы изменяем страницы данных в памяти, они не сразу попадают на диск. А ведь у нас просто может упасть кластер, причин множество. А наша задача — обеспечить возможность восстановления согласованности данных после сбоя — Durability в ACID. Для этого применяется механизм упреждающей записи — используется журнал (WAL — write ahead log): Что туда попадает:…
-
Уровни изоляции транзакций PostgreSQL
Статья основана на материалах открытого вебинара «Уровни изоляции транзакций в PostgreSQL». Запись занятия доступна на YouTube, Rutube и VKvideo. Презентация и исходники доступны по ссылке. Уровни изоляции транзакций являются ключевым аспектом реляционных баз данных, включая PostgreSQL. Они определяют, как данные изолируются друг от друга при выполнении параллельных транзакций, обеспечивая согласованность и целостность данных. PostgreSQL поддерживает стандартные…
-
Что быстрее count(id) или count(UUID) в PostgreSQL?
Казалось бы в прошлой статье мы выяснили, что нет разницы между count(id), count(1) или count(*). Давайте теперь узнаем, как же PostgreSQL работает с таким замечательным инструментом как UUID. Общая идея заключается в том, что UUID предоставляет нам способ генерации уникальных идентификаторов без необходимости зависеть от конкретных контекстов или ресурсов. В PostgreSQL, для создания UUID, вы…
-
Транзакции и MVCC в PostgreSQL
Статья основана на материалах открытого вебинара «Особенности MVCC PostgreSQL». Запись занятия доступна как в YouTube версии, так и на Rutube и VKvideo. Презентация и исходники доступны по ссылке. MVCC (Multi-Version Concurrency Control) — это механизм управления параллельным доступом к данным в базе данных, который широко используется в PostgreSQL и других СУБД для поддержки одновременных транзакций (что такое…
-
Ответ на сount(1) или count(*) в PostgreSQL
Холиварный вопрос — что же лучше? На самом деле ответ лежит намного глубже. Давайте исследовать. Зальем мою БД по Тайским перевозкам на ~6 млн записей. Загрузим её в наш инстанс PostgreSQL командой: wget https://storage.googleapis.com/thaibus/thai_small.tar.gz && tar -xf thai_small.tar.gz && psql < thai.sql Получили БД объемом 600 Мб — посмотреть можно используя команду \l+ в psql,…
-
Транзакции в PostgreSQL
Реляционная теория и SQL позволяет абстрагироваться от конкретной реализации СУБД, но есть одна непростая проблема: как обеспечить параллельную работу множества сессий (concurrency), которые модифицируют данные, так, чтобы они не мешали друг другу ни с точки зрения чтения, ни с точки зрения записи и обеспечивали целостность данных (consistency) и их надежность (durability)? Ответ — транзакционные системы…