这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

工作负载管理函数

此部分包含 Vertica 专用的工作负载管理函数。

1 - ANALYZE_WORKLOAD

运行工作负载分析器,这是一款用于分析系统表中包含的系统信息的实用程序。

工作负载分析器可智能监控 SQL 查询的性能和工作负载历史记录、资源和配置,以确定查询性能低下的根本原因。 ANALYZE_WORKLOAD 从系统表 TUNING_RECOMMENDATIONS 返回您指定的范围和时间内的所有事件的优化建议。

优化建议基于统计信息、系统、 数据收集器事件和数据库-表-投影组合设计。工作负载分析器建议有助于快速轻松地优化查询性能。

有关常见的触发条件和建议,请参阅 工作负载分析器建议

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

ANALYZE_WORKLOAD ( '[ scope ]' [, 'since‑time' | save‑data ] );

参数

scope
指定要分析的编录对象,如下所示:
[[database.]schema.]table

如果设置为空字符串,Vertica 将返回所有数据库对象的建议。

如果指定一个数据库,它必须是当前数据库。

since‑time
指定分析时间范围的开始时间,时间范围一直持续到当前系统状态(包含)。如果省略此参数,"ANALYZE_WORKLOAD" 将返回自上次调用此函数以来的事件的建议。
save‑data
指定是否保存 ANALYZE_WORKLOAD 的返回值:
  • false (默认值):将丢弃结果。

  • true:保存 ANALYZE_WORKLOAD 返回的结果。对 ANALYZE_WORKLOAD 的后续调用返回从保存结果时最后一次调用开始的结果。该调用之前的对象事件将被忽略。

返回值

TUNING_RECOMMENDATIONS 返回聚合优化建议。

超级用户

示例

请参阅获取优化建议

另请参阅

2 - CHANGE_CURRENT_STATEMENT_RUNTIME_PRIORITY

更改活动查询的运行时优先级。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CHANGE_CURRENT_STATEMENT_RUNTIME_PRIORITY(transaction-id, 'value')

参数

transaction‑id
标识从系统表 SESSIONS 获取的事务。
value
RUNTIMEPRIORITY 值:HIGHMEDIUMLOW

特权

  • 超级用户:无

  • 非超级用户只能更改自身查询的运行时优先级,不能提高查询的运行时优先级使其高于资源池级别。

示例

请参阅更改正在运行的查询的运行时优先级

3 - CHANGE_RUNTIME_PRIORITY

更改主动运行查询的运行时优先级。请注意,虽然此函数仍然有效,但您应使用 CHANGE_CURRENT_STATEMENT_RUNTIME_PRIORITY 来更改运行时优先级。 CHANGE_RUNTIME_PRIORITY 将在未来版本的 Vertica 中弃用。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CHANGE_RUNTIME_PRIORITY(TRANSACTION_ID,STATEMENT_ID, 'value')

参数

TRANSACTION_ID
会话中事务的标识符。

TRANSACTION_ID 不能为 NULL。

您可以在“会话”表中找到事务 ID。

STATEMENT_ID
由 Vertica 编录分配的唯一数字 ID,可识别当前执行的语句。

您可以在“会话”表中找到语句 ID。

您可以指定 NULL,以更改事务中当前正在运行的查询的运行时优先级。

'value'
RUNTIMEPRIORITY 值。可以为 HIGH、MEDIUM 或 LOW。

特权

不需要特殊权限。但是,非超级用户只能改他们自己查询的运行时优先级。另外,非超级用户不能将查询的运行时优先级提高至高于资源池的优先级。

示例

=> SELECT CHANGE_RUNTIME_PRIORITY(45035996273705748, NULL, 'low');

4 - MOVE_STATEMENT_TO_RESOURCE_POOL

尝试将指定查询移动至指定目标池。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

MOVE_STATEMENT_TO_RESOURCE_POOL (session_id , transaction_id, statement_id, target_resource_pool_name)

参数

session_id
您想要移动的查询正在执行所的会话标识。
transaction_id
会话内事务标识。
statement_id
您想要移动的语句的唯一数字 ID。
target_resource_pool_name
您想将指定查询移至的现存资源池的名称。

输出

函数可能返回下列结果:

超级用户

示例

下面的例子显示如何将指定语句移动至调用 my_target_pool的资源池:

=> SELECT MOVE_STATEMENT_TO_RESOURCE_POOL ('v_vmart_node0001.example.-31427:0x82fbm', 45035996273711993, 1, 'my_target_pool');

另请参阅:

5 - SLEEP

在执行另一个语句或命令之前等待指定的秒数。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SLEEP( seconds )

参数

seconds
等待时间(以一秒或多秒(0 或更高)为单位指定),使用正整数表示。单引号是可选的;例如,SLEEP(3) SLEEP('3') 相同。

注意

  • 如果成功执行此函数,返回值 0;否则,因语法错误返回错误消息。

  • 不能取消休眠操作。

  • 在包含共享资源的环境中使用 SLEEP() 时应当慎重,如结合使用独占锁的事务。

示例

以下命令将暂停执行 100 秒:

=> SELECT SLEEP(100);
 sleep
-------
     0
(1 row)