启用分析
可以在以下三个范围内启用分析:
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 分钟)。 -
在会话和全局范围内禁用分析。