В логах PostgreSQL можно определить, какому запросу относится операция ROLLBACK, посмотрев на значение поля `transaction ID`. Каждая транзакция в PostgreSQL имеет свой уникальный идентификатор, который автоматически генерируется при начале транзакции. При каждой операции в рамках транзакции, включая ROLLBACK, в логах будет указано значение этого идентификатора.
Для идентификации запросов, вызывающих роллбеки, при включенной опции `log_min_duration_statement=-1`, можно использовать следующий подход:
1. Включите `'log_statement' = 'all'` в конфигурационном файле PostgreSQL. Это позволит записывать в логи все SQL-запросы, включая те, которые вызывают роллбеки.
2. Запустите PostgreSQL с этой конфигурацией и наблюдайте логи.
3. При возникновении роллбека, найдите соответствующую запись в логах и обратите внимание на значение поля `transaction ID`.
4. Используйте это значение для поиска запросов, связанных с этой транзакцией. В логах можно искать по этому идентификатору, чтобы найти все запросы, выполненные в рамках данной транзакции.
Обратите внимание, что при таком подходе обрабатывать десятки или сотни тысяч запросов в минуту может быть довольно ресурсоемкой задачей. Рекомендуется использовать подходящие инструменты для анализа и фильтрации логов PostgreSQL, такие как `pgBadger` или `pg_stat_statements`, чтобы сократить объем данных и упростить анализ.