fa
Feedback
Postgres Guru | Базы данных 💐

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