PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Powstrzymaj PostgreSQL od wyboru złego planu zapytań

Jeśli planer zapytań podejmuje złe decyzje, jest to najczęściej jedna z dwóch rzeczy:

1. statystyki są niedokładne.

Czy uruchamiasz ANALYZE dość? Popularny również w postaci połączonej VACUUM ANALYZE . Jeśli funkcja automatycznego odkurzania jest włączona (co jest ustawieniem domyślnym we współczesnym Postgresie), ANALYZE jest uruchamiany automatycznie. Ale rozważ:

  • Czy regularna ANALIZA PRÓŻNI jest nadal zalecana w wersji 9.1?

Jeśli Twój stół jest duży a dystrybucja danych jest nieregularna , podnosząc default_statistics_target może pomóc. Albo po prostu ustaw docelowe statystyki dla odpowiednich kolumn (te w WHERE lub JOIN klauzule twoich zapytań, w zasadzie):

ALTER TABLE ... ALTER COLUMN ... SET STATISTICS 400;  -- calibrate number

Cel można ustawić w zakresie od 0 do 10000;

Uruchom ANALYZE ponownie po tym (na odpowiednich tabelach).

2. Ustawienia kosztów ponieważ szacunki planisty są wyłączone.

Przeczytaj rozdział Planner Cost Constants w podręczniku.

Spójrz na rozdziały default_statistics_target i losowa_strona_koszt na tej ogólnie przydatnej stronie Wiki PostgreSQL.

Istnieje wiele innych możliwych powodów, ale zdecydowanie są to najczęstsze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails:FATAL - Uwierzytelnienie peera nie powiodło się dla użytkownika (PG::Error)

  2. Najlepszy sposób na usunięcie milionów wierszy według identyfikatora

  3. Pobierz nazwę właściciela bazy danych w PostgreSql

  4. 2nd Quadrant Deutschland – specjalna okazja na otwarcie szkolenia

  5. Niepowodzenie instalacji gem pg, mkmf.rb nie może znaleźć plików nagłówkowych dla ruby ​​(Mac OSX 10.6.5)