тут https://chartio.com/resources/tutorials/how-to-log-queries-in-postgresql/#verifying-log-generation? Насколько падает производилеьность , если падает? Есть ли более оптимальные способы включить лог запросов в БД и не уронить производительность
pg_stat_statements не подойдет?
Кажется, это продолжение истории про аудит.
статья просто описывает включение лог коллектора и запись логов в CSV формате. От таких действий производительность не просядет. Произ-ть может просесть от объемов записи в лог и производительности дисков где расположен лог-файл.
А это может как то влиять на производительность? Если да, то в каких случаях
Всё подобное как-то снижает производительность, безусловно (во всех случаях). И, тем не менее, по крайней мере log_min_duration_statements и pg_stat_statements широко используются в высоконагруженных production — потому что мониторинг того стоит, в общем. Что касается стоимости в плане производительности — дороже всего полное логирование (но, тем не менее, некоторых это не останавливает) и auto_explain, наверное.
Спасибо за ответ. Попробовали реализовать. Почему в запросах к pg_stat_statements все констранты отражаются как $1? Это нормально или нужно что то исправить? Например, select * from table1 where col = 'aaa' отражается как select * from table1 where col = $1
Прямо из https://www.postgresql.org/docs/current/pgstatstatements.html : Plannable queries (that is, SELECT, INSERT, UPDATE, and DELETE) are combined into a single pg_stat_statements entry whenever they have identical query structures according to an internal hash calculation. Typically, two queries will be considered the same for this purpose if they are semantically equivalent except for the values of literal constants appearing in the query. Utility commands (that is, all other commands) are compared strictly on the basis of their textual query strings, however. When a constant's value has been ignored for purposes of matching the query to other queries, the constant is replaced by a parameter symbol, such as $1, in the pg_stat_statements display. The rest of the query text is that of the first query that had the particular queryid hash value associated with the pg_stat_statements entry.
Обсуждают сегодня