华为云用户手册

  • PG_STATIO_ALL_INDEXES PG_STATIO_ALL_INDEXES视图显示当前数据库所有索引的I/O的统计信息。 表1 PG_STATIO_ALL_INDEXES字段 名称 类型 描述 relid oid 索引表的OID。 indexrelid oid 索引的OID。 schemaname name 索引中模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引缓冲区命中数量。 父主题: 系统视图
  • PG_STAT_ALL_INDEXES PG_STAT_ALL_INDEXES视图显示当前数据库中所有访问特定索引的统计信息。 索引可以通过简单的索引扫描或“位图”索引扫描进行使用。位图扫描中几个索引的输出可以通过AND或者OR规则进行组合, 因此当使用位图扫描的时候,很难将独立堆行抓取与特定索引进行组合, 因此,一个位图扫描增加pg_stat_all_indexes.idx_tup_read使用索引计数,并且增加pg_stat_all_tables.idx_tup_fetch表计数,但不影响pg_stat_all_indexes.idx_tup_fetch。 表1 PG_STAT_ALL_INDEXES字段 名称 类型 描述 relid oid 索引的表的OID indexrelid oid 索引的OID schemaname name 索引中模式名 relname name 索引的表名 indexrelname name 索引名 idx_scan bigint 索引上开始的索引扫描数 idx_tup_read bigint 通过索引上扫描返回的索引项数 idx_tup_fetch bigint 通过使用索引的简单索引扫描抓取的活表行数 父主题: 系统视图
  • inlist_rough_check_threshold 参数说明:当enable_csqual_pushdown开启时、过滤条件为IN进行rough check条件下推时,控制IN条件中值的个数的最大值。IN过滤条件中值的个数超过该参数时,将获取IN条件中值的最大/最小值进行条件下推。该参数仅8.2.0.101及以上集群版本支持。 参数类型:SUSET 取值范围:整型,0~10000 默认值:100 如果IN条件在表的单列分布列上进行,可以在DN进行值的过滤,此时IN条件中值的个数的最大值为inlist_rough_check_threshold的DN倍。
  • plan_cache_mode 参数说明:标识在prepare语句中,选择生成执行计划的策略。 参数类型:USERSET 取值范围:枚举类型 auto表示按照默认的方式选择custom plan或者generic plan。 force_generic_plan表示强制走generic plan。 force_custom_plan表示强制走custom plan。 此参数只对prepare语句生效,一般用在prepare语句中参数化字段存在比较严重的数据倾斜的场景下。 custom plan是指对于preapre语句,在执行execute的时候,把execute语句中的参数嵌套到语句之后生成的计划。custom plan会根据execute语句中具体的参数生成计划,这种方案的优点是每次都按照具体的参数生成优选计划,执行性能比较好;缺点是每次执行前都需要重新生成计划,存在大量的重复的优化器开销。 generic plan是指对于preapre语句生成计划,该计划策略会在执行execute语句的时候把参数bind到plan中,然后执行计划。这种方案的优点是每次执行可以省去重复的优化器开销;缺点是当bind参数字段上数据存在倾斜时该计划可能不是最优的,部分bind参数场景下执行性能较差。 默认值:auto
  • debug_group_dop 参数说明:当query_dop取值为0时,针对生成的执行计划划分的以Stream算子为顶点的group,均分配统一的dop并行度。此参数用于人为指定特定group的dop进行性能调优,格式为G1,D1,G2,D2,...,其中:G1,G2为group的ID,可以从日志中获得,D1,D2为指定的dop值,可以为任意正整数。 参数类型:USERSET 取值范围:字符型 默认值:空 该参数仅供内部调优使用,不允许用户进行设置,建议保持默认值。
  • enable_sonic_hashagg 参数说明:标识是否依据规则约束使用基于面向列的hash表设计的Hash Agg算子。 参数类型:USERSET 取值范围:布尔型 on表示在满足约束条件时使用基于面向列的hash表设计的Hash Agg算子。 off表示不使用面向列的hash表设计的Hash Agg算子。 在开启enable_sonic_hashagg,且查询达到约束条件使用基于面向列的hash表设计的Hash Agg算子时,查询对应的Hash Agg算子内存使用通常可获得精简。但对于代码生成技术可获得显著性能提升的场景(enable_codegen打开后获得较大性能提升),对应的算子查询性能可能会出现劣化。 开启enable_sonic_hashagg,且查询达到约束条件使用基于面向列的hash表设计的Hash Agg算子时,在Explain Analyze/Performance的执行计划和执行信息中,算子显示为“Sonic Hash Aggregation”,而未达到该约束条件时,算子名称将显示为“Hash Aggregation”。 默认值:on
  • expand_hashtable_ratio 参数说明:控制Hash Agg和Hash Join算子执行过程中hash表的大小扩大比例。 参数类型:USERSET 取值范围:浮点型,0, 0.5~10 默认值设置为0时表示hash表大小会根据当前内存进行自适应扩展。 默认值设置为0.5~10之间时,显式的是指定hash表扩大的倍数,通常hash表越大性能越好,但会占用更多内存空间,在内存不足场景可能造成数据提前下盘,带来性能劣化。 默认值:0
  • hashjoin_spill_strategy 参数说明:选择hashjoin下盘策略。(该参数8.1.2及以上版本支持) 参数类型:USERSET 取值范围:整型,0~6 0:当内表较大且无法在数据库可用内存放下所有数据时,会将数据划分成不同的子分区,直到多次划分后无法分开且仍无法在内存放下所有数据时,尝试外表是否可以放到可用内存中建立哈希表。若外表可以放到可用内存中建立哈希表,则执行HashJoin。反之,则执行NestLoop。 1:当内表较大且无法在数据库可用内存放下所有数据时,会将数据划分成不同的子分区,直到多次划分后无法分开且仍无法在内存放下所有数据时,尝试外表是否可以放到可用内存中建立哈希表。如果内外表均很大,强制执行HashJoin。 2:当内表较大,并且多次下盘无法分开时,强制执行HashJoin。 3:当内表较大,并且多次下盘无法分开时,尝试外表是否可以放到数据库可用内存建立哈希表。如果内外表均很大,则报错。 4:当内表较大,并且多次下盘无法分开时,则报错。 5:当内表较大且无法在数据库可用内存放下所有数据时,如果外表数据可以放到内存中,则使用外表建立哈希表执行HashJoin。如果外表数据无法存放到内存中,则将数据划分成不同的子分区,直到内外表多次划分均无法分开时,执行NestLoop。 6:当内表较大且无法在数据库可用内存放下所有数据时,如果外表数据可以放到内存中,则使用外表建立哈希表执行HashJoin。如果外表数据无法存放到内存中,则将数据划分成不同的子分区,直到内外表多次划分均无法分开时,强制执行HashJoin。 此参数只对向量化HashJoin生效。 对于数据distinct值很小且数据量很大的场景,可能出现无法下盘导致使用内存过大产生内存不受控的问题。 取值0时通过尝试内外表交换或者Nestloop可以避免出现此类内存不受控问题。 执行Nestloop可能造成某些场景性能劣化。遇到此种场景,该参数可取值1、2、6强制执行HashJoin。 取值0对向量化Full Join不生效,行为与取值1相同。只尝试外表是否可建立哈希表,不执行NestLoop。 取值5和6相对于取值0和1的优势是如果内表数据量大到无法直接放于可用内存中,但是外表可以,则直接使用外表进行Hashjoin,减少后续多次下盘划分数据的时间消耗。当外表数据distinct较少时,使用外表建立哈希表可能导致性能劣化。此时可以将参数取值调整到0或者1。 默认值:0
  • enable_agg_limit_opt 参数说明:标识是否对select distinct col from table limit N场景优化,其中N小于16384时生效, table为列存表。该参数仅8.2.0.101及以上集群版本支持。 参数类型:USERSET 取值范围:布尔型 on表示开启该优化。开启后可保证查询结果来自不同DN,且各个DN无需全部建立全量hash表,可显著提升查询性能。 off表示关闭该优化。 默认值:off
  • enable_sonic_hashjoin 参数说明:标识是否依据规则约束使用基于面向列的hash表设计的Hash Join算子。 参数类型:USERSET 取值范围:布尔型 on表示在满足约束条件时使用基于面向列的hash表设计的Hash Join算子。 off表示不使用面向列的hash表设计的Hash Join算子。 当前开关仅适用于Inner Join的场景。 在开启enable_sonic_hashjoin,查询对应的Hash Inner算子内存使用通常可获得精简。但对于代码生成技术可获得显著性能提升的场景,对应的算子查询性能可能会出现劣化。 开启enable_sonic_hashjoin,且查询达到约束条件使用基于面向列的hash表设计的Hash Join算子时,在Explain Analyze/Performance的执行计划和执行信息中,算子显示为“Sonic Hash Join”,而未达到该约束条件时,算子名称将显示为“Hash Join”。 默认值:on
  • enable_sonic_optspill 参数说明:标识是否优化sonic场景下HashJoin或者HashAgg的下盘文件个数。仅在enable_sonic_hashjoin或者 enable_sonic_hashagg开启情况下生效。 参数类型:USERSET 取值范围:布尔型 on表示开启下盘文件数优化。 off表示关闭下盘文件数优化。 满足sonic条件下的HashJoin或者HashAgg算子,在关闭此参数(设置为off)时每列会产生1个下盘文件。开启此参数(设置为on)时如果不同列数据类型相似,只会有1个下盘文件(最多5个文件)。 默认值:on
  • max_streams_per_query 参数说明:控制查询计划中Stream节点的数目。(该参数仅8.1.1及以上集群版本支持) 参数类型:SUSET 取值范围:整型,-1~10000 -1,表示查询计划中Stream节点数目无限制。 0~10000,表示查询计划中Stream节点数目超过设定值后报错,查询计划不会被执行。 此参数只控制DN上的Stream节点,不考虑CN上的Gather节点。 此参数不影响Explain查询计划,但是对Explain analyze和Explain performance有影响。 默认值:-1
  • cursor_tuple_fraction 参数说明:优化器估计游标获取行数在总行数中的占比。 参数类型:USERSET 取值范围:浮点型,0.0~1.0。 比默认值小的值与使用 “fast start” 为游标规划的值相偏离,从而使得前几行恢复的很快而抓取全部的行需要很长的时间。比默认值大的值加大了总的估计的时间。在最大的值1.0处,像正常的查询一样规划游标,只考虑总的估计时间和传送第一行的时间。 默认值:0.1
  • constraint_exclusion 参数说明:控制查询优化器使用表约束查询的优化。 参数类型:USERSET 取值范围:枚举类型 on表示检查所有表的约束。 off表示不检查约束。 partition表示只检查继承的子表和UNION ALL子查询。 当constraint_exclusion为on,优化器用查询条件和表的CHECK约束比较,并且在查询条件和约束冲突的时候忽略对表的扫描。 默认值:partition 目前, constraint_exclusion缺省被打开,通常用来实现表分区。为所有的表打开它时,对于简单的查询强加了额外的规划,并且对简单查询没有什么好处。如果不用分区表,可以关掉它。
  • enable_from_collapse_hint 参数说明:标识是否优先以hint生效的方式重写FROM列表,其次再根据from_collapse_limit、join_collapse_limit参数进行重写。该参数仅8.2.0及以上集群版本支持。 参数类型:USERSET 取值范围:布尔型 on表示优先以hint生效的方式重写FROM列表。 off表示无差别重写FROM列表。 该参数启用时,优化器会优先以hint生效的方式重写FROM列表,但hint是否生效在计划生成后才能知道,因此有可能出现该hint不生效的情况。 该参数关闭时,回退到8.2.0版本之前的计划,即生成计划时不区分表是否有hint。 默认值:on
  • codegen_strategy 参数说明:标识在表达式codegen化过程中所使用的代码生成优化策略。 参数类型:USERSET 取值范围:枚举类型 partial表示当所计算表达式中即使包含部分未被codegen化的函数时,仍可借助表达式全codegen框架调用LLVM动态编译优化策略。 pure表示当所计算表达式整体可被codegen化时,才考虑调用LLVM动态编译优化策略。 在开启代码生成优化会导致查询性能下降的场景下可以设置此参数为pure,其他场景下建议不改变此参数的默认值partial。 默认值:partial
  • enable_extrapolation_stats 参数说明: 标识是否允许基于历史统计信息使用推理估算的逻辑。使用该逻辑对于未及时收集统计信息的表可以增大估算准确的可能性,但也存在错误推理导致估算过大的可能性。 参数类型:USERSET 取值范围:布尔型 on表示允许基于历史统计信息使用推理估算的逻辑。 off表示不允许基于历史统计信息使用推理估算的逻辑。 默认值: 若当前集群为低版本升级到8.2.0.100及以上集群版本,为保持和前向兼容,默认值为off。 若当前集群为新装的8.2.0.100及以上集群版本,默认值为on。
  • join_collapse_limit 参数说明:根据得出的列表项数来判断优化器是否执行把除FULL JOINS之外的JOIN构造重写到FROM列表中。 参数类型:USERSET 取值范围:整型,1~INT_MAX。 设置为1会避免任何JOIN重排。这样就使得查询中指定的连接顺序就是实际的连接顺序。查询优化器并不是总能选取最优的连接顺序,高级用户可以选择暂时把这个变量设置为1,然后指定它们需要的连接顺序。 比默认值小的数值减少规划时间但也降低了执行计划的质量。 默认值:8
  • autoanalyze 参数说明: 标识是否允许在生成计划的时候,对于“统计信息完全缺失”或“修改量达到analyze阈值”的表进行统计信息自动收集,当前不支持对外表触发autoanalyze,不支持对带有ON COMMIT [DELETE ROWS|DROP]选项的临时表触发autoanalyze,如需收集,需用户手动执行analyze操作。如果在auto analyze某个表的过程中数据库发生异常,当数据库正常运行之后再执行语句有可能仍提示需要收集此表的统计信息。此时需要用户对该表手动执行一次analyze操作,以同步统计信息数据。 表的修改量达到analyze阈值是指:表的修改量超过autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * reltuples,其中reltuples是pg_class中记录的表的估算行数。 参数类型:SUSET 取值范围:布尔型 on表示允许自动进行统计信息收集。 off表示不允许自动进行统计信息收集。 默认值:on
  • enable_bloom_filter 参数说明: 标识是否允许使用BloomFilter优化。 参数类型:USERSET 取值范围:布尔型 on表示允许使用BloomFilter优化。 off表示不允许使用BloomFilter优化。 默认值:on 适用场景:外表侧同线程包含有HDFS内外表或列存表的HASH JOIN会触发Bloom Filter。 使用限制: JOIN类型仅限于INNER JOIN、SEMI JOIN、RIGHT JOIN、RIGHT SEMI JOIN、RIGHT ANTI JOIN、RIGHT ANTI FULL JOIN。 JOIN内表侧的数据不能超过5万行。 JOIN内表侧关联条件:对于HDFS内外表不能为表达式;对于列存表可以为表达式,但仅限于非JOIN层计算的表达式。 JOIN外表侧关联条件必须为简单列关联。 JOIN内表侧与外表侧关联条件均为简单列关联时,计划层估算必须可以去除1/3以上的数据(仅针对HDFS内外表)。 JOIN不能包含null值关联。 JOIN层未出现下盘。 数据类型: HDFS内外表字段类型支持SMALLINT、INTEGER、BIGINT、REAL/FLOAT4、DOUBLE PRECISION/FLOAT8、CHAR(n)/CHARACTER(n)/NCHAR(n)、VARCHAR(n)/CHARACTER VARYING(n)、CLOB、TEXT。 列存表字段类型支持SMALLINT、INTEGER、BIGINT、OID、"char"、CHAR(n)/CHARACTER(n)/NCHAR(n)、VARCHAR(n)/CHARACTER VARYING(n)、NVARCHAR2(n)、CLOB、TEXT、DATE、TIME、TIMESTAMP、TIMESTAMPTZ,其中字符类型其排序规则必须指定为"C"。
  • plan_mode_seed 参数说明:该参数为调测参数,目前仅支持OPTIMIZE_PLAN和RANDOM_PLAN两种。其中:OPTIMIZE_PLAN表示通过动态规划算法进行代价估算的最优plan,参数值设置为0;RANDOM_PLAN表示随机生成的plan;如果设置为-1,表示用户不指定随机数的种子标识符seed值,由优化器随机生成[1, 2147483647]范围整型值的随机数,并根据随机数生成随机的执行计划;如果用户指定guc参数值为[1, 2147483647]范围的整型值,表示指定的生成随机数的种子标识符seed,优化器需要根据seed值生成随机的执行计划。 参数类型:USERSET 取值范围:整型,-1~ 2147483647 默认值:0 当该参数设置为随机执行计划模式时,优化器会生成不同的随机执行计划,该执行计划可能不是最优计划。因此在随机计划模式下,会对查询性能产生影响,所以建议在升级、扩容、缩容等正常业务操作或运维过程中将该参数保持为默认值0。 当该参数不为0时,查询指定的plan hint不会生效。
  • query_dop 参数说明: 用户自定义的查询并行度。 参数类型:USERSET 取值范围:整型,-64-64 [1,64]:打开固定SMP功能,系统会使用固定并行度。 0:打开SMP自适应功能,系统会根据资源情况和计划特征动态为每个查询选取[1,8]之间(x86平台),[1,64]之间(鲲鹏平台)的最优的并行度。 [-64,-1]:打开SMP自适应功能,并限制自适应选取的最大并行度。 对于短查询为主的TP类业务中,如果不能通过CN轻量化或下发语句进行业务的调优,则生成SMP计划的时间较长,建议设置query_dop=1。对于AP类复杂语句的场景,建议设置query_dop=0。 在开启并行查询后,请保证系统CPU、内存、网络、I/O等资源充足,以达到良好效果。 为了避免用户设置不合理的过大值造成性能劣化,系统会计算出该DN可用最大CPU核数,并以此来作为query_dop的上限。如果用户设置query_dop超过4并且同时超过该上限,那么系统会重置query_dop为该上限值。 默认值:1
  • random_function_version 参数说明:控制analyze在进行数据采样时选取的random函数版本。该参数仅8.1.2及以上版本支持。 参数类型:USERSET 取值范围:枚举类型 0 表示采用C标准库提供的random函数。 1 表示采用优化增强的random函数。 默认值: 若当前集群为低版本升级到8.2.0.100及以上集群版本,为保持和前向兼容,默认值为0。 若当前集群为新装的8.2.0.100及以上集群版本,默认值为1。
  • default_statistics_target 参数说明:为没有用ALTER TABLE SET STATIS TICS 设置字段目标的表设置缺省统计目标。此参数设置为正数是代表统计信息的样本数量,为负数时,代表使用百分比的形式设置统计目标,负数转换为对应的百分比,即-5代表5%。采样时,会将default_statistics_target * 300作为随机抽样的大小,例如默认值为100时,会读取 100* 300 个页面来完成随机抽样。 参数类型:USERSET 取值范围:整型,-100~10000。 比默认值大的正数数值增加了ANALYZE所需的时间,但是可能会改善优化器的估计质量。 调整此参数可能存在性能劣化的风险,如果某个查询劣化,可以考虑 恢复默认的统计信息。 使用plan hint来调整到之前的查询计划。 当此guc参数设置为负数时,如果计算的采样样本数大于等于总数据量的2%,且用户表的数据量小于1600000时,ANALYZE所需时间相比guc参数为默认值的时间会有所增加。 autoanalyze不支持临时表采样方式设置采样大小,采样过程使用参数默认值。 当强制使用内存方式计算统计信息时,采样大小受maintenance_work_mem参数限制。 默认值:100
  • 背景信息 在多租户管理的框架下,用户可以实时查询所有用户资源(包括内存,CPU核数,存储空间、临时空间、算子落盘空间和IO)实时使用情况,也可以查询用户资源的历史使用情况。 用户实时资源相关视图/函数为:PG_TOTAL_USER_RESOURCE_INFO、GS_WLM_USER_RESOURCE_INFO和PGXC_TOTAL_USER_RESOURCE_INFO;用户历史资源相关表为:GS_WLM_USER_RESOURCE_HISTORY和PGXC_WLM_USER_RESOURCE_HISTORY。 用户监控可以同时监控快慢车道所有作业的CPU、IO和内存使用情况,不再受限于仅监控慢车道作业; 当前快车道作业内存和CPU不受控,在快车道运行作业占用资源较多情况下,可能出现已用资源大于资源限制的情况; DN监控视图中,IO、内存和CPU显示的是本DN上资源池资源使用和资源限制信息; CN监控视图中,IO、内存和CPU显示的是集群内所有DN资源池资源使用和资源限制的累积和; DN每隔5s更新一次监控信息,CN每隔5s从DN收集一次用户监控信息,因为各实例单独更新/收集用户监控信息,因此各实例监控信息更新时间可能不一致; 辅助线程中每隔30s自动调用持久化函数,持久化用户监控数据,正常情况下不需要用户单独调用持久化函数持久化用户监控数据; 当用户数量较多,集群规模较大时,查询此类实时视图,因CN/DN间实时通信开销,会有一定的网络延时; 初始管理用户不进行资源监控。
  • 操作步骤 查询所有用户的资源限额和资源实时使用情况。 1 SELECT * FROM PG_TOTAL_USER_RESOURCE_INFO; 得到的结果视图如下: username | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed -----------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+------------- perfadm | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 usern | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 userg | 34 | 15525 | 23.53 | 48 | 0 | -1 | 0 | -1 | 814955731 | -1 | 6111952 | 1145864 | 763994 | 143233 | 42678 | 8001 userg1 | 34 | 13972 | 23.53 | 48 | 0 | -1 | 0 | -1 | 814972419 | -1 | 6111952 | 1145864 | 763994 | 143233 | 42710 | 8007 (4 rows) 其中,IO资源监控字段(read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed)需要在GUC参数enable_user_metric_persistent开启时才有监控数据。 所查各字段说明详见PG_TOTAL_USER_RESOURCE_INFO 。 查询具体某个用户的资源限额和资源实时使用情况。 1 SELECT * FROM GS_WLM_USER_RESOURCE_INFO('username'); 查询结果如下: userid | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed --------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+------------- 16407 | 18 | 1655 | 6 | 19 | 13787176 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 (1 row) 查询所有用户的资源限额和资源历史使用情况。 1 SELECT * FROM GS_WLM_USER_RESOURCE_HISTORY; 查询结果如下: username | timestamp | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed -----------------------+-------------------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+-------------+------------- usern | 2020-01-08 22:56:06.456855+08 | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 88349078 | -1 | 45680 | 34 | 5710 | 8 | 320 | 0 userg | 2020-01-08 22:56:06.458659+08 | 0 | 15525 | 33.48 | 48 | 0 | -1 | 0 | -1 | 110169581 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 userg1 | 2020-01-08 22:56:06.460252+08 | 0 | 13972 | 33.48 | 48 | 0 | -1 | 0 | -1 | 136106277 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 对于系统表GS_WLM_USER_RESOURCE_HISTORY,仅当GUC参数enable_user_metric_persistent开启时,才会定期将视图PG_TOTAL_USER_RESOURCE_INFO中的数据保存到历史表中。 所查各字段说明详见GS_WLM_USER_RESOURCE_HISTORY。
  • GS_WLM_SESSION_HISTORY GS_WLM_SESSION_HISTORY视图显示当前用户在当前CN上执行作业结束后的负载管理记录。此视图用于Database Manager从 GaussDB (DWS)中查询数据,仅当GUC参数enable_resource_track为on时,视图会查询GS_WLM_SESSION_INFO表中3分钟内的数据进行返回。 表1 GS_WLM_SESSION_HISTORY的字段 名称 类型 描述 datid oid 连接后端的数据库OID。 dbname text 连接后端的数据库名称。 schemaname text 模式名。 nodename text 语句执行的CN名称。 username text 连接到后端的用户名。 application_name text 连接到后端的应用名。 client_addr inet 连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。 query_band text 用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。 block_time bigint 语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。 start_time timestamp with time zone 语句执行的开始时间。 finish_time timestamp with time zone 语句执行的结束时间。 duration bigint 语句实际执行的时间,单位ms。 estimate_total_time bigint 语句预估执行时间,单位ms。 status text 语句执行结束状态:正常为finished,异常为aborted。该处记录的语句状态应为数据库服务端执行状态,当服务器端执行成功,结果集返回时报错,该语句应为finished。 abort_info text 语句执行结束状态为aborted时显示异常信息。 resource_pool text 用户使用的资源池。 control_group text 语句所使用的Cgroup。 estimate_memory integer 语句在单个实例上预估使用的内存,单位MB。该字段只有当GUC参数enable_dynamic_workload为on时才有效。 min_peak_memory integer 语句在所有DN上的最小内存峰值,单位MB。 max_peak_memory integer 语句在所有DN上的最大内存峰值,单位MB。 average_peak_memory integer 语句执行过程中的内存使用平均值,单位MB。 memory_skew_percent integer 语句各DN间的内存使用倾斜率。 spill_info text 语句在所有DN上的下盘信息: None:所有DN均未下盘。 All: 所有DN均下盘。 [a:b]: 数量为b个DN中有a个DN下盘。 min_spill_size integer 若发生下盘,所有下盘DN的最小下盘数据量(MB),默认为0。 max_spill_size integer 若发生下盘,所有下盘DN的最大下盘数据量(MB),默认为0。 average_spill_size integer 若发生下盘,所有下盘DN的平均下盘数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,DN间下盘倾斜率。 min_dn_time bigint 语句在所有DN上的最小执行时间,单位ms。 max_dn_time bigint 语句在所有DN上的最大执行时间,单位ms。 average_dn_time bigint 语句在所有DN上的平均执行时间,单位ms。 dntime_skew_percent integer 语句在各DN间的执行时间倾斜率。 min_cpu_time bigint 语句在所有DN上的最小CPU时间,单位ms。 max_cpu_time bigint 语句在所有DN上的最大CPU时间,单位ms。 total_cpu_time bigint 语句在所有DN上的CPU总时间,单位ms。 cpu_skew_percent integer 语句在DN间的CPU时间倾斜率。 min_peak_iops integer 语句在所有DN上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。 max_peak_iops integer 语句在所有DN上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。 average_peak_iops integer 语句在所有DN上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。 iops_skew_percent integer 语句在DN间的IO倾斜率。 warning text 主要显示如下几类告警信息以及SQL自诊断调优相关告警: Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict queryid bigint 语句执行使用的内部query id。 query text 执行的语句。 query_plan text 语句的执行计划。 node_group text 语句所属用户对应的逻辑集群。 pid bigint 语句的后端线程的pid。 lane text 语句执行时所在的快慢车道。 unique_sql_id bigint 归一化的Unique SQL ID。 session_id text 在数据库系统中唯一标记一个session,格式:session_start_time.tid.node_name。 min_read_bytes bigint 语句在所有DN上的最小IO读字节数,单位Bytes。 max_read_bytes bigint 语句在所有DN上的最大IO读字节数,单位Bytes。 average_read_bytes bigint 语句在所有DN上的平均IO读字节数,单位Bytes。 min_write_bytes bigint 语句在所有DN上的最小IO写字节数,单位Bytes。 max_write_bytes bigint 语句在所有DN上的最大IO写字节数,单位Bytes。 average_write_bytes bigint 语句在所有DN上的平均IO写字节数,单位Bytes。 recv_pkg bigint 语句在所有DN上的通信包接收总量,单位packages。 send_pkg bigint 语句在所有DN上的通信包发送总量,单位packages。 recv_bytes bigint 语句在所有DN上的通信流接收数据总量,单位Byte。 send_bytes bigint 语句在所有DN上的通信流发送数据总量,单位Byte。 父主题: 系统视图
  • PG_STAT_XACT_USER_FUNCTIONS PG_STAT_XACT_USER_FUNCTIONS视图显示关于函数执行的统计信息。 表1 PG_STAT_XACT_USER_FUNCTIONS字段 名称 类型 描述 funcid oid 函数OID。 schemaname name 模式名。 funcname name 函数名。 calls bigint 函数被调用的次数。 total_time double precision 函数的总执行时长。 self_time double precision 当前线程调用函数的总的时长。 父主题: 系统视图
  • 创建外表 当完成获取 MRS 数据源连接的外部服务器信息和获取MRS数据源的HDFS路径后,就可以创建一个外表,用于读取MRS数据源数据。 创建外表的语法格式如下,详细的描述请参见(CREATE FOREIGN TABLE (SQL on Hadoop or OBS))。 CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ { column_name type_name [ { [CONSTRAINT constraint_name] NULL | [CONSTRAINT constraint_name] NOT NULL | column_constraint [...]} ] | table_constraint [, ...]} [, ...] ] ) SERVER dfs_server OPTIONS ( { option_name ' value ' } [, ...] ) DISTRIBUTE BY {ROUNDROBIN | REPLICATION} [ PARTITION BY ( column_name ) [ AUTOMAPPED ] ] ; 例如,创建一个名为"foreign_product_info"的外表,对语法中的参数按如下描述进行设置: table_name 必选。外表的表名。 表字段定义 column_name:外表中的字段名。 type_name:字段的数据类型。 多个字段用“,”隔开。 外表的字段个数和字段类型,需要与MRS上保存的数据完全一致。定义字段的数据类型之前,您必须先了解数据类型转换说明。 SERVER dfs_server 外表的外部服务器名称,这个server必须存在。外表通过设置外部服务器,从而关联MRS数据源连接并从MRS集群读取数据。 此处应填写为通过获取MRS数据源连接的外部服务器信息查询到的“srvname”字段的值。 OPTIONS参数 用于指定外表数据的各类参数,关键参数如下所示。 format:必选参数。取值只支持“orc”。表示数据源文件的格式,只支持Hive的ORC数据文件。 foldername:必选参数。表示数据在HDFS的存储目录或数据文件路径。 如果是启用了Kerberos认证的MRS分析集群,请确保MRS数据源连接的MRS用户,拥有此目录的读取权限。 请按照获取MRS数据源的HDFS路径中的步骤获取HDFS路径,该路径作为foldername的参数值。 encoding:可选参数。外表中数据源文件的编码格式名称,缺省为utf8。 DISTRIBUTE BY 表示外表的数据读取方式。有以下两种方式供选择,在本例中选择ROUNDROBIN。 ROUNDROBIN:表示外表在从数据源读取数据时,GaussDB(DWS)集群每一个节点读取随机一部分数据,并组成完整数据。 REPLICATION:表示外表在从数据源读取数据时,GaussDB(DWS)集群每一个节点都读取一份完整数据。 语法中的其他参数 其他参数均为可选参数,用户可以根据自己的需求进行设置,在本例中不需要设置。 根据以上信息,创建外表命令如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 DROP FOREIGN TABLE IF EXISTS foreign_product_info; CREATE FOREIGN TABLE foreign_product_info ( product_price integer , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt integer , product_comment_time date , product_comment_num integer , product_comment_content varchar(200) ) SERVER hdfs_server_8f79ada0_d998_4026_9020_80d6de2692ca OPTIONS ( format 'orc', encoding 'utf8', foldername '/user/hive/warehouse/demo.db/product_info_orc/' ) DISTRIBUTE BY ROUNDROBIN;
  • 数据类型转换说明 当前用户导入到Hive/Spark的数据在HDFS存储为ORC文件格式,GaussDB(DWS)实际读取HDFS中的ORC文件,并对文件内的数据进行查询分析。 由于Hive/Spark支持的数据类型与GaussDB(DWS)自身支持的数据类型存在差异,在创建外表定义表字段时,您需要了解这两者之间数据类型的对应关系,具体如表1所示: 表1 数据类型匹配表 类型名称 GaussDB(DWS)的HDFS/OBS外表支持的字段类型 Hive表字段类型 Spark表字段类型 2字节整数 SMALLINT SMALLINT SMALLINT 4字节整数 INTEGER INT INT 8字节整数 BIGINT BIGINT BIGINT 单精度浮点数 FLOAT4 (REAL) FLOAT FLOAT 双精度浮点型 FLOAT8(DOUBLE PRECISION) DOUBLE FLOAT 科学数据类型 DECIMAL[p (,s)] 最大支持38位精度 DECIMAL 最大支持38位(Hive 0.11) DECIMAL 日期类型 DATE DATE DATE 时间类型 TIMESTAMP TIMESTAMP TIMESTAMP Boolean类型 BOOLEAN BOOLEAN BOOLEAN Char类型 CHAR(n) CHAR (n) STRING VarChar类型 VARCHAR(n) VARCHAR (n) VARCHAR (n) 字符串 TEXT(CLOB) STRING STRING
共100000条