sql >> Databáze >  >> RDS >> PostgreSQL

Zabraňte PostgreSQL, aby někdy zvolil špatný plán dotazů

Pokud plánovač dotazů dělá špatná rozhodnutí, je to většinou jedna ze dvou věcí:

1. statistiky jsou nepřesné.

Spouštíte ANALYZE dost? Populární také ve své kombinované formě VACUUM ANALYZE . Pokud je zapnuté automatické vysávání (což je výchozí nastavení v moderním Postgresu), ANALYZE se spouští automaticky. Ale zvažte:

  • Doporučuje se stále pravidelná VACUUM ANALYZE pod 9.1?

Pokud je váš stůl velký a distribuce dat je nepravidelná , čímž se zvýší default_statistics_target může pomoci. Nebo spíše jen nastavte cíl statistik pro relevantní sloupce (ty v WHERE nebo JOIN klauzule vašich dotazů, v podstatě):

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

Cíl lze nastavit v rozsahu 0 až 10 000;

Spusťte ANALYZE poté znovu (na příslušných tabulkách).

2. Nastavení ceny protože odhady plánovače jsou vypnuté.

Přečtěte si kapitolu Konstanty nákladů plánovače v příručce.

Podívejte se na kapitoly default_statistics_target a random_page_cost na této obecně užitečné stránce PostgreSQL Wiki.

Existuje mnoho dalších možných důvodů, ale tyto jsou zdaleka nejběžnější.



  1. Co znamená časové razítko v T-Sql v C#?

  2. Naše nejoblíbenější databázové blogové příspěvky v roce 2017

  3. Přidání sloupce jako cizího klíče způsobí, že sloupec ERROR odkazovaný v omezení cizího klíče neexistuje

  4. Databázová služba MySQL – nové inovace HeatWave