Förstå statistik

Slutförd

När en fråga/sökning körs måste den skapa en plan för att bestämma hur data ska nås. Om en SELECT-fråga till exempel returnerar varje rad finns det ingen fördel med att använda ett index och det skulle vara mer effektivt att skanna hela tabellen. I det här scenariot är det enkelt att planera frågan, men de flesta frågeplaner är inte så enkla att lösa.

Föreställ dig ett scenario där du kör en fråga som sökte efter varje beställning mellan $10.00 och $20.00. Inledningsvis vet vi inte om frågan returnerar alla data i tabellen eller bara en liten delmängd. Detta okända gör det svårt att planera frågestrategin tills vi ser data. Om vi vet att tabellen innehåller beställningar som har ett inköpspris mellan 1,00 och 800,00 USD kan ett index användas för att söka efter en liten delmängd av data. Det kanske dock inte finns tillräckligt med information för att generera rätt frågeplan. I det här exemplet, även om beställningarna har en inköpspris mellan 1,00 och 800,00 USD, är 95% beställningar mellan 10,00 och 20,00 USD och en genomsökning av data är faktiskt den mest effektiva planen.

Med scenarier som i föregående exempel behöver PostgreSQL detaljerad statistik för att kunna använda den optimala frågeplanen.

För att övervaka planerings- och körningsstatistik finns ett PostgreSQL-tillägg med namnet pg_stat_statements. pg_stat_statements är aktiverat som standard i Azure Database for PostgreSQL och tillåter medlemmar i den pg_read_all_stats rollen att fråga statistik med hjälp av flera pg_stat vyer. Följande sökfråga returnerar sökfrågeaktivitet med vyn pg_stat_activity:

SELECT * FROM pg_stat_activity;

Skärmbild av frågan pg_stat_activity.

Stänga av pg_stat_statements

Om dina frågor är unika och du inte upprepar samma fråga regelbundet är historiska frågedata mindre användbara. Om du inte använder de pg_stat vyerna ger de heller ingen fördel. Det finns en omkostnad för att underhålla pg_stat_statements, som kan vara upp till 50%, och du kan inaktivera spårning av pg_stat_statements i dessa scenarier.

Utför följande steg för att inaktivera spårning av pg_stat_statements:

  1. Gå till Azure-portalen och välj din Azure Database for PostgreSQL-server.

  2. Välj Serverparametrar och gå till inställningen pg_stat_statements.track.

    Skärmbild av kommandot pg_statements.

  3. Om du vill inaktivera spårning väljer du NONE.

  4. Om du vill ha mer exakt spårning väljer du ALLA.

  5. Standardinställningen är TOP.

  6. Välj Spara.