Skip to content

Всё о GUC по порядку:

Автор: Christophe Pettus, All Your GUCs in a Row: data_directory


В чём смысл этого параметра? SHOW data_directory_mode сообщает права доступа Unix на каталог данных — 0700 или 0750 — и это всё, что он делает. Он доступен только для чтения; вы не можете его установить. И он сообщает факт, который ls -ld $PGDATA сообщил бы вам не хуже. Так зачем же он нужен как GUC?


Продолжить чтение "Всё о GUC по порядку: "

Новости за 2026-06-27 - 2026-07-03

§ Изменения среди лидеров рейтинга

Рейтинг	Участник (решенные задачи)
20 Dmitriy Varenikov (251)

§ Лидеры недели

	Участник		w_sel	all_sel	select	dml	Всего	Рейтинг
Никольский И.Ю. (igoryun) 9 63 18 11 29 641
Сафронов П.А. (Paulus73) 7 150 14 0 14 135
Шибаев (saah) 9 50 14 0 14 1452
Gitinomagomedov (gmansur88) 5 64 11 1 12 725
fioletovaya (fioletovaya2) 2 138 9 0 9 144
Palela D. (Davitapalela) 4 4 6 20 26 4132
Скоков Б.С. (leks$$) 2 37 6 0 6 1325
Вареников Д.М. (Dmitriy Varen 2 230 5 0 5 20
P I.*. (IrinaPetr) 2 86 5 0 5 520
Odnokurtsev (AlFochino) 2 124 4 0 4 253
Vladimirovich V.B. (vladimirb 2 5 4 0 4 6573

Продолжить чтение "Новости за 2026-06-27 - 2026-07-03"

Всё о GUC по порядку: data_directory

Автор: Christophe Pettus, All Your GUCs in a Row: data_directory


data_directory указывает расположение каталога данных кластера — того самого каталога, который подразумевают под $PGDATA, содержащего base/, pg_wal/, global/ и всё остальное. Контекст — postmaster: параметр можно задать в postgresql.conf или в командной строке, но никогда во время работы. И, как и небольшое число других параметров, его нельзя установить через ALTER SYSTEM — по очевидной причине: ALTER SYSTEM записывает изменения в postgresql.auto.conf, который находится внутри каталога данных, то есть внутри того самого объекта, который вы пытаетесь указать. Нельзя использовать файл внутри «коробки», чтобы сообщить PostgreSQL, где находится эта коробка.


Эта циркулярная зависимость и составляет всю историю данного параметра, так что давайте разберёмся с ней.

Продолжить чтение "Всё о GUC по порядку: data_directory"

Настройка производительности в PostgreSQL 17: создание таблиц, вставка 10М записей и обнаружение неиспользуемых индексов

Пересказ статьи Jeyaram Ayyalusamy. PostgreSQL 17 Performance Tuning: Creating Tables, Populating 10M Records, and Detecting Unused Indexes




При настройке PostgreSQL большинство разработчиков и администраторов баз данных сосредотачиваются на поиске отсутствующих индексов, чтобы ускорить запросы. Это важный этап, но есть другая сторона медали: иногда вам требуется обнаружить индексы, которых вообще не следует иметь.

Неиспользуемые или избыточные индексы часто упускаются из виду, хотя они могут незаметно снижать производительность системы. В этой статье мы узнаем, почему это происходит, и на практическом примере создания большого набора данных и построения индексов проанализируем, какие из них действительно полезны.
Продолжить чтение "Настройка производительности в PostgreSQL 17: создание таблиц, вставка 10М записей и обнаружение неиспользуемых индексов"

Файловые дескрипторы: предел ОС, который выводит PostgreSQL из строя

Автор: Warda Bibi, File Descriptors: The OS Limit That Takes Down PostgreSQL


Большинство отказов PostgreSQL, связанных с исчерпанием файловых дескрипторов, ошибочно воспринимаются как проблема самой базы данных. Отказ происходит на уровень ниже: ядро исчерпывает файловые дескрипторы, и удар принимает на себя PostgreSQL. В этой статье рассказывается, как это происходит в условиях большого количества подключений, как читать последовательность записей в журнале при возникновении проблемы и как её исправить.

Продолжить чтение "Файловые дескрипторы: предел ОС, который выводит PostgreSQL из строя"

pg_stat_statements: всё, что оно не может

Автор: Radim Marek, pg_stat_statements: everything it can't


В первой части был изложен основной тезис: pg_stat_statements считает, а не записывает. В ней было показано, как перемешивание queryid разбивает один логический запрос на множество строк, как зафиксированный при первом появлении текст «замораживает» ваши теги на каждый запрос и как усреднённые значения скрывают тот p99, который на самом деле заставляет вас просыпаться по ночам. Всё это касалось данных, которые расширение собирает, но искажает.

Продолжить чтение "pg_stat_statements: всё, что оно не может"

Всё о GUC по порядку: data_checksums

Автор: Christophe Pettus, All Your GUCs in a Row: data_checksums


Параметр только для чтения, подобно block_size, — команда SHOW data_checksums сообщает, включены ли в кластере контрольные суммы страниц, и это единственное взаимодействие, которое предлагает данный GUC. Но, в отличие от block_size, у этого параметра тринадцатилетняя история, которая всё ещё пишется, и эта история и есть предмет данной статьи.



Продолжить чтение "Всё о GUC по порядку: data_checksums"

Всё о GUC по порядку: cursor_tuple_fraction

Автор: Christophe Pettus, All Your GUCs in a Row: createrole_self_grant


Большинство параметров стоимости планировщика связаны с моделированием оборудования — насколько дорого чтение случайной страницы, насколько дорог такт ЦП. cursor_tuple_fraction отличается. Он связан с моделированием вас: а именно, с предположением планировщика о том, какую часть результата курсора вы на самом деле собираетесь извлечь.

Продолжить чтение "Всё о GUC по порядку: cursor_tuple_fraction"

pg_stat_statements: о чём оно нам говорит

Автор: Radim Marek, pg_stat_statements: everything it tells you


Расширение pg_stat_statements — если не первое, то одно из самых используемых в экосистеме PostgreSQL. Оно поставляется в составе contrib и практически не требует затрат на использование. Большинство из нас обращаются к нему, чтобы ответить на вопрос: что на самом деле делает база данных? Это действительно полезно. Вы можете использовать его, чтобы получить снимок того, что происходило в заданный интервал времени, и быстрее принять решение о том, что исправлять.

Продолжить чтение "pg_stat_statements: о чём оно нам говорит"

Всё о GUC по порядку: createrole_self_grant

Автор: Christophe Pettus, All Your GUCs in a Row: createrole_self_grant


createrole_self_grant — небольшой, недавний (PostgreSQL 16) и почти невозможный для объяснения изолированно. Чтобы рассказать, что он делает, нам нужно поговорить о том, какой была система ролей до 16-й версии, какой она стала сейчас и почему произошли изменения. Этот параметр является одним из видимых артефактов довольно существенного пересмотра, и этот пересмотр интереснее самого параметра.

Продолжить чтение "Всё о GUC по порядку: createrole_self_grant"

Ночь, когда наши таблицы не переставали расти

Автор: Semab Tariq, The Night Our Tables Wouldn’t Stop Growing


Мы делали всё правильно. План миграции был надёжным, команда опытной, и мы делали такое и раньше. Но где-то около полуночи кто-то из команды заметил нечто странное. Таблицы на стороне назначения неожиданно разрастались, потребляя сотни гигабайт, в то время как таблицы на исходной стороне спокойно занимали всего несколько мегабайт.


Что-то было серьёзно не так, и мы понятия не имели, что именно.

Продолжить чтение "Ночь, когда наши таблицы не переставали расти"

Всё о GUC по порядку: cpu_index_tuple_cost, cpu_operator_cost и cpu_tuple_cost

Автор: Christophe Pettus, All Your GUCs in a Row: cpu_index_tuple_cost, cpu_operator_cost и cpu_tuple_cost


cpu_tuple_cost, cpu_index_tuple_cost и cpu_operator_cost — это три константы, которые планировщик использует для оценки стоимости запроса. Самое полезное, что можно знать о всех трёх — это то, что вам почти наверняка никогда не следует их менять. Остальная часть статьи объясняет, почему.

Продолжить чтение "Всё о GUC по порядку: cpu_index_tuple_cost, cpu_operator_cost и cpu_tuple_cost"

Всё о GUC по порядку: constraint_exclusion

Автор: Christophe Pettus, All Your GUCs in a Row: constraint_exclusion


constraint_exclusion управляет трюком планировщика: когда таблица имеет ограничение CHECK, планировщик может сравнить это ограничение с условием WHERE вашего запроса и, если они противоречат друг другу, пропустить сканирование таблицы целиком.

Продолжить чтение "Всё о GUC по порядку: constraint_exclusion"

Сравнение DATE_BUCKET и DATETRUNC

Пересказ статьи Chad Callihan. Comparing DATE_BUCKET and DATETRUNC


Если вы не много экспериментировали с SQL Server 2022, вы может быть незнакомы с функциями DATE_BUCKET и DATETRUNC. Обе они полезны, когда дело доходит до агрегирования данных. Давайте рассмотрим каждую из этих функций на нескольких примерах.

DATE_BUCKET


Начнем с DATE_BUCKET. DATE_BUCKET дает вам возможность агрегировать данные на основе выбранного вами интервала. Допустим, мы имеем такой набор событий:


Продолжить чтение "Сравнение DATE_BUCKET и DATETRUNC"
Категории: T-SQL

Всё о GUC по порядку: config_file

Автор: Christophe Pettus, All Your GUCs in a Row: config_file


config_file сообщает серверу PostgreSQL, где находится postgresql.conf, что должно заставить вас на мгновение задуматься. Если сервер узнаёт, где находится его файл конфигурации, из параметра, а параметры берутся из файла конфигурации, как он вообще находит первый файл?

Продолжить чтение "Всё о GUC по порядку: config_file"