Skip to content

Всё о GUC по порядку: client_connection_check_interval</h1>

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


По-настоящему полезный параметр, о котором почти никто не знает. Добавлен в PostgreSQL 14, по умолчанию выключен, исправляет конкретную патологию, которую каждый, кто запускал аналитические нагрузки, пережил хотя бы раз.

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

Всё о GUC по порядку: log_min_duration_sample, log_statement_sample_rate и log_transaction_sample_rate

Автор Christophe Pettus: All Your GUCs in a Row: log_min_duration_sample, log_statement_sample_rate, and log_transaction_sample_rate


В прошлый раз мы закончили на log_min_duration_statement, установленном на порог, который вы действительно стали бы расследовать. Цена этого порога в том, что всё ниже него невидимо, а запросы ниже него часто и есть суть истории: один запрос, выполняющийся минуту, — это проблема, которую вы видите, но двадцать миллионов запросов по миллисекунде каждый — это пять с половиной часов времени базы данных, которые никогда не породят ни одной строки журнала. pg_stat_statements показывает вам этот агрегат. Чего он не может показать — так это реальный экземпляр: настоящее выполнение, с его настоящими значениями параметров, в его настоящий момент. Вот что покупают эти три параметра, при объёме журнала, который вы выбираете заранее.

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

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

Автор Christophe Pettus: All Your GUCs in a Row: log_parameter_max_length and log_parameter_max_length_on_error


Все остальные параметры журналирования операторов в этом семействе решают, попадёт ли запрос в журнал. Эти два решают, попадут ли туда данные ваших пользователей.


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

Если не pgBackRest, то что? Переосмысливание резервных копий PostgreSQL в 2026 году

Пересказ статьи Tomasz Gintowt. If not pgBackRest, then what? Rethinking PostgreSQL Backups in 2026


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

Но в 2026 году кое-что радикально поменялось.

Конец pgBackRest (каким мы его знаем)


Мейнтейнер pgBackRest официально объявил, что проект больше не поддерживается спустя более десятилетия его разработки.

Вы можете прочитать официальное объявление здесь.

Сообщение недвусмысленно говорит: "Проект больше не поддерживается и последний релиз, вероятно, будет последним.

Первоначальный автор ушел через 13 лет, сославшись на проблемы устойчивого развития и отсутствие долгосрочной поддержки.
Продолжить чтение "Если не pgBackRest, то что? Переосмысливание резервных копий PostgreSQL в 2026 году"

Всё о GUC по порядку: log_min_messages, log_min_error_statement и log_error_verbosity

Автор Christophe Pettus: All Your GUCs in a Row: log_min_messages, log_min_error_statement, and log_error_verbosity


Каждое сообщение на пути к серверному журналу проходит через трое ворот: попадает ли оно туда вообще, едет ли вместе с ним SQL, который его вызвал, и сколько его полей будет напечатано. По одному параметру на каждые ворота. Все три управляют только копией сообщения в журнале; то, что видит клиент, — дело client_min_messages, и эти два потока фильтруются независимо. Все три имеют контекст superuser: их можно устанавливать на лету в сеансе, но только суперпользователем или ролью, которой предоставлено право SET на параметр (15 и новее), и суперпользователь может ограничить их область с помощью ALTER ROLE ... SET или ALTER DATABASE ... SET. Обычная роль входа подхватывает ALTER ROLE ... SET log_min_messages во время подключения, даже если она не может установить параметр сама; я проверил.

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

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

Автор Christophe Pettus: All Your GUCs in a Row: log_line_prefix and log_timezone


Строка журнала состоит из двух частей: сообщение, которое определяет PostgreSQL, и всё, что перед ним, что определяете вы. log_line_prefix — это ключ соединения. Каждый факт, позволяющий связать строку с сеансом, транзакцией, клиентом или моментом в журналах другой системы, должен быть в префиксе, потому что само сообщение его не несёт. Значение по умолчанию — '%m [%p] ' начиная с 10; двенадцать лет до этого оно было пустой строкой, и строка журнала PostgreSQL из коробки не имела отметки времени. log_timezone решает, какие часы читает %m.

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

Всё о GUC по порядку: log_rotation_age, log_rotation_size и log_truncate_on_rotation

Автор Christophe Pettus: All Your GUCs in a Row: log_rotation_age, log_rotation_size, and log_truncate_on_rotation


