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.
database
sql
postgresql
Jin Kim
źródło
źródło
Odpowiedzi:
Opcja konfiguracji, której szukasz, to
log_statement = "all"
(jeśli potrzebujesz tylko instrukcji) lublog_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 .źródło
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 zapytanieauto_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.źródło
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.
Przykładowe raporty: tu i tutaj .
źródło