powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Логирование в 12й версии
8 сообщений из 8, страница 1 из 1
Логирование в 12й версии
    #40047037
kliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня! Подскажите пожалуйста можно ли настроить логирование как в старой версии, не могу найти

на версии 9.6 в лог попадают запросы с одной записью duration.

В 12 версии общее время выполнения разбивается на фазы выполнения запроса, что делает лог вообще не читаемым каким то, особенно, если многострочные запросы.

Было

2021-02-19 10:33:22.471 MSK [24988] LOG: duration: 120.202 ms
SELECT .....
FROM ....
WHERE $1
2021-02-19 10:33:22.471 MSK [24988] DETAIL: parameters: $1 = 764


Теперь стало

2021-02-19 10:33:22.471 MSK [24988] LOG: duration: 1.21 ms parse pdo_stmt_00000022:
SELECT .....
FROM ....
WHERE $1
2021-02-19 10:33:22.475 MSK [24988] LOG: duration: 3.360 ms bind pdo_stmt_00000022:
SELECT .....
FROM ....
WHERE $1
2021-02-19 10:33:22.475 MSK [24988] DETAIL: parameters: $1 = 764
2021-02-19 10:33:22.475 MSK [24988] LOG: duration: 110.556 ms execute pdo_stmt_00000022:
SELECT .....
FROM ....
WHERE $1
2021-02-19 10:33:22.475 MSK [24988] DETAIL: parameters: $1 = 764
2021-02-19 10:33:22.476 MSK [24988] LOG: duration: 0.065 ms statement: DEALLOCATE pdo_stmt_00000022


SELECT запросы соответственно по 100-700 строк. Превращают старые 702 строки в новые 2000 строк.

Можно ли как то настроить и схлопнуть в старый формат такую детализацию? Чтоб все фазы выполнения были в общей строке?
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40047059
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставьте PDO::ATTR_EMULATE_PREPARES в true на приложении.

Вы сами отправляете раздельно parse, bind и execute запросы. База честно, согласно своим настройкам, логирует. Большой вопрос, к слову, в осмысленности логирования единиц ms
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40047101
kliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,
логику работы запроса менять не хотелось бы, prepare делается на бд.

Да и как будет работать сбор статистики, если prepare делать на стороне приложения, очевидно статистика будет сломана, каждый запрос будет падать в таблицу отдельной строкой.
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40047158
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kliff
Melkij,
логику работы запроса менять не хотелось бы, prepare делается на бд.

Да и как будет работать сбор статистики, если prepare делать на стороне приложения, очевидно статистика будет сломана, каждый запрос будет падать в таблицу отдельной строкой.


если prepare делается на БД то и в лог пойдет 3 запроса (parse/bind/execute)
при этом зачастую может быть 2 запроса если parse уже выполнялся

т.е. вы хотите то что противоречит логике работы вашей же... так не бывает...
на 9.6 кстати все логгирование устроено ровно так же как и в новых версиях
и если на 9.6 у вас логгируется по другому значит prepare на стороне базы отключен там.


>>Да и как будет работать сбор статистики, если prepare делать на стороне приложения, очевидно статистика будет сломана, каждый запрос будет падать в таблицу отдельной строкой

странная идея с чего вы это взяли?

ps: большая часть проектов работает с отключенным server side prepare потому что он не совместим с transaction pooling режимом.

pps: а зачем вы вообще все в лог пишете (а не там больше 100-1000ms)?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40048293
kliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

>>странная идея с чего вы это взяли?

Как я понимаю, если prepare на бд, то приходит запрос вида select * from table where id = $1;
и параметры к этому запросу отдельно. Соответственно в статистику select * from table where id = $1; падает как один и тот же запрос.

Если на стороне приложения выполнить prepare, то parse, bind будут выполнены и на БД будут приходить запросы

select * from table where id = 14;
select * from table where id = 55;
select * from table where id = 23;
И для статистики все они будут разными


Все запросы для своих целей были временно включены.

Что то ничего хорошего не нарыл в документации, все-таки что лучше и в чем принципиальные плюсы, проблемы, какой так сказать тру стайл - на сервере делать prepare или в приложении.
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40048298
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kliff,

про какую статистику вы говорите?
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40048308
kliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij, pg_stat_statements
...
Рейтинг: 0 / 0
Логирование в 12й версии
    #40048335
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kliff,

у вас же не 9.1, в самом-то деле. pgss давным-давно умеет игнорировать T_Const в тексте запроса.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Логирование в 12й версии
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]