Skip to content

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

Christophe Pettus, All Your GUCs in a Row: enable_partition_pruning


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


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

Как узнать последнее значение, используемое последовательностью в SQL Server

Пересказ статьи Greg Low. How to determine the last value used by a sequence in SQL Server


Я являюсь фанатом последовательностей с тех пор, когда они появились в SQL Server 2012. До этого у разработчиков был выбор между столбцами IDENTITY и создания собственного механизма для таблиц.

Что такое последовательности в SQL Server?


Последовательности позволяют создавать привязанный к схеме объект, который не связан ни с какой конкретной таблицей.

Например, если у меня есть таблицы Sales.FlightBookings и Sales.VehicleBookings, и я хочу иметь общий BookingID, используемый как ключ для каждой таблицы. Если бы речь шла не только о BookingID, вы могли бы возразить, что существует проблема с нормализацией таблиц, но мы оставим это обсуждение на будущее. Продолжить чтение "Как узнать последнее значение, используемое последовательностью в SQL Server"
Категории: T-SQL

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

Christophe Pettus, All Your GUCs in a Row: enable_parallel_hash


Переключатель для параллельных запросов, уточняющий хэш-соединение из статьи про enable_hashjoin, и он требует точности, потому что «хэш-соединение, выполняемое параллельно» и «параллельное хэш-соединение» — это две действительно разные вещи. По умолчанию включён, контекст пользовательский, и он относится к тому же семейству, что и enable_async_append: это диагностический инструмент, а не регулятор настройки.

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

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

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


Оптимизация для секционирования и примечательное исключение в семействе enable_*: по умолчанию она выключена. Почти все остальные члены семейства по умолчанию включены и существуют для того, чтобы вы могли отключить возможность для диагностики; этот же по умолчанию выключен и существует для того, чтобы вы могли включить его, когда решите, что оно стоит затрат. Это обратное поведение — и стоимость, которая его мотивирует, — составляют суть данного поста. Контекст — пользовательский. И в отличие от большинства членов семейства, изменение этого параметра — это легитимное решение по настройке, а не просто диагностический зонд.

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

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

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


Возвращаемся к параллельным запросам и параметру, который легко спутать с первым в этом семействе. enable_async_append был посвящён параллельному выполнению внешних сканирований на удалённых серверах. Параметр enable_parallel_append касается параллельного выполнения локальных дочерних узлов Append на рабочих процессах. Разный механизм, другая задача, похожее название. По умолчанию включён, контекст пользовательский, и он относится к тому же семейству: это диагностический инструмент, а не регулятор настройки.

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

Слишком много таблиц — это плохо

Автор: Laurenz Albe, Too many tables are bad for you


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

Продолжить чтение "Слишком много таблиц — это плохо"

Новости за 2026-08-08 - 2026-08-14

§ Необычный конкурс объявил pegoopik для задачи 166 обучающего этапа. Подробные условия на форуме задачи.

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

Рейтинг	Участник (решенные задачи)
15 gennadi_s (205)

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

	Участник		w_sel	all_sel	select	dml	Всего	Рейтинг
Шибаев (saah) 3 80 7 0 7 735
Лященко С.Н. (pimen78) 3 123 6 0 6 176

§ Претенденты на попадание в TOP 100

Рейтинг	 Участник (решенные задачи, время в днях)
153 Tigra1 (148, 28.485)
176 pimen78 (123, 115.571)
Продолжить чтение "Новости за 2026-08-08 - 2026-08-14"

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

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


Последний из трёх переключателей стратегий соединения и в некотором смысле самый важный, потому что вложенный цикл (nested loop) — это одновременно и простейшее соединение в PostgreSQL, и источник самого печально известного катастрофического падения производительности. Три алгоритма были представлены в статье про enable_hashjoin; этот пост завершает серию. По умолчанию включён, контекст — пользовательский, и он относится к тому же семейству, что и enable_async_append: это диагностический инструмент, а не регулятор настройки.

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

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

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


