使用处理程序代码发送指标数据¶
若要使您的过程或 UDF 发送指标数据,您不需要向处理程序添加任何代码。Snowflake 会在事件表中生成所收集的数据。
如何衡量指标¶
由于 Java 和 Python 的执行环境不同,收集的指标数据也不同。有关所收集数据的参考信息,请参阅 RECORD 列参考。
下面介绍了捕获的数据如何与执行环境相对应。
- Java:
报告每个查询 ID 的 JVM(Java 虚拟机)CPU 和内存指标。
每个存储过程都分配有自己的 JVM。下面介绍了收集的指标数据:
process.memory.usage:JVM 执行存储过程处理程序所消耗的内存量(以字节为单位)。process.cpu.utilization:总 CPU 时间除以每个逻辑 CPU 挂钟时间,以百分比衡量,其中 1.0 表示 100% 利用率。总 CPU 时间是非空闲任务所花费的总时间。
在查询中调用的每个 Java 和 Scala UDF 会共享一个 JVM。指标值在查询中的每个 Java 或 Scala 函数中进行汇总。 下面介绍了收集的指标数据:
process.memory.usage:内存使用情况,显示为查询中调用的所有相关 Java 函数的总和。process.cpu.utilization:CPU 使用,显示为查询中调用的所有 Java 和 Scala 函数的平均值。
- Python:
报告每个 Python 函数或过程的 CPU 和内存指标。
每个存储过程仅在一个 Python 过程上执行。下面介绍了收集的指标数据:
process.memory.usage:执行存储过程处理程序的 Python 过程所消耗的内存量(以字节为单位)。process.cpu.utilization:总 CPU 时间除以每个逻辑 CPU 挂钟时间,以百分比衡量,其中 1.0 表示 100% 使用率。总 CPU 时间是非空闲任务所花费的总时间。
每个 UDF 可以在多个 Python 执行过程上执行。值在多个流程之间进行汇总。下面介绍了收集的指标数据:
process.memory.usage:内存使用情况,显示为该 UDF 所有相关 Python 过程的总和。process.cpu.utilization:已报告 CPU,显示为该 UDF 所有相关过程的平均值。
Python 示例¶
使用以下步骤生成指标示例数据。
设置会话的指标级别。
METRIC_LEVEL参数控制是否将自动检测的资源指标数据点发送到事件表。您可以将参数设置为NONE或ALL,并在对象和会话级别进行设置。有关更多信息,请参阅 为日志、指标和跟踪设置级别。创建存储过程。
运行存储过程
查询完成后,查看指标数据,如 查看指标数据 中所述。