Please enable JavaScript.
Coggle requires JavaScript to display documents.
PostgreSQL - Coggle Diagram
PostgreSQL
-
План запроса
-
Стоимость, стоящая по-умолчанию
-
-
-
-
-
-
-
-
Если добавить в explain (BUFFERS), то выведет buffers
Buffers: shared read=... - количество блоков, считанных с диска
Buffers: shared hit=... - количество блоков, считанных из кеша
-
-
Виды
-
Repeatable Read
блокирует и читаемые, и изменяемые строки и от чтения, и от изменения
Read uncommitted
транзакция блокирует изменяемые строки от изменения, но не от чтения
Read Committed
блокирует строки и от чтения, и от изменения
-
Аномалии
-
Потерянное обновление, Аномалия сериализвции (Serialization anomaly)
возникает, когда две транзакции читают одну и ту же строку таблицы, затем одна транзакция обновляет эту строку, а после этого вторая транзакция тоже обновляет ту же строку, не учитывая изменений, сделанных первой транзакцией
-
-
Фантомное чтение
Допускается в Read Uncommitted, Read Committed и Repeatable Read
Транзакция A выполняет запрос на чтение и после его выполнения обнаруживает, что данные уже поменялись транзакцией Б
-
-
join
-
-
-
(или inner) join
Поведение по-умолчанию. Возращает записи, которые есть в двух таблицах одновременно
-
-
-
Индексы
Типы
BTree
-
-
-
дерево. Хранится в виде таблицы из трёх столбцов - L, R и hash из значений нужных ключей
-
-
Hash
Лучше использовать для значений, поиск которых производится по оператору =
-
-
-
-
-
-
TOAST вызывается только тогда, когда значение строки, которое должно быть сохранено в таблице, длиннее, чем TOAST_TUPLE_THRESHOLD байт (обычно — 2 Кб)
значения сохраняются за пределами основной таблицы, в таблице TOAST
-
-
-
Процессы
-
-
Фоновые процессы
Background writer
Скидывает shared-память на диск для того, чтобы не потерять данные оттуда
-
Autovacuum launcher
Даёт сигнал Postmaster о том, что нужно запускать процесс автовакуума для определённой БД в зависимости от статистики
Wal writer
Следит за тем, чтобы данные в Shared memory были скинуты в журнал Wal
-
Обслуживание
-
VACUUM
-
FULL очищает таблицу и перезаписывает её в новый файл, тем самым освобождает место
wal - журнал изменений
-
Чтобы вовремя обнаружить возникшую проблему, журнальные записи всегда снабжаются контрольными суммами.
-
Prepare && Execute
Позволяет сократить время на выполнение запроса за счёт обхода шага парсинга, анализа и, если без params, то и планирования
-
-
-
-
Функции
Подобие межсерверного мьютекса от PostgreSQL:
pg_try_advisory_xact_lock(КЛЮЧ1, КЛЮЧ2) - блокирует по связке двух ключей
Блокировку снимает после завершения транзакции (Другие соединения будут получать ошибку при вызове этой функции)
Без try будет выполнять запрос пока не снимется блокировка