启用分析
可以在以下三个范围内启用分析:
Vertica 元函数
SHOW_PROFILING_CONFIG 显示是否在全局范围和会话范围内启用分析。在以下示例中,该函数显示在当前会话的所有类别中禁用了分析,并在所有类别中全局启用了分析:
=> SELECT SHOW_PROFILING_CONFIG();
SHOW_PROFILING_CONFIG ------------------------------------------
Session Profiling: Session off, Global on
EE Profiling: Session off, Global on
Query Profiling: Session off, Global on
(1 row)
全局分析
当为给定类别启用或禁用全局分析时,该设置将在所有数据库会话中保留。可以使用
ALTER DATABASE 设置全局分析,如下所示:
ALTER DATABASE db-spec SET profiling-category = {0 | 1}
profiling-category 使用以下实参之一指定分析类别:
例如,以下语句对当前 (DEFAULT) 数据库全局启用查询分析:
=> ALTER DATABASE DEFAULT SET GlobalQueryProfiling = 1;
会话分析
可以为当前会话启用会话分析,并一直持续到您显式禁用分析或会话结束。可以使用以下 Vertica 元函数设置会话分析:
ENABLE_PROFILING ( profiling-type )DISABLE_PROFILING ( profiling-type )
profiling-type 使用以下实参之一指定要启用或禁用的分析数据的类型:
例如,以下语句为每个查询的执行运行启用会话范围分析:
=> SELECT ENABLE_PROFILING('ee');
ENABLE_PROFILING
----------------------
EE Profiling Enabled
(1 row)
语句分析
可以通过在单个 SQL 语句前面加上关键字
PROFILE,来启用对这些语句的分析。可以分析 SELECT 语句或任何 DML 语句(例如
INSERT、
UPDATE、
COPY 和
MERGE)。有关详细信息,请参阅分析单个语句。
分析范围的优先级
Vertica 按优先级降序在以下范围内检查会话和查询分析:
-
语句分析(最高)
-
会话分析(如果启用了全局分析,则忽略)
-
全局分析(最低)
无论查询和会话分析设置如何,Vertica 始终在相关系统表中保存最少量的分析数据:QUERY_PROFILES、QUERY_PLAN_PROFILES 和 SESSION_PROFILES。
对于执行引擎分析,Vertica 首先检查配置参数 SaveDCEEProfileThresholdUS 的设置。如果查询运行时间超过指定阈值(默认为 60 秒),Vertica 会收集该查询的执行引擎数据,并将其保存到系统表
QUERY_CONSUMPTION 和
执行_引擎_配置文件 中。仅当查询的持续时间低于阈值时,Vertica 才使用其他范围(语句、会话、全局)的分析设置。
重要
要禁用或最小化执行引擎分析:
-
将
SaveDCEEProfileThresholdUS设置为一个非常高的值,直至其最大值 2147483647(231-1,即约 35.79 分钟)。 -
在会话和全局范围内禁用分析。