отлавливания deadlocks? Чтобы он историю запросов показывал, которая предшествует дедлоку.
Ну или может намек дадите, как такой инструмент сделать, чтобы запросы в логах можно было раскидать по клиентам базы.
нет такого инструмента, т.к. нельзя посмотреть в будущее и узнать будет ли там дедлок. можно использовать только обычные средства логирования всех запросов (log_min_duration_statement), залогировать все запросы, и при обнаружении дедлока выгрепать из логов нужное
В будущее не нужно смотреть. Мне нужно что по факту было. Как добавить какую нибудь метку к каждому запросу чтобы понимать, чтобы этот от одного клиента, а этот от другого?
смотрите формат log_line_prefix
про будущее тут вот какая отсылка... при высоком tps логировать все запросы может быть очень дорого и нецелесообразно. соотв. нельзя посмотреть в будущее понять что вот запрос А будет связан с дедлоком и его стоит залогировать, а вот запрос Б не будет связан и его не надо логировать. Поэтому обычно логирование всегда настраиватется с каким-то компромисом (логировать дольше N милисекунд, или сэмплинг). И при таких компромисах, при обнаружении дедлока, нельзя построить 100% достоверную историю запросов вовлеченных в дедлок. это надо понимать.
Ясно. Ну да, мне на тестовом серваке надо. Могу позволить логировать все
application_name.
Такая метка в логе называется "backend pid".
И да... А зачем?
Обсуждают сегодня