Рубрика: Устройство 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): Что туда попадает:…