Edit

Share via


Queries for the PGSQLQueryStoreRuntime table

For information on using these queries in the Azure portal, see Log Analytics tutorial. For the REST API, see Query.

Query execution exceeding a threshold

Identify queries that take longer than the defined threshold.

// Please change the threshold in milliseconds upon your requirements
// By default, entries are aggregated every 15 mins (see pg_qs.interval_length_minutes)
// PlanId is captured only if pg_qs.store_query_plans=ON
let MinQueryExecutionThresholdInMilliseconds=1000;
PGSQLQueryStoreRuntime
| where IsSystemQuery==false //excludes azure managed user
| where MeanExecDurationMs > MinQueryExecutionThresholdInMilliseconds
| project
    StartTime,
    EndTime,
    QueryId,
    PlanId,
    QueryType,
    UserId,
    DatabaseId,
    MeanExecDurationMs,
    MaxExecDurationMs,
    Calls,
    Rows
| order by MeanExecDurationMs desc, QueryId asc
| limit 100

Slowest queries

Identify top 10 slowest queries by mean execution time.

// PlanId is captured only if pg_qs.store_query_plans=ON
PGSQLQueryStoreRuntime
| where IsSystemQuery==false //excludes azure managed user
| summarize AvgMeanExecDuration=avg(MeanExecDurationMs),MaxExecDuration=max(MaxExecDurationMs) by QueryId, PlanId, QueryType, UserId, DatabaseId
| top 10 by AvgMeanExecDuration desc

Query counts

Identify the execution counts trend of all queries.

// By default, entries are aggregated in QueryStore every 15 mins (see pg_qs.interval_length_minutes)
// AgregationWindow was set to 15min, but you may modify it based on your needs, however should not be less than pg_qs.interval_length_minutes. 
let AgregationWindow=15m;
PGSQLQueryStoreRuntime
| where IsSystemQuery==false //excludes azure managed user
| summarize sum(Calls) by bin(EndTime,AgregationWindow)
| render columnchart