Postgres Guru | Базы данных 💐
رفتن به کانال در Telegram
Все о самой популярной СУБД PostgreSQL: технические статьи, новости и немного юмора. Сотрудничество: @Sferg007 Ссылка для друзей: https://t.me/+NRjYf8gGR3RmYmMy Сайт: https://ibtorg.ru Postgres Guru в VK https://vk.com/pg_guru
نمایش بیشتر2 891
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
-130 روز
در حال بارگیری داده...
کانالهای مشابه
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
ژوئن '26
ژوئن '26
+6
در 0 کانالها
مه '26
+15
در 0 کانالها
Get PRO
آوریل '26
+24
در 0 کانالها
Get PRO
مارس '26
+28
در 0 کانالها
Get PRO
فوریه '26
+42
در 0 کانالها
Get PRO
ژانویه '26
+34
در 0 کانالها
Get PRO
دسامبر '25
+41
در 0 کانالها
Get PRO
نوامبر '25
+46
در 1 کانالها
Get PRO
اکتبر '25
+39
در 0 کانالها
Get PRO
سپتامبر '25
+34
در 0 کانالها
Get PRO
اوت '25
+29
در 0 کانالها
Get PRO
ژوئیه '25
+46
در 0 کانالها
Get PRO
ژوئن '25
+28
در 0 کانالها
Get PRO
مه '25
+37
در 0 کانالها
Get PRO
آوریل '25
+55
در 0 کانالها
Get PRO
مارس '25
+93
در 0 کانالها
Get PRO
فوریه '25
+60
در 0 کانالها
Get PRO
ژانویه '25
+70
در 1 کانالها
Get PRO
دسامبر '24
+64
در 0 کانالها
Get PRO
نوامبر '24
+68
در 0 کانالها
Get PRO
اکتبر '24
+86
در 0 کانالها
Get PRO
سپتامبر '24
+92
در 0 کانالها
Get PRO
اوت '24
+99
در 0 کانالها
Get PRO
ژوئیه '24
+90
در 1 کانالها
Get PRO
ژوئن '24
+149
در 1 کانالها
Get PRO
مه '24
+86
در 0 کانالها
Get PRO
آوریل '24
+205
در 1 کانالها
Get PRO
مارس '24
+121
در 3 کانالها
Get PRO
فوریه '24
+111
در 1 کانالها
Get PRO
ژانویه '24
+85
در 0 کانالها
Get PRO
دسامبر '23
+438
در 4 کانالها
Get PRO
نوامبر '23
+100
در 2 کانالها
Get PRO
اکتبر '23
+56
در 0 کانالها
Get PRO
سپتامبر '23
+89
در 0 کانالها
Get PRO
اوت '23
+137
در 0 کانالها
Get PRO
ژوئیه '23
+62
در 0 کانالها
Get PRO
ژوئن '23
+908
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 11 ژوئن | +1 | |||
| 10 ژوئن | 0 | |||
| 09 ژوئن | +1 | |||
| 08 ژوئن | 0 | |||
| 07 ژوئن | 0 | |||
| 06 ژوئن | +1 | |||
| 05 ژوئن | +1 | |||
| 04 ژوئن | +1 | |||
| 03 ژوئن | 0 | |||
| 02 ژوئن | 0 | |||
| 01 ژوئن | +1 |
پستهای کانال
🛠️ Мало известные параметры команды 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)
INSERT INTO mytable SELECT * FROM staging_table;
WAL: records=100, fpi=5, bytes=45000
В примере выше records - это количество сгенерированных записей WAL, fpi (full-page images) - количество записанных образов целых страниц (страницы, изменённые впервые после последней контрольной точки), а bytes - общий объём данных WAL, созданный запросом. Это может быть полезно при исследовании нагрузок, интенсивно работающих с записью: массовые вставки, большие обновления, создание индексов и высокая нагрузка репликации.
📌 SETTINGS: в каком окружении выполнялся запрос?
Иногда один и тот же SQL-запрос ведёт себя по-разному на двух серверах, или вы могли временно изменить некоторые параметры локально (например, work_mem). Чтобы правильно понять, как на запрос влияют различия в окружении, может быть полезна опция SETTINGS:
EXPLAIN (SETTINGS)
SELECT * FROM mytable WHERE id = 123;
Settings: effective_cache_size = '48GB', effective_io_concurrency = '200', enable_partitionwise_aggregate = 'on', enable_partitionwise_join = 'on', max_parallel_workers = '16', max_parallel_workers_per_gather = '4', temp_buffers = '1MB', search_path = 'public'
📌 VERBOSE: вся история планировщика.
Ещё одна полезная опция - VERBOSE. Она выводит дополнительную информацию: внутренние ссылки на столбцы, развёрнутые списки целевых столбцов и объекты со схемами.
Хотя вывод с этим параметром будет выглядеть немного перегруженным, VERBOSE помогает при диагностике:
✅ разворачивания представлений (view expansion);
✅ перезаписи правил (rule rewriting);
✅ сложных преобразований запросов.
Ну и конечно, мы можем комбинировать в EXPLAIN все выше приведенные параметры, для вывода более детельной информации по интересующим нас вопросам.
На этом все! До связи!
#queries
| 2 | 🌐 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 для секционированных таблиц:
- Теперь можно использовать команду COPY ... TO напрямую с секционированными таблицами;
- Также используется для начальной синхронизации в логической репликации.
3. Сбор статистики для секционированных таблиц в vacuumdb:
- Утилита vacuumdb с параметрами --analyze-only и --analyze-in-stages теперь собирает статистику и для секционированных таблиц.
🎚 Мониторинг и отладка:
1. Мониторинг задержек синхронизации слотов логической репликации:
- Добавлены столбцы slotsync_skip_reason, slotsync_skip_count и slotsync_last_skip в представления pg_replication_slots и pg_stat_replication_slots.
2. Улучшения в мониторинге выполнения VACUUM и ANALYZE:
- В pg_stat_progress_vacuum добавлены столбцы mode (normal/aggressive/failsafe) и started_by (manual/autovacuum/autovacuum_wraparound);
- В pg_stat_progress_analyze добавлен столбец started_by.
3. Статистика использования мультитранзакций:
- Новая функция pg_get_multixact_stats() возвращает агрегированную статистику по мультитранзакциям.
4. Мониторинг объема записанных в WAL полных образов страниц:
- Добавлен столбец wal_full_images в представление pg_stat_wal.
5. Новый параметр log_autoanalyze_min_duration:
• Позволяет журналировать длительные операции автоматического анализа таблиц.
🔃 Логическая репликация:
1. Синхронизация последовательностей:
- Подписчики логической репликации теперь могут синхронизировать значения последовательностей с сервером публикации;
- Управляется вручную с помощью команды ALTER SUBSCRIPTION ... REFRESH SEQUENCES.
2. Динамическое управление уровнем логического декодирования WAL:
- Уровень записи в WAL (wal_level) теперь определяется динамически в зависимости от наличия слотов логической репликации;
- Текущий фактический уровень показывает параметр effective_wal_level.
3. Команда WAIT FOR LSN:
- Позволяет дождаться применения заданной позиции LSN на реплике;
- Полезно для гарантии актуальности данных на реплике перед чтением.
⚒️ Утилиты и инструменты:
1. Параметр --dry-run в vacuumdb:
- Показывает, какие команды очистки и анализа будут выполнены, не отправляя их на сервер.
2. Параметр FLUSH_UNLOGGED в CHECKPOINT:
- Позволяет сбрасывать на диск изменённые буферы нежурналируемых объектов;
- Ускоряет перезагрузку сервера с нежурналируемыми таблицами.
3. Параметр MODE в CHECKPOINT:
- Поддерживает режимы FAST и SPREAD для управления нагрузкой на систему;
- SPREAD позволяет выполнять контрольную точку растянуто, учитывая checkpoint_completion_target.
♻️ Буферный кеш и память:
1. Отказ от списка свободных буферов:
- Для поиска свободных буферов теперь используется алгоритм clock-sweep;
- Упрощает последующие оптимизации для поддержки NUMA.
2. Представление pg_buffercache:
- Добавлен столбец os_page_num, показывающий распределение буферов по страницам ОС.
3. Мониторинг использования памяти в VACUUM:
- Команда VACUUM (VERBOSE) теперь выводит информацию об использовании памяти для хранения идентификаторов мёртвых строк.
#pgnews | 947 |
| 3 | 🌐 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 - имя файла служб соединения можно указывать непосредственно в строке подключения; в psql переменная возвращает текущий файл службы;
📌 Тип‑псевдоним regdatabase – преобразует имя базы данных в её OID и обратно (как regclass, regtype и др.);
📌 Группировка GROUP BY ALL - ключевое слово ALL автоматически включает в GROUP BY все неагрегированные выражения из SELECT; добавляя новое выражение в SELECT больше не нужно править GROUP BY;
📌 Случайная дата/время в заданном диапазоне - функция random() теперь принимает два значения типа date, time, timestamp/timestamptz и возвращает равномерно распределённое значение в этом интервале;
📌 file_fdw: пропуск начальных строк - аналогично опции header в COPY, внешняя таблица file_fdw получила параметр header = N, указывающий сколько первых строк файла пропустить перед загрузкой данных.
📊 Мониторинг, статистика и отладка
📌 Расширенная статистика в pg_stat_statements
• новые счётчики generic_plan_calls / custom_plan_calls - показывают, сколько раз использовался общий и индивидуальный план;
• нормализация команды FETCH (размер выборки заменяется константой) - разные FETCH N попадают в одну строку статистики;
• нормализация IN со списком параметров - запросы WHERE col IN ($1,$2,…) получают одинаковый идентификатор;
📌 Оценки планировщика для узла Memoize в EXPLAIN - строка Estimates (capacity, distinct keys, lookups, hit %) позволяет сравнить планировщику прогноз с фактическими показателями (Hits/Misses и т.д.) при EXPLAIN ANALYZE;
📌 Функция error_on_null - полиморфная функция, возвращающая свой агрумент, если он не равен NULL, иначе генерирующая ошибку «null value not allowed»;
📌 pg_dsm_registry_allocations - новое системное представление, показывающее содержимое динамической общей памяти (DSM): имя, тип, размер сегментов;
📌 pg_available_extensions (столбец location) - в представлениях pg_available_extensions и pg_available_extension_versions добавлен столбец, показывающий каталог установки каждого расширения (значение $system - каталог по умолчанию).
До встречи в будущих постах ☺️
#pgnews | 1 377 |
| 4 | 🌐 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 pg_basebackup в обычном формате и в pg_rewind позволяет суперпользователю перезаписывать локальные файлы, например /var/lib/postgres/.bashrc, которые перехватывают учетную запись операционной системы.
3️⃣ CVE‑2026‑6477 - функции PostgreSQL libpq lo_* позволяют суперпользователю сервера перезаписывать память клиентского стека.
Использование потенциально опасной функции PQfn(..., result_is_int=0, ...) в функциях PostgreSQL libpq lo_export(), lo_read(), lo_lseek64() и lo_tell64() позволяет суперпользователю сервера перезаписывать клиентский буфер стека с помощью ответа произвольного размера.
4️⃣ CVE‑2026‑6477- PostgreSQL refint допускает переполнение стекового буфера и SQL-инъекцию.
Переполнение стекового буфера в модуле PostgreSQL refint позволяет непривилегированному пользователю базы данных выполнять произвольный код в качестве пользователя операционной системы, запускающей базу данных.
Оставшиеся 8 CVE охватывают:
📌 несколько случаев раскрытия информации (memory disclosure);
📌 уязвимости типа denial‑of‑service (DoS), связанные с некорректной обработкой сложных запросов и слотов репликации;
📌 проблемы с проверкой прав доступа при работе с логическими слотами репликации и временными таблицами.
Помимо исправлений безопасности, релиз включает более 60 баг‑фиксов, затрагивающих:
📌 планировщик запросов (улучшена оценка стоимости для сложных JOIN‑ов);
📌 репликацию (исправлена проблема при переключении лидерa в потоковой репликации, когда реплика могла читать старые данные);
📌 VACUUM и autovacuum (повышена эффективность очистки больших таблиц);
📌 работу с JSONB и массивами (исправлены редкие случаи повреждения данных при конкурентном обновлении данных).
Рекомендуется применить обновление как можно скорее, так как три из уязвимостей имеют высокую степень критичности и допускают удалённое выполнение кода без аутентификации.
В итоге выпуск от 14 мая 2026 года является одним из самых крупных пакетов безопасности в истории PostgreSQL: кроме критических исправлений, он привносит значительные улучшения производительности и стабильности во всех поддерживаемых версиях. Обновление рекомендуется к незамедлительному применению на всех рабочих и тестовых кластерах.
Более подробно об обновлении читаем на официальном сайте:
➡️ https://www.postgresql.org/about/news/postgresql-184-1710-1614-1518-and-1423-released-3297/
Постараемся выходить более регулярно, несуни на что! 😁💪
#pgnews | 1 626 |
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
