gram news
Аватар канала Postgres Guru | Базы данных

Postgres Guru | Базы данных

@pg_guru

Все о самой популярной СУБД PostgreSQL: технические статьи, новости и немного юмора. Сотрудничество: @Sferg007 Ссылка для друзей: https://t.me/+NRjYf8gGR3RmYmMy Сайт: https://ibtorg.ru Postgres Guru в VK https://vk.com/pg_guru

2,870подписчиков

Открыть канал

Последние посты

  • Postgres Guru | Базы данных

    2 июн., 10:00

    🛠️ Мало известные параметры команды EXPLAIN.Про команду EXPLAIN мы писали в канале много раз. И как про нее писать, если это один из основных инструментов оптимизации запросов? Но у этой команды есть еще несколько полезных параметров, о которых не все знают, а один из параметров появился не так давно.📌 MEMORY: сколько памяти использовал запросЭто новая возможность, появившаяся в версии 18. Она отличается от знакомого BUFFERS тем, что отслеживает объём памяти, потреблённый на этапе планирования запроса, а не его выполнения. Вывод появляется внизу результата EXPLAIN, например:EXPLAIN (ANALYZE, TIMING OFF) SELECT FROM mytable WHERE id = 123;Planning: Buffers: shared hit=36 read=1 Memory: used=63kB allocated=64kB📌 WAL: насколько активно логирование?Ещё одна полезная опция, которую многие упускают из виду - WAL:EXPLAIN (ANALYZE, WAL)
    1,3601542Открыть в Telegram
  • Postgres Guru | Базы данных

    29 мая, 10:03

    🌐 PostgreSQL 19 - самые заметные нововведения (ч. 2)Всем привет! Продолжаем знакомить вас с новшествами и улучшениями, которые будут в PostgreSQL 19.📊 Производительность:1. Значительное ускорение работы функции jsonb_agg, особенно для типов integer и numeric; 2. Оптимизация LISTEN/NOTIFY: - Добавлена хеш-таблица для хранения соответствия каналов и получателей; - Увеличена производительность доставки уведомлений в несколько раз. 3. Оптимизация функций ICU для преобразования регистра: - Ускорение функций upper, lower для баз данных с кодировкой UTF-8 и правилами сортировки ICU.🧾 Работа с секционированными таблицами:1. Команды MERGE PARTITIONS и SPLIT PARTITION: - Позволяют объединять и разделять секции секционированных таблиц; - Ограничение: Получают исключительную блокировку на всё время выполнения. 2. Поддержка COPY ... TO для секционированных таблиц: - Теперь можно
  • Postgres Guru | Базы данных

    22 мая, 10:02

    🌐 PostgreSQL 19 - самые заметные нововведения.Пока мы тут неизвестно чем занимались, рабочая группа PostgreSQL уже закончила четыре комитфеста и пятый в самом разгаре 😱 Мы собрали самые значительные (на наш взгляд) нововведения из этих комитфестов.Если вы хотите более подробно почитать о новинках PostgreSQL 19, то можете обратиться к замечательным статьям Павла Лузанова из компании Postgres Pro:1️⃣https://habr.com/ru/companies/postgrespro/articles/984580/2️⃣https://habr.com/ru/companies/postgrespro/articles/986694/3️⃣https://habr.com/ru/companies/postgrespro/articles/992426/4️⃣https://habr.com/ru/companies/postgrespro/articles/996010/Нововведений много, по этому в один пост все не поместиться, продолжаем в следующем.🔧 Подключение и удобство работы📌 servicefile в libpq и переменная :SERVICEFILE в psql - имя файла служб соединения можно указывать непосредственно в
  • Postgres Guru | Базы данных

    20 мая, 10:01изменён

    🌐 PostgreSQL 14 мая 2026 г.: обновления и исправления безопасности.Всем привет! Надеюсь вы как и мы соскучились 😁14 мая 2026 года PostgreSQL Global Development Group выпустила экстренное обновление для всех поддерживаемых веток СУБД, а также напомнила о скором прекращении поддержки PostgreSQL версии 14. Поддержка этой версии закончится 12 ноября 2026 года.Что вошло в релиз:⚠️ 11 уязвимостей (CVE), исправлено в этом обновлении. Четыре из них получили оценку CVSS 8.8 и допускают практическую эксплуатацию:1️⃣ CVE‑2026‑6473 - сервер PostgreSQL занижает размер выделяемых ресурсов с помощью целочисленного обхода.Целочисленный обход в нескольких функциях сервера PostgreSQL позволяет поставщику входных данных приложения заставлять сервер занижать размер выделяемых ресурсов и выводить данные за пределы допустимых значений.2️⃣ CVE‑2026‑6475 - PostgreSQL pg_base backup и pg_rewind
    PostgreSQL NewsPostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 Released!The PostgreSQL Global Development Group has released an update to all supported versions of PostgreSQL, including 18.4, 17.10, 16.14, 15.18, …
  • Channel name was changed to «Postgres Guru | Базы данных 💐»

    1 мар., 08:32

  • Postgres Guru | Базы данных

    27 февр., 10:00

    🌐 Обновления PostgreSQL 18.3, 17.9, 16.13, 15.17 и 14.22.Вчера 26.02.2026 вышло обновление PostgreSQL для текущих, актуальных релизов. Само по себе обновление не закрывает каких-то критических дыр в безопасности, как это часто бывает, но устраняет много достаточно неприятных багов.✅ Исправлена проблема, из-за которой резервный сервер (standby) останавливался с ошибкой "could not access status of transaction" (не удалось получить доступ к статусу транзакции);✅ Исправлена ошибка, из-за которой функция substring() вызывала ошибку "invalid byte sequence for encoding" (недопустимая последовательность байтов для кодировки) для не-ASCII текстовых значений, если источником этого значения был столбец базы данных. Это было вызвано изменением, внесенным для исправления уязвимости CVE-2026-2006;✅ Исправление для функции strict_word_similarity в модуле pg_trgm, которое могло приводить к
    2,340871Открыть в Telegram
  • Postgres Guru | Базы данных

    24 февр., 13:01

    🤬 Утилита для восстановления данных PostgreSQL в критических ситуациях (PDU).Всем привет! Сегодня поговорим о замечательной утилите, которая может нас спасти в критической ситуации повреждения данных PostgreSQL и отсутствия бэкапов.PDU (PostgreSQL Data Unloader) — это профессиональный инструмент для аварийного восстановления и извлечения данных с открытым исходным кодом для баз данных PostgreSQL (версий 14-18). Он читает файлы данных PostgreSQL напрямую, без необходимости запущенного экземпляра базы данных, что делает его идеальным решением для аварийного восстановления и экстренного извлечения данных.Официальный GitHub утилиты:➡️ https://github.com/wublabdubdub/PDU-PostgreSQLDataUnloaderPDU поможет нам в следующих критических сценариях:❌ Полное повреждение базы данных - не запускается, невозможно восстановить; ❌ Случайное DELETE/UPDATE - критически важные данные исчезают
    2,3401711Открыть в Telegram
  • Postgres Guru | Базы данных

    9 февр., 10:00

    🔬 Статистика в PostgreSQL (часть 3).Всем привет! В этой заметке мы уже наконец закончим разбираться с устройством статистики в PostgreSQL.В предыдущей заметке мы остановились на расширенной статистике и ее типах. Подходить к выбору типа расширенной статистики надо с умом, в зависимости от того какие операции используются в запросах.Выбор типа расширенной статистикиТип расширенной статистики, которую вы будете создавать, зависит от используемых операций:📌 Если вы используете только оператор =, используйте dependencies (зависимости);📌 Если у вас есть операторы GROUP BY, вам понадобится ndistinct (количество уникальных значений);📌 Если вы используете скалярные операторы (<, >, <=, >=), вам нужен MCV list (список наиболее частых значений).Ограничения расширенной статистикиПоскольку гистограммы не поддерживаются в расширенной статистике, она точна только:
    2,0001211Открыть в Telegram
  • Postgres Guru | Базы данных

    29 янв., 10:00

    🔬 Статистика в PostgreSQL (часть 2).Всем привет! Продолжаем углубляться в статистику PostgreSQL!В прошлой заметке мы остановились на селективности.Postgres собирает следующие элементы:1️⃣ Сумму селективностей всех MCV (sumcommon); 2️⃣ Долю NULL-значений (nullfrac); 3️⃣ Селективность MCV (mcv_select): Это сумма частот MCV, соответствующих условию; 4️⃣ Селективность гистограммы (hist_select): Это процент корзин, соответствующих условию. Гистограмма состоит из "корзин" (buckets). Каждая корзина должна содержать примерно одинаковый процент строк. Чтобы получить это, Postgres перебирает гистограмму и подсчитывает количество подходящих корзин. Селективность гистограммы будет равна (количество_совпадений) / (количество_корзин).Затем Postgres использует все это для расчета селективности условия:1️⃣ Инициализация селективности: selec = 1.0 - nullfrac - sumcommon; 2️⃣ Объединение с
    1,9801232Открыть в Telegram
  • Postgres Guru | Базы данных

    19 янв., 13:01

    🔬 Статистика в PostgreSQL (часть 1).Все мы прекрасно знаем зачем нужна статистика в PostgreSQL, но как работает статистика изнутри, что собирается и как рассчитывается нам может быть уже неизвестно. Работает, собирается, да и ладно ☺️ Но более глубокие знания работы статистики в PostgreSQL могут нам помочь как и в оптимизации запросов, так и в устранении неполадок. Поэтому решили выпустить цикл заметок по более углубленному изучению статистики в PostgreSQL. Погнали!Postgres отлично справляется с оптимизацией запросов. Собирая данные во внутренних статистических таблицах, Postgres перед выполнением запроса оценивает множество факторов: например, будет ли сканирование по индексу эффективнее последовательного сканирования, как выбирать данные для оператора WHERE и т.д.Что Postgres не знает - это то, как ваши столбцы связаны друг с другом. Postgres — не алгоритм машинного обучения.
    1,9009631Открыть в Telegram
  • Postgres Guru | Базы данных

    13 янв., 10:00

    🔬 PostgreSQL 18 и поддержка NUMA (libnuma).Всем привет! Надеюсь все пришли в себя после длинных выходных и готовы воспринимать информацию ☺️В PostgreSQL версии 18 была представлена начальная поддержка архитектуры NUMA (Non-Uniform Memory Access, неоднородный доступ к памяти), которая реализована с использованием библиотеки libnuma. Чтобы эта поддержка работала, PostgreSQL должна быть собрана с опциец конфигурации --with-libnuma.Эта функция помогает оптимизировать производительность на многопроцессорных серверах, управляя распределением памяти между различными узлами NUMA.Ключевые моменты поддержки PostgreSQL libnuma:1️⃣ До версии 18 управление производительностью PostgreSQL в системах с NUMA в значительной степени зависело от конфигурации на уровне операционной системы (например, использование numactl с политикой чередования interleave и включение огромных страниц(huge
  • Postgres Guru | Базы данных

    30 дек. 2025 г., 10:00

    Сейчас в тренде подводить итоги года канала. Вот и мы решили не отставать. Наши итоги года не сильно выдающиеся, но мы и не гнались за цифрами.Все чего мы хотели - это приносить реальную пользу нашими постами всем DBA, кто нас читает. И надеемся, что нам это удалось! ☺️Всех с наступающим Новым Годом! Успехов и стабильной работы ваших СУБД в новом году.Мы в свою очередь постараемся приносить вам еще больше пользы и интересных постов в новом году!
    Иллюстрация к посту канала Postgres Guru | Базы данныхИллюстрация к посту канала Postgres Guru | Базы данных
    2,2903373Открыть в Telegram
  • Channel name was changed to «Postgres Guru | Базы данных 🎅»

    29 дек. 2025 г., 20:00

  • Postgres Guru | Базы данных

    29 дек. 2025 г., 16:01

    🤖 Храним большие базы данных PostgreSQL правильно.Базы данных PostgreSQL имеют свойство незаметно расти. Однажды вы замечаете, что запросы замедлились, резервное копирование длится вечность, и никто уже не помнит, что хранится в той таблице на 500 ГБ.В заметке рассмотрим как бороться с разрастанием базы данных, какие у нас для этого есть методы и возможности.📌 Партиционирование.Если в вашей базе есть одна гигантская таблица, которая продолжает расти, партиционирование может стать спасением. С 10-й версии PostgreSQL поддерживает нативное декларативное партиционирование, а в последних версиях (13 и выше) работать с ним стало намного проще.Вам не нужны никакие расширения - вы можете определить родительскую таблицу и разделить её по диапазону, списку или хешу. Например, для данных, зависящих от времени:CREATE TABLE events ( id serial, created_at timestamptz, payload jsonb ) PAR
  • Postgres Guru | Базы данных

    17 дек. 2025 г., 10:00

    🤖 Используем ИИ в PostgreSQL (расширение pg_ai_query).На фоне бума развития искусственного интеллекта, неудивительно, что ИИ появляется и в нашей любимой PostgreSQL. Недавно появилась стабильная версия расширения pg_ai_query, которое позволяет использовать ИИ прямо в внутри PostgreSQL.Официальный GitHub расширения:➡️ https://github.com/benodiwal/pg_ai_queryОсновные возможности расширения:✅ Описание SQL запросов на естественном языке (пока только на английском): преобразование описаний на естественном языке в корректные SQL-запросы PostgreSQL; ✅ ИИ-анализ запросов: анализ производительности запросов с помощью EXPLAIN ANALYZE и получение рекомендаций по оптимизации; ✅ Автоматическое обнаружение схемы: расширение автоматически анализирует структуру базы данных для понимания таблиц, связей и ограничений; ✅ Поддержка нескольких ИИ-провайдеров: работа с моделями OpenAI (GPT-4,
    2,1807321Открыть в Telegram
  • Postgres Guru | Базы данных

    16 дек. 2025 г., 10:00

    🔬 Контрольная сумма в PostgreSQL.Контрольная сумма данных - это простой, но мощный метод проверки целостности страниц данных, хранящихся на диске. Это как цифровой отпечаток для каждого 8-килобайтового блока данных («страницы») в вашей базе данных.Когда PostgreSQL записывает страницу данных (таблицы или индекса) на диск, она запускает алгоритм для содержимого страницы, чтобы вычислить небольшое производное значение - контрольную сумму. Эта контрольная сумма сохраняется в заголовке страницы вместе с данными. Каждый раз, когда PostgreSQL считывает эту страницу с диска, она немедленно пересчитывает контрольную сумму из данных и сравнивает её с сохранённым значением.Если значения не совпадают, это означает, что страница данных была изменена или повреждена с момента последней записи. Это важно, потому что повреждение данных может происходить незаметно. Обнаружив несоответствие,
  • Postgres Guru | Базы данных

    11 дек. 2025 г., 13:00

    🤬 Чиним поврежденный уникальный индекс в PostgreSQL.Если вы увидели вот такую картину с первичными ключами в таблице, то это следствие повреждения уникального индекса:SELECT id FROM mytable ORDER BY id LIMIT 5;id ---- 1 2 3 3 4 (5 rows)Надо чинить!⚠️ Перед дальнейшими операциями обязательно сделайте копию таблицы с повреждённым индексом, а лучше всей базы.Уникальный индекс невозможно создать (или пересоздать), пока в таблице есть дублирующиеся строки. Postgres просто откажется это делать, так как это нарушает уникальность. Поэтому мы должны удалить дублирующиеся строки из таблицы.
  • Postgres Guru | Базы данных

    8 дек. 2025 г., 07:30

    🔬 Типы сканирований в PostgreSQL.Погнали!Последовательное сканирование (Sequential Scan, Seq Scan)Этот тип сканирования читает всю таблицу целиком, строка за строкой, проверяя соответствие условиям запроса. Если есть WHERE или FILTER, Postgres просто сканирует каждую строку в поиске совпадений.Это основа для выполнения сканирований, и для многих запросов Postgres будет использовать именно его. Для очень больших наборов данных или тех, к которым часто обращаются, последовательные сканирования не идеальны, и сканирование по индексу может быть быстрее.Сканирование по индексу (Index Scan)Postgres может использовать индекс как карту для данных, хранящихся в таблице. Базовое сканирование по индексу использует B-дерево для быстрого поиска точного местоположения данных в два этапа: сначала Postgres находит запись в индексе, использует ссылку, а затем извлекает остальные данные
    1,7601051Открыть в Telegram
  • Postgres Guru | Базы данных

    1 дек. 2025 г., 10:00

    🔬 Как бороться с раздуванием таблиц (bloat)?Раздувание (bloat) - это свободное пространство внутри страниц базы данных, которое образуется, когда AUTOVACUUM удаляет большое количество кортежей (tuples).Когда строка в таблице обновляется, Postgres не перезаписывает старые данные. Вместо этого он помечает старую версию строки (кортеж) как "мёртвую" и создаёт новую версию строки. Со временем, по мере обновления или удаления строк, пространство, занимаемое этими мёртвыми кортежами, может накапливаться. В какой-то момент AUTOVACUUM (или ручной VACUUM) удаляет мёртвые кортежи, оставляя свободное пространство внутри страниц, доступное для повторного использования. Но если накапливается большое количество мёртвых кортежей, могут оставаться большие объёмы свободного пространства - в худших случаях оно может занимать 99% всего пространства таблицы или индекса, или даже больше.Низкие уровни
  • Postgres Guru | Базы данных

    21 нояб. 2025 г., 10:00

    🔬 Системный каталог PostgreSQL (ч. 3).Всем привет! Продолжаем разбираться с системным каталогом PostgreSQL. Это будет заключительная заметка из этой серии.Фактически, те метакоманды psql, которые мы изучали в первой заметке из этой серии соответствуют конкретным таблицам системного каталога. Вот их примерное соответствие:\d (таблицы и объекты) - pg_class\di (индексы) - pg_class, pg_index\dx (установленные расширения) - pg_extension\dp (таблицы и привилегии) - pg_class, pg_roles, pg_attribute\l (базы данных) - pg_database\df (доступные функции) - pg_procДавайте рассмотрим эти таблицы подробнее и посмотрим как их можно использовать.