2009-10-08 13 views
19

Znalazłem wiele zasobów, które mówią o dostrajaniu serwera bazy danych, ale nie znalazłem wiele na temat dostrajania poszczególnych zapytań.Przewodniki do wyszukiwania zapytań PostgreSQL?

Na przykład w Oracle mogę spróbować dodać wskazówki, aby zignorować indeksy lub użyć sortowania w porównaniu do sprzężonych sprzężeń, ale nie mogę znaleźć wiele na temat strojenia Postgrega poza using explicit joins i zaleceń przy bulk loading tables.

Czy istnieją takie przewodniki, więc mogę skupić się na dostrajaniu najczęściej uruchamianych i/lub nieskutecznych zapytań, mam nadzieję, że bez negatywnego wpływu na obecnie skuteczne zapytania?

Byłbym szczęśliwy, gdyby udało mi się znaleźć coś, co porównało niektóre typy zapytań z innymi bazami danych, więc miałem lepszą wskazówkę, jakiego rodzaju rzeczy należy unikać.

aktualizacja:

Powinienem już wspomniano, wziąłem wszystkie klasy DBA Oracle wraz ze swoimi klasami modelowania danych i SQL tuningu powrotem w 8i dni ... więc wiem o „wyjaśnij” , ale to raczej powiedzieć, co jest nie tak z zapytaniem, niekoniecznie jak zrobić to lepiej. (np. są "while var = 1 lub var = 2" i "while var in (1,2)" uważa się za takie samo podczas generowania planu wykonania? Co jeśli robię to z 10 permutacji? Kiedy są wielokolumnowe używane są indeksy Czy są sposoby na to, aby planista mógł zoptymalizować proces, aby uzyskać najszybszy start w porównaniu z najszybszym zakończeniem? Jakie rodzaje "gotch" mogą napotkać po przejściu z mySQL, Oracle lub innego RDBMS?)

Mogę napisać dowolny złożone kwerendy, jeśli nie setki sposobów, i mam nadzieję, że nie będę musiał ich wszystkich wypróbowywać i stwierdzić, który z nich działa najlepiej przez próbę i błąd. Zauważyłem już, że "licznik SELECT (*)" nie będzie używał indeksu, ale "SELECT count (primary_key)" będzie ... może "PostgreSQL dla doświadczonych użytkowników SQL" dokument, który wyjaśnia rodzaje zapytań do unikać i jak najlepiej je ponownie napisać lub jak sprawić, by planista lepiej sobie z nimi radził.

Aktualizacja 2:

znalazłem Comparison of different SQL Implementations obejmujący PostgreSQL, DB2, MS-SQL, MySQL, Oracle i Informix i wyjaśnia, jeśli, jak i pułapek na rzeczy, można spróbować zrobić i jego sekcja odnośników powiązana z Oracle/SQL Server/DB2/Mckoi /MySQL Database Equivalents (co sugeruje jego tytuł) i do wikibook'a SQL Dialects Reference, która obejmuje wszystko, co ludzie wnoszą do projektu (zawiera niektóre DB2, SQLite, mySQL, PostgreSQL, Firebird, Vituoso, Oracle, MS-SQL, Ingres i Linter) .

+0

Niezupełnie dostrajanie zapytań, ale dla tych, którzy pochodzą z mysql, może to być przydatne: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL – Joe

+0

A dla osób pochodzących z Oracle: http: //www.cs.cmu .edu/~ pmerson/docs/OracleToPostgres.pdf; i ogólnie "gotchas" dla postgres: http://sql-info.de/postgresql/postgres-gotchas.html – Joe

+0

To może być przydatne dla ciebie postgres tuning: http://tekadempiere.blogspot.ae/2014/09/ tuning-postgresql-for-better-performance.html – Sajeev

Odpowiedz

3

najlepszych jakie widziałem są tu: , ale najpóźniej w PDF istnieje od 2008 roku, więc nie może być coś świeższego. Chciałbym usłyszeć odpowiedzi innych użytkowników.

Również parzenia coś jest w pakietach contrib: http://www.sai.msu.su/~megera/wiki/plantuner

4

Narzędzie PGAdmin3 zawiera narzędzie graficzne wyjaśnienie uszkodzi jak kwerenda jest obsługiwane. Jest to również szczególnie pomocne przy pokazywaniu, gdzie występują skany tabel.

5

Aby rozwiązać problem, niestety jedynym sposobem na dostrojenie zapytania w PostgreS jest ustawienie bazy danych.W Oracle, możesz ustawić wszystkie te opcje na podstawie zapytania przez zapytanie, przebijając plan optymalizacyjny, ale w Postgresie jesteś prawie zdany na łaskę optymalizatora, na dobre i na złe.

11

Jeśli chodzi o źle wykonywane zapytania - wyjaśnij je i przeczytaj.

Możesz umieścić wyniki analizy wyjaśniania na stronie, takie jak explain.depesz.com - pomoże ci znaleźć elementy, które naprawdę zabierają najwięcej czasu.

6

Jest miły narzędzie online, które trwa wyjście EXPLAIN ANALYZE i graficznie pokazuje elementy krytyczne (np błędne szacunki, hot spoty, etc)

http://explain.depesz.com/help

Btw, myślę wysłane zapytania stają się publiczne , a link "poprzednie objaśnienia" został trafiony przez spamboty.

Powiązane problemy