监控混合表工作负载¶
利用混合表的 Unistore 工作负载将与在 Snowflake 中运行的许多分析工作负载不同。例如,您的工作负载可能包含较少的唯一查询,这些查询运行所需时间更少、执行频率更高。您可以通过多种可选方式来监控工作负载。
监控事务¶
混合表支持 Snowflake 事务监控功能,包括 SHOW TRANSACTIONS、DESCRIBE TRANSACTION、SHOW LOCKS 和 LOCK WAIT HISTORY。
混合表的这些命令和视图的行为与标准 Snowflake 表的行为一致,但以下更改除外:
SHOW LOCKS 命令中引入了一种新的
ROW锁类型,用于表示针对混合表的行锁。这些锁会被汇总,以显示一个事务持有(一个或多个)行锁,而另一个事务正在等待这些锁。LOCK WAIT HISTORY 不显示架构相关信息。
LOCK_WAIT_HISTORY 不会汇总 BLOCKER_QUERIES。如果查询被多个阻塞者阻塞,则这些阻塞者将在视图中显示为多个记录,而不是在单个等待者记录的 BLOCKER_QUERIES JSON 数组中显示为多个条目。
对于 SHOW LOCKS 的结果和 LOCK_WAIT_HISTORY 视图:
在汇总行锁时,假定持有锁的事务在启动时获取锁。
由于 Unistore 事务量可能很大,因此仅显示长时间(约 5 秒)阻塞其他事务的锁。
等待锁的事务即使已经获取了锁(不超过 1 分钟),可能看起来仍在等待锁。锁报告的准确性将在将来的版本中得到提高。
如果阻塞等待中的查询的语句已完成,并且是对混合表的短期运行查询,则阻塞者查询的以下信息不会显示在等待中的查询记录的 BLOCKER_QUERY 字段内:
阻塞者查询的查询 UUID
阻塞者查询的会话 ID
阻塞者查询的用户名
阻塞者查询的数据库 ID
阻塞者查询的数据库名称
监控工作负载¶
若要有效监控操作工作负载,请使用 AGGREGATE_QUERY_HISTORY 视图。通过此视图,您可以监控工作负载的运行状况、诊断问题并确定优化途径。AGGREGATE_QUERY_HISTORY 视图汇总了一段时间间隔内重复参数化查询的查询执行统计信息,以便更轻松、更高效地识别工作负载和查询随时间推移的模式。请注意,此视图的输出将合并所有 Snowflake 工作负载和查询。
AGGREGATE_QUERY_HISTORY 视图可帮助您回答以下有关工作负载的问题:
我的虚拟仓库每秒执行多少次操作?
在我的工作负载中,哪些查询消耗的总时间或资源量最多?
随着时间的推移,特定查询的性能是否发生了重大变化?
为了帮助提高工作负载的性能和效率,低延迟操作的个别执行(不到一秒)将不会存储在 QUERY_HISTORY 视图 中,也不会生成唯一的查询配置文件。相反,该查询的重复执行的汇总统计信息将在 AGGREGATE_QUERY_HISTORY 视图中返回。您还可以查看选定时间间隔内,该查询的抽样查询配置文件。有关此行为的更多信息,请参阅 使用说明。
小技巧
您可以使用 Snowsight 中的 分组查询历史记录视图 来可视化典型混合表工作负载的性能和统计信息。此视图并不捕获所有混合表活动,但它为监控大量在一定程度上重复且运行速度极快的单个查询的性能提供了很好的替代方案。
监控整体工作负载运行状况¶
使用 AGGREGATE_QUERY_HISTORY 视图,以监控整体工作负载吞吐量和并发性,并调查工作负载中的意外峰值或低谷。例如:
您还可以使用汇总查询历史记录来监控错误、排队、锁定阻塞或限制等潜在问题。例如:
此类指标通常应保持在较低水平。如果看到意外峰值,建议您调查原因。
确定和调查重复查询¶
您可以选择优化或调查常见查询和频繁执行的查询的性能,以提高工作负载的效率。使用 AGGREGATE_QUERY_HISTORY 视图,按执行计数确定一个工作负载的热门查询。例如:
您可以选择查看速度最慢的查询的指标。例如:
您可以分析特定查询在一段时间内的性能,以深入了解延迟趋势。例如:
此查询计算总查询时间。您还可以修改查询,以在查询的不同阶段(编译、执行、排队和锁定等待)返回更精细的指标。将返回每个阶段的汇总统计信息。