Эти три параметра решают, когда сборщик журналов закрывает один файл и открывает другой, и они имеют смысл только вместе с log_filename, потому что сборщик никогда ничего не удаляет: ротация — это просто «вычислить имя по шаблону и открыть его». Что произойдёт дальше, полностью зависит от того, является ли это имя новым, и три параметра здесь управляют временем и одной деталью открытия. Два из трёх названы неверно, один — ловушка в собственном примере документации, а механика достаточно коротка, чтобы изложить её полностью.

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

Понимание выбора жертвы тупика в SQL Server

Пересказ статьи john.martin. Understanding Deadlock Victim Selection in SQL Server


Введение


Если вы имеете дело с SQL Server в средах с несколькими одновременно работающими пользователями, то, вероятно, встречались с тупиковыми ситуациями. Тупики случаются, когда две или более транзакций блокируют друг друга, делая продолжение невозможным. Когда это происходит, вмешивается SQL Server, который откатывает одну из транзакций, позволяя другим продолжить работу. Откат транзакции получает ошибку 1205.

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

Всё о GUC по порядку: log_directory, log_filename и log_file_mode

Автор Christophe Pettus: All Your GUCs in a Row: log_directory, log_filename, and log_file_mode



Все эти три параметра ничего не делают, если logging_collector выключен; они описывают файлы, которые пишет сборщик. Где, как они называются и кто может их читать. Значения по умолчанию для всех трёх хороши для ноутбука и неправильны для сервера, и причины более механистичны, чем позволяет предположить документация.

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

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

Автор Christophe Pettus: All Your GUCs in a Row: log_destination and logging_collector


Если вы не запросили syslog, каждое сообщение, которое регистрирует PostgreSQL, — это запись в стандартный поток ошибок. Таков весь механизм, и два десятка параметров log_*, следующих за этим, — лишь уточнения к нему: что записывается, в каком формате и что перехватывает это на другом конце. Эти два параметра — та самая часть «что перехватывает», поэтому данная статья несёт на себе всю сантехнику, а остальные из этого семейства могут ссылаться сюда (logging_collector идёт после log_truncate_on_rotation; я вынес его вперёд, потому что log_destination нельзя объяснить без него).

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

Всё о GUC по порядку: log_connections, log_disconnections и log_hostname

Автор Christophe Pettus: All Your GUCs in a Row: log_connections, log_disconnections, and log_hostname


Большая часть семейства log_* посвящена тому, что происходило внутри сеанса. Эти три — о самом сеансе: кто появился, когда, сколько времени потребовалось, чтобы впустить его, сколько он оставался и (если настаиваете) как называлась его машина. Значения по умолчанию не протоколируют ничего из этого. Это понятный выбор для ноутбука и неправильный для любого сервера, о котором вам могут отправить уведомление.

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

Всё о GUC по порядку: log_checkpoints, log_autovacuum_min_duration и log_temp_files

Автор Christophe Pettus: All Your GUCs in a Row: log_checkpoints, log_autovacuum_min_duration, and log_temp_files


А теперь наденем болотные сапоги и отправимся в топь, которой являются все GUC-параметры журналирования PostgreSQL.



PostgreSQL 8.3 — выпуск, в котором сервер всерьёз занялся собственным хозяйством: autovacuum включён по умолчанию, контрольные точки распределены по интервалу, а не сброшены в его конце, HOT-обновления. Тот же выпуск добавил три параметра для наблюдения за этим и поставил все три выключенными. Четырнадцать лет и четырнадцать мажорных версий спустя PostgreSQL 15 включил два из них. Третий всё ещё ждёт, и я объясню, почему он не должен ждать.

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

Новости за 2026-10-03 - 2026-10-09

§ Рейтинговая задача 192 от Baser перенесена на обучающий этап под номером 169 (сложность 3 балла).


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

Топик		Сообщений	Просмотров
168 (Learn) 5 6
242 (SELECT) 4 3
138 (SELECT) 2 5
53 (SELECT) 2 7

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

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

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

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

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


listen_addresses решает, какие TCP-сокеты существуют. Он ничего не говорит о том, кому можно ими пользоваться; это дело pg_hba.conf, и большая часть огорчений, которые вызывает этот параметр, происходит из-за путаницы в этих двух вещах.

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

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

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


lo_compat_privileges возвращает защиту больших объектов к состоянию PostgreSQL 8.4 — последнего выпуска, в котором большой объект не принадлежал никому конкретно и любая роль, способная подключиться к базе данных, могла его прочитать, перезаписать или удалить. В PostgreSQL 9.0 у больших объектов появился владелец и список управления доступом (ACL). Этот параметр — переключатель, который делает вид, будто этого не произошло.

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