Utrata niektórych problemów dotyczących wydajności bazy danych w dość typowej aplikacji EclipseLink/JPA.W jakich warunkach SELECT by PRIMARY KEY był powolny?
Widzę częste zapytania, które pobierają 25-100ms. Są to proste zapytania, po prostu wybieranie wszystkich kolumn z tabeli, w której klucz podstawowy jest równy wartości. Nie powinny być powolne.
Patrzę na czas kwerendy w dzienniku PostgreSQL, używając log_min_duration_statement, więc powinno to wyeliminować obciążenie sieci lub aplikacji.
To zapytanie nie jest wolne, ale jest używane bardzo często.
Dlaczego wybór * według klucza podstawowego był powolny? Czy jest to specyficzne dla PostgreSQL czy jest to ogólny błąd DB? Jak mogę to przyspieszyć? Ogólnie? Dla postgres?
zapytania próbki z dziennika pg:
2010-07-28 08:19:08 PDT - LOG: duration: 61.405 ms statement: EXECUTE <unnamed> [PREPARE: SELECT coded_ele
ment_key, code_system, code_system_label, description, label, code, concept_key, alternate_code_key FROM coded
_element WHERE (coded_element_key = $1)]
Tabela ma około 3,5 miliona wierszy.
Uruchomiłem również EXPLAIN i EXPLAIN ANALYSE dla tego zapytania, a jego jedynym zadaniem jest skanowanie indeksu.
Jak duży jest zestaw danych? Jak duży jest każdy rząd? Jak wygląda zapytanie? –
Czy zgrupowałeś swoją bazę danych? Czy przed wysłaniem robisz pełną analizę próżni? A jaka jest wersja Pg? – jmz
Brak klastrów, tak naprawdę nie jest to opcja. Nie zrobiłem jeszcze pełnej analizy próżni (będę), a to jest PG 8.1. – Freiheit