Skip to content

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

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


Название немного вводит в заблуждение. deadlock_timeout — это не время, в течение которого PostgreSQL терпит взаимоблокировку, прежде чем её разорвать, — взаимоблокировки прерываются в тот же миг, как только они обнаружены. Это время, которое процесс ожидает блокировку, прежде чем PostgreSQL вообще удосужится проверить наличие взаимоблокировки. Значение по умолчанию — 1 с, контекст — superuser, и разрыв между тем, что подразумевает название, и тем, что на самом деле делает параметр, и составляет суть данной статьи.


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

Изучаем PostgreSQL вместе с Grant Fritchey: хранилище данных

Пересказ статьи Grant Fritchey. Learning PostgreSQL with Grant: Data Storage


Если вы размещаете свои базы данных на виртуальной машине (ВМ) или на каком-то большом железе, одним из наиболее узких мест, с которым вы, вероятно столкнетесь в кластерах PostgreSQL, является ввод/вывод. Когда ввод/вывод находится в центре потенциальных проблем производительности, очень важно понимать, как PostgreSQL управляет им. Я собираюсь начать прямо сейчас с того, как данные хранятся на диске. В следующей статье мы обсудим, как выполняется запись и чтение.

Прежде чем погрузиться в детали, я хочу затронуть пару вопросов, связанных с хранением данных в PostgreSQL. Во-первых, расширения. Некоторые из наиболее впечатляющих расширений напрямую связаны с хранением данных (глядя на TimeScale). Они могут изменить те основы, которые мы собираемся обсуждать здесь. Коли так, каждое из них требует отдельного обсуждения, чтобы понять, как они влияют на хранение в PostgreSQL.
Продолжить чтение "Изучаем PostgreSQL вместе с Grant Fritchey: хранилище данных"

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

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


После бездны fsync — нечто благодушное. DateStyle управляет тем, как PostgreSQL выводит даты и как разрешает неоднозначный ввод дат, и единственное, что вам действительно нужно знать о нём: оставьте его в значении ISO, а всё остальное — интересные, но маловажные детали.

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

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

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


data_sync_retry — это логический параметр, по умолчанию выключен (off), и его контекст — postmaster, так что для его изменения требуется перезапуск. Вы почти наверняка никогда его не измените. Он существует как видимый рубец от самого тревожного события, которое сообщество PostgreSQL когда-либо узнало о своих собственных допущениях относительно долговечности, и чтобы объяснить этот единственный параметр, нам придётся объяснить fsyncgate.

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

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

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


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


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

Новости за 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


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


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

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