Существует способ регистрировать медленные запросы через расширение pg_stat_statements
, которое поддерживается Cloud SQL.
Поскольку Cloud SQL не предоставляет права суперпользователя ни одному из пользователей, вам необходимо использовать обходной путь.
Во-первых, вам нужно включить расширение с помощью
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
тогда вы можете проверять медленные запросы с помощью запроса типа
SELECT pd.datname,
us.usename,
pss.userid,
pss.query AS SQLQuery,
pss.rows AS TotalRowCount,
(pss.total_time / 1000) AS TotalSecond,
((pss.total_time / 1000) / calls) as TotalAverageSecond
FROM pg_stat_statements AS pss
INNER JOIN pg_database AS pd
ON pss.dbid = pd.oid
INNER JOIN pg_user AS us
ON pss.userid = us.usesysid
ORDER BY TotalAverageSecond DESC
LIMIT 10;
Как пользователь postgres
вы можете просматривать все медленные запросы, но, поскольку пользователь не является суперпользователем, вы увидите <insufficient privilege>
по всем запросам других пользователей.
Чтобы обойти это ограничение, вы можете установить расширение и в других базах данных (обычно только postgres
пользователь имеет право устанавливать расширения), и вы можете проверить текст запроса у владельца базы данных.