CREATE RESOURCE MONITOR¶
创建新的 资源监视器。此命令只能由账户管理员执行。
- 另请参阅:
ALTER RESOURCE MONITOR、DROP RESOURCE MONITOR、SHOW RESOURCE MONITORS、ALTER WAREHOUSE、ALTER ACCOUNT
语法¶
CREATE [ OR REPLACE ] RESOURCE MONITOR [ IF NOT EXISTS ] <name> WITH
[ CREDIT_QUOTA = <number> ]
[ FREQUENCY = { MONTHLY | DAILY | WEEKLY | YEARLY | NEVER } ]
[ START_TIMESTAMP = { <timestamp> | IMMEDIATELY } ]
[ END_TIMESTAMP = <timestamp> ]
[ NOTIFY_USERS = ( <user_name> [ , <user_name> , ... ] ) ]
[ TRIGGERS triggerDefinition [ triggerDefinition ... ] ]
其中:
triggerDefinition ::= ON <threshold> PERCENT DO { SUSPEND | SUSPEND_IMMEDIATE | NOTIFY }
必填参数¶
name
资源监视器的标识符;对于账户必须是唯一的。
标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如
"My object"
)。放在双引号内的标识符也区分大小写。有关更多详细信息,请参阅 标识符要求。
可选参数¶
CREDIT_QUOTA = num
每个频率间隔分配给资源监视器的 Credit。当分配给监视器的所有仓库的总使用量在当前频率间隔内达到此数字时,资源监视器被视为达到配额的 100%。
如果没有为资源监视器指定值,则监视器没有配额,并且永远不会在指定间隔内达到 100% 的使用量。
默认:无值(即无 Credit 配额)
FREQUENCY = MONTHLY | DAILY | WEEKLY | YEARLY | NEVER
Credit 使用量重置为
0
的频率间隔。如果设置资源监视器的频率,还必须设置
START_TIMESTAMP
。如果您指定
NEVER
作为频率,则仓库的 Credit 使用量不会重置。默认:无值(即传统行为,即 Credit 配额在每个日历月初重置)
START_TIMESTAMP = timestamp | IMMEDIATELY
资源监视器开始监控所分配仓库的 Credit 使用量的日期和时间。
如果为资源监视器设置时间戳,还必须设置
FREQUENCY
。如果为开始时间戳指定
IMMEDIATELY
,则使用当前时间戳。如果指定日期而不指定时间,则使用当前时间。
如果设置时间时未指定时区,则使用 UTC 作为默认时区。
默认:无值(即传统行为,即资源监视器立即开始监视仓库)
END_TIMESTAMP = timestamp
资源监视器暂停分配的仓库的日期和时间。
默认:无值(即无仓库暂停日期)
NOTIFY_USERS = ( user_name [ , user_name , ... ] )
指定要在资源监视器上接收电子邮件通知的用户列表。如果用户标识符包含空格或特殊字符或区分大小写,则该标识符必须放在双引号内(例如 "Mary Smith")。有关详细信息,请参阅 标识符要求。
用户标识符
user_name
是 SHOW USERS 输出中name
列的值。列出的每个用户都必须具有经过验证的电子邮件地址。有关在 Web 界面中验证电子邮件地址的说明,请参阅:
对于 Classic Console:在 Classic Console 中验证您的电子邮件地址。
对于 Snowsight:验证电子邮件地址。
非管理员用户的电子邮件通知不会取代管理员的电子邮件通知。任何已 启用电子邮件通知 的账户管理员将继续接收电子邮件通知。
TRIGGERS ...
(即 操作)为资源监视器指定一个或多个触发器。每个触发器定义由以下内容组成:
ON threshold PERCENT
指定为资源监视器的 Credit 配额百分比的数值;支持大于
100
的值。一旦使用量达到当前频率间隔的此阈值,触发器就会触发。DO SUSPEND | SUSPEND_IMMEDIATE | NOTIFY
指定达到阈值时触发器执行的操作:
SUSPEND
:暂停所有分配的仓库,同时允许当前正在运行的查询完成。在资源监视器的 Credit 配额增加之前,仓库无法执行任何新的查询。此外,此操作还会向所有已为自己启用通知的用户发送通知。SUSPEND_IMMEDIATE
:立即暂停所有分配的仓库并取消任何当前正在运行的使用这些仓库的查询或语句。此外,此操作还会向所有已为自己启用通知的用户发送通知。NOTIFY
:发送通知(向所有启用通知的账户管理员),但不执行任何其他操作。
默认:无值(即资源监视器不执行任何操作)
使用说明¶
触发器是可选的;但是,在资源监视器可以执行任何操作之前,必须 :emph:` 至少 ` 向其添加一个触发器。
每个资源监视器最多支持 5 个
NOTIFY
操作触发器。资源监视器创建后,必须先分配给仓库或账户,然后才能执行任何监控操作:
要将仓库分配给资源监视器,请使用 ALTER WAREHOUSE (如果要创建仓库,请使用 CREATE WAREHOUSE )。
要在账户级别分配资源监视器,请使用 ALTER ACCOUNT。NOTIFY_USERS 参数必须为空。
要查看在账户中创建的所有资源监视器及其分配情况,请使用 SHOW RESOURCE MONITORS 命令。对于未分配给账户或任何仓库的资源监视器,该命令输出在
level
列中显示NULL
,因此没有监控任何 Credit 使用量。如果在资源监视器上设置了
frequency
和start_timestamp
参数,则根据这些参数计算 Credit 使用量重置的日期。无论start_timestamp
中指定的时间如何,Credit 使用量重置为0
的时间为 12:00 AM UTC。如果指定
end_timestamp
,监控会在指定日期和时间结束,所有分配的仓库都会在该日期和时间暂停(即使没有达到 Credit 配额)。出现这种情况时,系统会发出通知,说明资源监视器的配额已达到一定百分比,并触发了“立即暂停”操作。配额百分比反映了截至结束日期当前间隔内所使用的 Credit 数,可能不是您指定的阈值。
如果通知列表中有非管理员用户,则以下说明适用:
如果通知列表中的任何用户没有 经验证的电子邮件地址,SQL 语句将失败。
如果通知列表中的任何用户更改了其电子邮件地址且未验证新的电子邮件地址,则通知将失败且不会有任何提示。
通知列表中最多只能有 5 个非管理员用户。
账户管理员可以在
notify_user
列中 SHOW RESOURCE MONITORS 的输出中查看非管理员用户的通知列表。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
重要
要接收资源监视器生成的通知,通知列表中的账户管理员和非管理员用户必须在其首选项中明确启用通知。此外,要接收电子邮件通知,用户必须在其首选项中拥有经过验证的电子邮件地址。只能在 Snowflake Web 界面中设置首选项。有关更多信息,请参阅 启用通知接收。
示例¶
用 3 个触发器创建一个名为 limiter
的资源监视器:
CREATE OR REPLACE RESOURCE MONITOR limiter WITH CREDIT_QUOTA = 5000 TRIGGERS ON 75 PERCENT DO NOTIFY ON 100 PERCENT DO SUSPEND ON 110 PERCENT DO SUSPEND_IMMEDIATE;
创建一个资源监视器,当达到 75% 的 Credit 配额时向三个用户发送通知。在此示例中,两个用户的 user_name
包含一个空格,并且必须放在双引号内:
CREATE OR REPLACE RESOURCE MONITOR limiter WITH CREDIT_QUOTA = 5000 NOTIFY_USERS = (JDOE, "Jane Smith", "John Doe") TRIGGERS ON 75 PERCENT DO NOTIFY ON 100 PERCENT DO SUSPEND ON 110 PERCENT DO SUSPEND_IMMEDIATE;