Рубрика: Устройство PostgreSQL
-
idle VS idle in transaction
Статья основана на моём открытом уроке “idle VS idle in transaction в PostgreSQL”. В статье вспомним работу с памятью и процессами, рассмотрим проблематику долгих транзакций, рассмотрим разницу поведения подключений при различных статусах idle VS idle in transaction, изучим подводные камни этих вариантов и проведём практические исследования. Вспомним, как стартует PostgreSQL, а именно, как происходит порождение…
-
JSONB && TOAST in PostgreSQL
В предыдущей статье мы разобрали как устроен TOAST. Следующий эксперимент – убедиться, что JSONB в TOAST довольно медленный и подвержен bloating. Сгенерируем таблицу 10 тысяч строк из JSONB объектов размером по 10 тысяч элементов: \timing CREATE TABLE t AS SELECT i AS id, (SELECT jsonb_object_agg(j, j) FROM generate_series(1, 1000) j) js FROM generate_series(1, 10000) i;…
-
TOAST in PostgreSQL
Вспомним как хранятся наши строки. Версия строки должна помещаться на одну страницу 8кб (размер по умолчанию, влияние этого размера на производительность будет рассмотрено далее в книге). Если данные в строке превышают этот размер, то: Давайте разбираться, что это такое. Особенности TOAST-таблицы (The Oversized Attribute Storage Technique): Для тестов создадим табличку и посмотрим OID TOAST сегмента…
-
Что нового в PostgreSQL 16
На прошлой неделе состоялся релиз новой 16 версии СУБД PostgreSQL. Давайте посмотрим, что нам приготовили. Наиболее значимые изменения коснулись логической репликации, а именно добавили две опции: CREATE SUBSCRIPTION sub CONNECTION ” PUBLICATION pub WITH (copy_data = on, binary=true, streaming=parallel); Более подробно с примерами можно ознакомиться в статье. Также теперь можно строить каскадную логическую репликацию и…
-
Табличные пространства в PostgreSQL
Архитектура табличных пространств в PostgreSQL. Физическое и логическое представление
-
Журналы (WAL) в PostgreSQL
Когда мы изменяем страницы данных в памяти, они не сразу попадают на диск. А ведь у нас просто может упасть кластер, причин множество. А наша задача – обеспечить возможность восстановления согласованности данных после сбоя – Durability в ACID. Для этого применяется механизм упреждающей записи – используется журнал (WAL – write ahead log): Что туда попадает:…