Второй из трёх переключателей стратегий соединения. Три алгоритма были изложены в статье про enable_hashjoin — вложенный цикл, соединение слиянием и хэш-соединение, — так что здесь мы углубимся в средний из них. По умолчанию включён, контекст — пользовательский, и он относится к тому же семейству, что и enable_async_append: это диагностический инструмент, а не регулятор настройки.

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

Обновление кластеров PostgreSQL 19 стало ещё более бесшовным

Автор: Vigneshwaran C , Closing a critical gap in PostgreSQL upgrade workflows with sequence synchronization


Обновление кластеров PostgreSQL 19 стало более плавным благодаря таким инструментам, как pg_upgrade и pg_createsubscriber, которые вместе обеспечивают обновление с практически нулевым временем простоя, сначала преобразуя физические реплики в логических подписчиков, а затем выполняя обновление с минимальным прерыванием обслуживания.


Однако этот подход обнажает давний пробел в логической репликации: состояние последовательностей (sequence state) не реплицируется.


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




Узнайте, как PostgreSQL 19 улучшает процессы обновления благодаря внедрению синхронизации последовательностей, обеспечивая безопасные и бесшовные переходы при обновлении баз данных.


Продолжить чтение "Обновление кластеров PostgreSQL 19 стало ещё более бесшовным"

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

Автор: Christophe Pettus, All Your GUCs in a Row: enable_material and enable_memoize


Два переключателя enable_* для двух узлов плана, которые оба, условно говоря, кешируют строки, чтобы избежать повторных вычислений, — именно поэтому их путают, и именно поэтому их стоит рассматривать вместе. Они не являются вариациями одной идеи. Materialize — это «тупой» буфер; Memoize — это «умный» кеш. Суть этого поста — чётко зафиксировать это различие. Оба параметра включены по умолчанию, оба относятся к пользовательскому контексту, и оба находятся в том же семействе, что и enable_async_append: это диагностические инструменты, а не регуляторы настройки производительности.

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

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

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


Третий способ использования индекса, после обычного индексного сканирования и сканирования битовой карты из enable_indexscan и enable_bitmapscan, — и тот, у которого есть наиболее неправильно понимаемый «подвох», потому что сканирование только по индексу может быть физически возможным, но всё равно заканчиваться чтением кучи почти для каждой строки. Почему это происходит, и есть суть этого поста. По умолчанию включён, контекст — user, с тем же обрамлением семейства, что и у enable_async_append: диагностический инструмент, а не регулировочная ручка.

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

Новости за 2026-08-01 - 2026-08-07

§ Популярные темы недели на форуме

Топик		Сообщений	Просмотров
65 (Learn) 5 7
Guest's book 3 10
779 (SELECT) 2 7
198 (SELECT) 2 6

§ Авторы недели на форуме

Автор		Сообщений
selber 6
pegoopik 4
vencid 2

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

Рейтинг	Участник (решенные задачи)
15 gennadi_s (204)
Продолжить чтение "Новости за 2026-08-01 - 2026-08-07"

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

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


Действительно хорошая функциональность скрывается за этим переключателем, что делает его одним из наиболее интересных параметров семейства enable_* для понимания, — и одним из немногих, у кого есть известный сценарий отказа, который стоит распознавать. По умолчанию включён, контекст — user, с тем же обрамлением семейства, что и у enable_async_append: диагностический инструмент, а не регулировочная ручка. Инкрементальная сортировка появилась в PostgreSQL 13 (Томаш Вондра и Джеймс Коулман), и когда она помогает, она помогает очень сильно.

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

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

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


Первый из трёх переключателей стратегий соединения, поэтому прежде чем перейти к параметру, — один абзац о том, внутри чего он находится: в PostgreSQL есть ровно три способа соединения двух таблиц, и для каждого соединения в каждом запросе планировщик выбирает один из них. Три переключателя enable_* для соединений — этот, enable_mergejoin и enable_nestloop — позволяют вам убрать один вариант со стола и посмотреть, что планировщик выберет вместо него. То же правило семейства, что и всегда (enable_async_append): диагностические инструменты, а не регулировочные ручки. По умолчанию включён, контекст — user.

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