Когда запрос создает временные файлы, он записывает две записи для каждой в файл журнала. Первый содержит информацию о самом временном файле, второй - полный запрос SQL. Примерно так:
2020-05-08 11:02:32 EDT 2020-05-08 10:17:04 EDT 19297 60/837 0 LOG: temporary file: path "base/pgsql_tmp/pgsql_tmp19297.3079949", size 297
2020-05-08 11:02:32 EDT 2020-05-08 10:17:04 EDT 19297 60/837 0 STATEMENT: SELECT ...
Иногда запрос записывает миллионы маленьких временных файлов (по какой-то причине он не создает большой). Но тогда запрос SQL будет регистрироваться все эти миллионы раз в моем файле postgresql -10-main.log и заполнять файловую систему журналов.
Есть ли способ сообщить Postgres записывать выписку только при создании первого временного файла? Я не хочу полностью отключать это ведение журнала, так как оно очень полезно для выявления и обработки запросов, которые используют слишком много временного пространства.
Моя текущая конфигурация журнала выглядит следующим образом:
log_timezone = 'localtime'
log_statement = 'none'
log_duration = off
log_min_duration_statement = 5000
log_line_prefix = '%t %s %p %v %x '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
track_functions = all
log_temp_files = 0
log_autovacuum_min_duration = 0
Спасибо!