Dela via


Fråga efter insikter i informationslager för infrastrukturresurser

Gäller för:✅ SQL-analysslutpunkt och lager i Microsoft Fabric

I Microsoft Fabric är frågeinsiktsfunktionen en skalbar, hållbar och utökningsbar lösning för att förbättra SQL-analysupplevelsen. Med historiska frågedata, aggregerade insikter och åtkomst till faktisk frågetext kan du analysera och finjustera frågeprestandan. QI innehåller information om frågor som endast körs i en användares kontext, systemfrågor beaktas inte.

Funktionen frågeinsikter ger en central plats för historiska frågedata och användbara insikter i 30 dagar, vilket hjälper dig att fatta välgrundade beslut för att förbättra prestandan för din lager- eller SQL-analysslutpunkt. När en SQL-fråga körs i Microsoft Fabric samlar frågeinsiktsfunktionen in och konsoliderar sina körningsdata, vilket ger dig värdefull information. Du kan visa fullständig frågetext för administratörs-, medlems- och deltagarroller.

  • Historiska frågedata: Funktionen frågeinsikter lagrar historiska data om frågekörningar så att du kan spåra prestandaändringar över tid. Systemfrågor lagras inte i frågeinsikter.
  • Aggregerade insikter: Frågeinsiktsfunktionen aggregerar frågekörningsdata till insikter som är mer användbara, till exempel att identifiera långvariga frågor eller de flesta aktiva användare. Dessa sammansättningar baseras på frågeformen. Mer information finns i Hur aggregeras liknande frågor för att generera insikter?

Innan du börjar

Du bör ha åtkomst till en SQL-analysslutpunkt eller ett lager i en Arbetsyta för Premium-kapacitet med deltagare eller högre behörigheter.

När behöver du frågeinsikter?

Funktionen query insights tar upp flera frågor och problem som rör frågeprestanda och databasoptimering, inklusive:

Frågeprestandaanalys

  • Vad är den historiska prestandan för våra frågor?
  • Finns det några långvariga frågor som behöver åtgärdas?
  • Kan vi identifiera de frågor som orsakar flaskhalsar i prestanda?
  • Användes cacheminnet för mina frågor?
  • Vilka frågor förbrukar mest CPU?

Frågeoptimering och justering

  • Vilka frågor körs ofta och kan deras prestanda förbättras?
  • Kan vi identifiera frågor som har misslyckats eller avbrutits?
  • Kan vi spåra ändringar i frågeprestanda över tid?
  • Finns det några frågor som konsekvent presterar dåligt?

Övervakning av användaraktivitet

  • Vem skickade en viss fråga?
  • Vilka är de mest aktiva användarna eller de användare som har de mest långvariga frågorna?

Det finns tre systemvyer som ger svar på dessa frågor:

Var kan du se frågeinsikter?

Autogenererade vyer finns under queryinsights schemat i SQL Analytics-slutpunkten och warehouse. I Infrastrukturutforskaren i ett lager hittar du till exempel frågeinsiktsvyer under Scheman, queryinsights, Views.

Skärmbild från Infrastrukturutforskaren som visar var du hittar vyer för frågeinsikter under Scheman, queryinsights, Vyer.

När frågan har slutfört körningen ser du dess körningsdata i vyerna queryinsights för den slutpunkt för lager- eller SQL-analys som du var ansluten till. Om du kör en fråga mellan databaser i kontexten för WH_2visas frågan i frågeinsikterna WH_2i . Slutförda frågor kan ta upp till 15 minuter att visas i frågeinsikter beroende på den samtidiga arbetsbelastning som körs. Den tid det tar för frågor att visas i frågeinsikter ökar med en ökning av samtidiga frågor som körs.

Hur aggregeras liknande frågor för att generera insikter?

Frågor anses vara desamma av Query Insights om frågorna har samma form, även om predikaten kan vara olika.

Du kan använda query hash kolumnen i vyerna för att analysera liknande frågor och öka detaljnivån för varje körning.

Följande frågor anses till exempel vara desamma när deras predikat parametriseras:

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

och

SELECT * FROM Orders
WHERE OrderDate BETWEEN '2000-07-01' AND '2006-07-31';

Exempel

Identifiera frågor som du har kört under de senaste 30 minuterna

Följande fråga använder queryinsights.exec_requests_history och den inbyggda USER_NAME() funktionen, som returnerar ditt aktuella sessionsanvändarnamn.

SELECT * FROM queryinsights.exec_requests_history 
WHERE start_time >= DATEADD(MINUTE, -30, GETUTCDATE())
AND login_name = USER_NAME();

Identifiera de vanligaste processorkrävande frågorna efter CPU-tid

Följande fråga returnerar de 100 viktigaste frågorna efter allokerad CPU-tid.

SELECT TOP 100 distributed_statement_id, query_hash, allocated_cpu_time_ms, label, command
FROM queryinsights.exec_requests_history
ORDER BY allocated_cpu_time_ms DESC;

Identifiera vilka frågor som söker igenom de flesta data från fjärrplatsen i stället för cacheminnet

Du kan avgöra om den stora datagenomsökningen under frågekörningen saktar ned frågan och fattar beslut om att justera frågekoden i enlighet med detta. Med den här analysen kan du jämföra olika frågekörningar och identifiera om variansen i mängden data som genomsöks är orsaken till prestandaändringar.

Dessutom kan du utvärdera användningen av cacheminnet genom att undersöka summan av data_scanned_memory_mb och data_scanned_disk_mboch jämföra den data_scanned_remote_storage_mb med för tidigare körningar.

Kommentar

De datagenomsöka värdena kanske inte beaktar de data som flyttas under mellanliggande faser i frågekörningen. I vissa fall kan storleken på de data som flyttas och processorn som krävs för att bearbeta vara större än vad det genomsöka datavärdet anger.

Dataskannade värden visas som 0 för COPY INTO-uttryck.

SELECT distributed_statement_id, query_hash, data_scanned_remote_storage_mb, data_scanned_memory_mb, data_scanned_disk_mb, label, command
FROM queryinsights.exec_requests_history
ORDER BY data_scanned_remote_storage_mb DESC;

Identifiera de frågor som körs oftast med hjälp av en delsträng i frågetexten

Följande fråga returnerar de senaste frågorna som matchar en viss sträng, ordnade efter antalet lyckade körningar som fallande.

SELECT * FROM queryinsights.frequently_run_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY number_of_successful_runs DESC;

Identifiera långvariga frågor med hjälp av en delsträng i frågetexten

Följande fråga returnerar de frågor som matchar en viss sträng, ordnade efter den fallande mediankörningstiden för frågan.

SELECT * FROM queryinsights.long_running_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY median_total_elapsed_time_ms DESC;