Suche…


Aktivieren Sie den Abfragespeicher in der Datenbank

Der Abfragespeicher kann für die Datenbank mit dem folgenden Befehl aktiviert werden:

ALTER DATABASE tpch SET QUERY_STORE = ON

SQL Server / Azure SQL-Datenbank erfasst Informationen zu ausgeführten Abfragen und stellt Informationen in Ansichten von sys.query_store bereit:

  • sys.query_store_query
  • sys.query_store_query_text
  • sys.query_store_plan
  • sys.query_store_runtime_stats
  • sys.query_store_runtime_stats_interval
  • sys.database_query_store_options
  • sys.query_context_settings

Rufen Sie Ausführungsstatistiken für SQL-Abfragen / -pläne ab

Die folgende Abfrage gibt Informationen zu Fragen, ihren Plänen und Durchschnittsstatistiken bezüglich Dauer, CPU-Zeit, physischen und logischen Lesevorgängen zurück.

SELECT Txt.query_text_id, Txt.query_sql_text, Pl.plan_id,
        avg_duration, avg_cpu_time, 
        avg_physical_io_reads, avg_logical_io_reads
FROM sys.query_store_plan AS Pl  
JOIN sys.query_store_query AS Qry  
    ON Pl.query_id = Qry.query_id  
JOIN sys.query_store_query_text AS Txt  
    ON Qry.query_text_id = Txt.query_text_id
JOIN sys.query_store_runtime_stats Stats
    ON Pl.plan_id = Stats.plan_id

Daten aus dem Abfragespeicher entfernen

Wenn Sie eine Abfrage oder einen Abfrageplan aus dem Abfragespeicher entfernen möchten, können Sie die folgenden Befehle verwenden:

EXEC sp_query_store_remove_query 4;
EXEC sp_query_store_remove_plan 3; 

Parameter für diese gespeicherten Prozeduren sind Abfrage- / Plan-ID, die aus Systemansichten abgerufen wird.

Sie können auch einfach Ausführungsstatistiken für einen bestimmten Plan entfernen, ohne den Plan aus dem Geschäft zu entfernen:

EXEC sp_query_store_reset_exec_stats 3;  

Parameter für diese Prozedurplan-ID.

Plan für die Abfrage erzwingen

Der SQL-Abfrageoptimierer wählt den möglichen Plan aus, den er für eine Abfrage finden kann. Wenn Sie einen Plan finden, der für einige Abfragen optimal funktioniert, können Sie QO zwingen, diesen Plan immer mit der folgenden gespeicherten Prozedur zu verwenden:

EXEC sp_query_store_unforce_plan @query_id, @plan_id

Ab diesem Zeitpunkt verwendet QO immer den für die Abfrage bereitgestellten Plan.

Wenn Sie diese Bindung entfernen möchten, können Sie die folgende gespeicherte Prozedur verwenden:

EXEC sp_query_store_force_plan @query_id, @plan_id

Ab diesem Zeitpunkt wird QO erneut versuchen, den besten Plan zu finden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow