Abfrageerkenntnisse in Fabric Data Warehouse
Gilt für:✅ SQL-Analyseendpunkt und Warehouse in Microsoft Fabric
In Microsoft Fabric ist das Abfrageerkenntnisse-Feature eine skalierbare, nachhaltige und erweiterbare Lösung, um die SQL-Analyseerfahrung zu verbessern. Mit historischen Abfragedaten, aggregierten Erkenntnissen und Zugriff auf tatsächlichen Abfragetext können Sie die Abfrageleistung analysieren und optimieren. QI stellt Nur Informationen zu Abfragen bereit, die im Kontext eines Benutzers ausgeführt werden, Systemabfragen werden nicht berücksichtigt.
Das Abfrageerkenntnisse-Feature bietet einen zentralen Ort für historische Abfragedaten und umsetzbare Einblicke für 30 Tage und hilft Ihnen dabei, fundierte Entscheidungen zu treffen, um die Leistung Ihres Warehouse- oder SQL-Analyseendpunkts zu verbessern. Wenn eine SQL-Abfrage in Microsoft Fabric ausgeführt wird, sammelt und konsolidiert das Abfrageerkenntnisse-Feature ihre Ausführungsdaten, sodass Sie wertvolle Informationen erhalten. Sie können den vollständigen Abfragetext für Administrator-, Mitglieds- und Mitwirkendenrollen anzeigen.
- Historische Abfragedaten: Das Abfrageerkenntnisse-Feature speichert historische Daten zu Abfrageausführungen, sodass Sie Leistungsänderungen im Laufe der Zeit nachverfolgen können. Systemabfragen werden nicht in Abfrageerkenntnissen gespeichert.
- Aggregierte Erkenntnisse: Das Feature Abfrageerkenntnisse aggregiert Abfrageausführungsdaten zu Erkenntnissen, die besser umsetzbar sind, z. B. das Identifizieren zeitintensiver Abfragen oder der aktivsten Benutzer. Diese Aggregationen basieren auf der Abfrageform. Weitere Informationen finden Sie unter Wie werden ähnliche Abfragen aggregiert, um Erkenntnisse zu generieren?
Voraussetzungen
Sie benötigen Zugriff auf einen SQL-Analyseendpunkt oder ein Warehouse in einem Arbeitsbereich mit Premium-Kapazität und mindestens der Berechtigung Mitwirkender.
Wann benötigen Sie Abfrageerkenntnisse?
Das Abfrageerkenntnisse-Feature befasst sich mit verschiedenen Fragen und Problemen im Zusammenhang mit der Abfrageleistung und Datenbankoptimierung, darunter:
Abfrageleistungsanalyse
- Was ist die historische Leistung unserer Abfragen?
- Gibt es zeitintensive Abfragen, die Aufmerksamkeit benötigen?
- Können wir die Abfragen identifizieren, die Leistungsengpässe verursachen?
Abfrageoptimierung und Feinanpassung
- Welche Abfragen werden häufig ausgeführt, und lässt sich ihre Leistung verbessern?
- Können wir Abfragen identifizieren, die fehlgeschlagen sind oder abgebrochen wurden?
- Können Änderungen der Abfrageleistung im Laufe der Zeit nachverfolgt werden?
- Gibt es Abfragen, die konsistent schlechte Leistung bringen?
Benutzeraktivitätsüberwachung
- Wer hat eine bestimmte Abfrage übermittelt?
- Wer sind die aktivsten Benutzer oder die Benutzer mit den zeitintensivsten Abfragen?
Es gibt drei Systemansichten, um Antworten auf diese Fragen zu bieten:
queryinsights.exec_requests_history (Transact-SQL)
- Gibt Informationen zu jeder abgeschlossenen SQL-Anforderung/Abfrage zurück.
queryinsights.exec_sessions_history (Transact-SQL)
- Gibt Informationen zu häufig ausgeführten Abfragen zurück.
queryinsights.long_running_queries (Transact-SQL)
- Gibt die Informationen zu Abfragen nach Abfrageausführungszeit zurück.
queryinsights.frequently_run_queries (Transact-SQL)
- Gibt Informationen zu häufig ausgeführten Abfragen zurück.
Wo werden Abfrageerkenntnisse angezeigt?
Automatisch generierte Ansichten befinden sich unter dem queryinsights
-Schema im SQL-Analyseendpunkt und Warehouse. Suchen Sie z. B. im Fabric Explorer eines Warehouse Abfrageerkenntnisse unter Schemas, queryinsights, Ansichten.
Nach dem Ausführung Ihrer Abfrage abgeschlossen ist, werden die entsprechenden Ausführungsdaten in den queryinsights
-Ansichten des Warehouse oder SQL-Analyseendpunkts angezeigt, mit dem eine Verbindung hergestellt wurde. Wenn Sie eine datenbankübergreifende Abfrage im Kontext von WH_2
ausführen, erscheint Ihre Abfrage in den Abfrageerkenntnissen von WH_2
. Es kann bis zu 15 Minuten dauern, bis abgeschlossene Abfragen in den Abfrageerkenntnissen angezeigt werden, je nachdem, welche gleichzeitige Workload ausgeführt wird. Die Zeit für Abfragen, die in Abfrageerkenntnissen angezeigt werden, erhöht sich mit der Zunahme gleichzeitiger Abfragen, die ausgeführt werden.
Wie werden ähnliche Abfragen aggregiert, um Erkenntnisse zu generieren?
Abfragen werden von den Abfrageerkenntnissen als identisch betrachtet, wenn die Abfragen die gleiche Form haben, auch wenn die Prädikate möglicherweise unterschiedlich sind.
Sie können die query hash
- Spalte in den Ansichten verwenden, um ähnliche Abfragen zu analysieren und einen Drilldown zu jeder Ausführung veranlassen.
Beispielsweise werden die folgenden Abfragen nach der Parametrisierung ihrer Prädikate als identisch betrachtet:
SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';
and
SELECT * FROM Orders
WHERE OrderDate BETWEEN '2000-07-01' AND '2006-07-31';
Beispiele
Identifizieren von Abfragen, die von Ihnen in den letzten 30 Minuten ausgeführt wurden
Die folgende Abfrage verwendet queryinsights.exec_requests_history
und die integrierte USER_NAME()
-Funktion, die Ihren aktuellen Sitzungsbenutzernamen zurückgibt.
SELECT * FROM queryinsights.exec_requests_history
WHERE start_time >= DATEADD(MINUTE, -30, GETUTCDATE())
AND login_name = USER_NAME();
Identifizieren der am häufigsten ausgeführten Abfragen mithilfe einer Teilzeichenkette im Abfragetext
Die folgende Abfrage gibt die aktuellsten Abfragen zurück, die einer bestimmten Zeichenkette entsprechen, absteigend sortiert nach der Anzahl der erfolgreichen Ausführungen.
SELECT * FROM queryinsights.frequently_run_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY number_of_successful_runs DESC;
Identifizieren von zeitintensiven Abfragen mithilfe einer Teilzeichenkette
Die folgende Abfrage gibt die Abfragen zurück, die einer bestimmten Zeichenkette entsprechen, sortiert nach absteigender mittlerer Abfrage-Ausführungszeit.
SELECT * FROM queryinsights.long_running_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY median_total_elapsed_time_ms DESC;