queryinsights.sql池洞察(Transact-SQL)

适用于:Microsoft Fabric 中的 SQL 分析终结点和 Microsoft Fabric 中的仓库

queryinsights.sql_pool_insights Microsoft Fabric Data Warehouse中监控资源分配,跟踪配置变更,并识别池内压力期。

列名称 数据类型 Description
sql_pool_name nvarchar(128) SQL池的名称。
timestamp datetime2 健康检查或容量变更的时间戳。
max_resource_percentage int 分配给池的最大资源百分比。
is_optimized_for_reads bit 表示池是否配置为可读优化工作负载。
current_workspace_capacity nvarchar(16) 目前工作空间使用的容量。
is_pool_under_pressure bit 显示泳池是否处于压力状态。

注解

在Fabric数据仓库中,资源SELECT池之间NON SELECT执行资源隔离,防止争用。 默认存在两个池:

  • SELECT处理已读(SELECT)查询,优化用于分析和报告。
  • NON SELECT:处理数据修改(INSERT, UPDATE, DELETE),优化为ETL和摄取。

基于事件的报告

  • 当池的配置、工作空间容量或压力状态发生变化时,数据库会记录新记录。
  • 数据库记录压力状态变化,如果压力持续1 分钟 或更长时间。
  • SQL 数据库引擎 只在仓库活跃时记录事件。 如果仓库没有活动,事件会暂停,检测到活动后恢复。 这意味着在非活动期间,事件日志可能会有空白,直到仓库重新激活。

Permissions

你需要访问Fabric Capacity工作区内的SQL分析端点或仓库,且权限为贡献者或更高权限,或访问带有监视权限的查看器。

例子

使用此视图将查询性能问题与池压力和配置变更关联起来。 通过使用窗口功能或外部工具来可视化压力期。 以下是一些例子:

答: 过去24小时内的压力期

显示过去24小时内泳池压力较大的时期 SELECT :

-- Show periods when the SELECT pool was under pressure in the last 24 hours
SELECT sql_pool_name, timestamp, is_pool_under_pressure
FROM queryinsights.sql_pool_insights
WHERE sql_pool_name = 'SELECT'
  AND timestamp >= DATEADD(hour, -24, GETDATE())
  AND is_pool_under_pressure = 1
ORDER BY timestamp DESC;

通过使用窗口函数计算连续的压力周期和间隙:

-- Calculate consecutive pressure periods and gaps using window functions
SELECT sql_pool_name,
       timestamp,
       is_pool_under_pressure,
       LAG(timestamp) OVER (PARTITION BY sql_pool_name ORDER BY timestamp) AS previous_event,
       DATEDIFF(minute, LAG(timestamp) OVER (PARTITION BY sql_pool_name ORDER BY timestamp), timestamp) AS minutes_since_last_event
FROM queryinsights.sql_pool_insights
WHERE sql_pool_name = 'SELECT'
ORDER BY timestamp;

后续步骤