Jestem w trakcie sprawdzania każdej instrukcji SQL, którą aplikacja tworzy względem bazy danych, ze względu na wydajność. Czy istnieje prosty sposób na zarejestrowanie wszystkich instrukcji wykonywanych przez serwer bazy danych PostgreSQL? Dzięki.
Jestem w trakcie sprawdzania każdej instrukcji SQL, którą aplikacja tworzy względem bazy danych, ze względu na wydajność. Czy istnieje prosty sposób na zarejestrowanie wszystkich instrukcji wykonywanych przez serwer bazy danych PostgreSQL? Dzięki.
Odpowiedzi:
Opcja konfiguracji, której szukasz, to log_statement = "all"
(jeśli potrzebujesz tylko instrukcji) lub log_min_statement_duration = <some number>
jeśli zaraz po „wolnych” zapytaniach (dla pewnej wartości „slow”). Więcej informacji na temat konfiguracji rejestrowania można znaleźć na stronie http://www.postgresql.org/docs/current/static/runtime-config-logging.html .
explain analyze
powolnego zapytania przy remisie, który został wykonany, możesz chcieć rozpocząć testowanie z tym, ponieważ 8.4 nie jest jeszcze wydany, ale fajnie jest wiedzieć, że zdarzyło się to w czasie wykonywania , jeśli wynik analizy wyjaśnienia jest OK, prawdopodobnie masz problemy z ograniczeniami We / Wy lub procesora, ale przynajmniej będziesz wiedział, że to nie samo zapytanie
auto_explain
Moduł jest bardzo przydatny do tego celu. Będzie nie tylko rejestrować instrukcje, będzie rejestrować ich plany wykonania, a nawet rejestrować instrukcje działające w ramach funkcji PL / PgSQL. Skuteczność działania jest dość niska, chyba że włączysz analizę, w którym to przypadku poniesiesz sporo narzutu czasowego dla wszystkich zapytań.
Zobacz auto_explain
w dokumentacji.
auto_explain
, jest na ich liście błogosławionych modułów. Zobacz dokumentację na docs.aws.amazon.com/AmazonRDS/latest/UserGuide/...
Oczywiście możesz samodzielnie wykryć najwolniejsze zapytania, ale radzę używać pgFouine - analizatora logów PostgreSQL. Jest łatwy w instalacji i bardzo przydatny.