华为云用户手册

  • PG_TS_TEMPLATE PG_TS_TEMPLATE系统表包含定义文本搜索模板的记录。模板是文本搜索字典的类的实现框架。因为模板必须通过C语言级别的函数实现,索引新模板的创建必须由数据库系统管理员创建。 表1 PG_TS_TEMPLATE字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段;必须明确选择)。 tmplname name - 文本搜索模板名。 tmplnamespace oid PG_NAMESPACE.oid 包含这个模板的名称空间的OID。 tmplinit regproc PG_PROC.proname 模板的初始化函数名。 tmpllexize regproc PG_PROC.proname 模板的lexize函数名。 父主题: 系统表
  • PG_EXT_STATS PG_EXT_STATS视图可用来访问存储在PG_STATISTIC_EXT表里面的扩展统计信息。扩展统计信息目前包括多列统计信息。 表1 PG_EXT_STATS字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 表的模式名。 tablename name PG_CLASS.relname 表名。 attname int2vector PG_STATISTIC_EXT.stakey 统计信息扩展的多列信息。 inherited boolean - 暂不支持继承表,该字段为false。 null_frac real - 记录中字段组合为空的百分比。 avg_width integer - 字段组合记录以字节记的平均宽度。 n_distinct real - 如果大于零,表示字段组合中独立数值的估计数目。 如果小于零,表示独立数值的数目除以行数后乘-1得到的负数。比如,-1表示一个字段组合中独立数值的个数和行数相同。 用负数形式是因为ANALYZE认为独立数值的数目是随着表增长而增长; 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。 如果等于零,表示独立数值的数目未知。 n_dndistinct real - 标识dn1上字段组合中非NULL的独立数值的数目。 如果大于零,表示独立数值的实际数目。 如果小于零,表示独立数值的数目除以行数后乘-1得到的负数。比如,一个字段组合的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5。 如果等于零,表示独立数值的数目未知。 most_common_vals anyarray - 一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值均不为NULL。 most_common_freqs real[] - 一个记录字段组合里最常用数值的出现频率的列表,频率由每个数值出现的次数除以行数得到。如果most_common_vals取值为NULL,则该字段取值也为NULL。 most_common_vals_null anyarray - 一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值中至少有一个值为NULL。 most_common_freqs_null real[] - 一个记录字段组合里最常用数值的出现频率的列表,频率由每个数值出现的次数除以行数得到。如果most_common_vals_null取值为NULL,则该字段取值也为NULL。 histogram_bounds anyarray - 直方图的边界值列表。 父主题: 系统视图
  • GLOBAL_DOUBLE_WRITE_STATUS GLOBAL_DOUBLE_WRITE_STATUS视图显示整个集群所有实例的双写文件的情况。 表1 GLOBAL_DOUBLE_WRITE_STATUS字段 名称 类型 描述 node_name text 实例名称。 curr_dwn bigint 当前双写文件的序列号。 curr_start_page bigint 当前双写文件恢复起始页面。 file_trunc_num bigint 当前双写文件复用的次数。 file_reset_num bigint 当前双写文件写满后发生重置的次数。 total_writes bigint 当前双写文件总的I/O次数。 low_threshold_writes bigint 低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。 high_threshold_writes bigint 高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。 total_pages bigint 当前刷页到双写文件区的总的页面个数。 low_threshold_pages bigint 低效率刷页的页面个数。 high_threshold_pages bigint 高效率刷页的页面个数。 file_id bigint 当前双写文件的id号。 父主题: Utility
  • 连接数据库涉及的API 在测试连接数据库成功后,ODBC API提供了一组函数来连接数据库,如表1所示。 表1 相关API说明 功能 API 申请句柄资源 SQLAllocHandle:申请句柄资源,可替代如下函数: SQLAllocEnv:申请环境句柄 SQLAllocConnect:申请连接句柄 SQLAllocStmt:申请语句句柄 设置环境属性 SQLSetEnvAttr 设置连接属性 SQLSetConnectAttr 连接数据库 SQLConnect 以开发源程序DBtest.c为例(完整示例请参考获取和处理数据库中的数据): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 // DBtest.c (compile with: libodbc.so) // 程序头文件和全局变量请参考完整示例 // 申请环境句柄。 V_OD_erg = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env); if ((V_OD_erg != SQL_SUC CES S) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error AllocHandle\n"); exit(0); } // 设置版本信息(环境属性)。 SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // 申请连接句柄 。 V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } // 获取用户名和用户密码。 char *userName; userName = getenv("EXAMPLE_USERNAME_ENV"); char *password; password = getenv("EXAMPLE_PASSWORD_ENV"); // 设置连接属性。 SQLSetConnectAttr(V_OD_hdbc, SQL_ATTR_AUTOCOMMIT,(SQLPOINTER *)SQL_AUTOCOMMIT_ON, 0); // 连接数据库,这里的userName与password分别表示连接数据库的用户名和用户密码。 // 如果odbc.ini文件中已经配置了用户名密码,那么这里可以留空("");但是不建议这么做,因为一旦odbc.ini权限管理不善,将导致数据库用户密码泄露。 V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "gaussdb", SQL_NTS, (SQLCHAR*) userName, SQL_NTS, (SQLCHAR*) password, SQL_NTS); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error SQLConnect %d\n",V_OD_erg); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } printf("Connected !\n"); 父主题: 连接数据库
  • PG_FOREIGN_DATA_WRAPPER PG_FOREIGN_DATA_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 表1 PG_FOREIGN_DATA_WRAPPER字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 fdwname name - 外部数据封装器名。 fdwowner oid PG_AUTHID.oid 外部数据封装器的所有者。 fdwhandler oid PG_PROC.oid 引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为零。 fdwvalidator oid PG_PROC.oid 引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、外部服务器选项和使用外部数据封装器的用户映射的有效性。如果没有提供验证器函数则为零。 fdwacl aclitem[] - 访问权限。 fdwoptions text[] - 外部数据封装器指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • GET_GLOBAL_PREPARED_XA CTS GET_GLOBAL_PREPARED_XACTS视图显示全局所有节点上的两阶段残留事务信息。 表1 GET_GLOBAL_PREPARED_XACTS字段 名称 类型 描述 transaction xid 残留事务的xid。 gid text 残留两阶段事务全局gid。 prepared timestamp with time zone 残留两阶段事务的准备时间。 owner name 残留两阶段事务的所有者。 database name 残留两阶段事务所属的数据库。 node_name text 残留事务所在的节点名称。 父主题: 系统视图
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 --创建dev_mask和bob_mask用户。 gaussdb=# CREATE USER dev_mask PASSWORD '********'; gaussdb=# CREATE USER bob_mask PASSWORD '********'; --创建一个表tb_for_masking。 gaussdb=# CREATE TABLE tb_for_masking(idx int, col1 text, col2 text, col3 text, col4 text, col5 text, col6 text, col7 text,col8 text); gaussdb=# INSERT INTO tb_for_masking VALUES(1, '9876543210', 'usr321usr', 'abc@huawei.com', 'abc@huawei.com', '1234-4567-7890-0123', 'abcdef 123456 ui 323 jsfd321 j3k2l3', '4880-9898-4545-2525', 'this is a llt case'); gaussdb=# INSERT INTO tb_for_masking VALUES(2, '0123456789', 'lltc123llt', 'abc@gmail.com', 'abc@gmail.com', '9876-5432-1012-3456', '1234 abcd ef 56 gh78ijk90lm', '4856-7654-1234-9865','this,is.a!LLT?case'); --创建资源标签标记敏感列。 gaussdb=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); gaussdb=# CREATE RESOURCE LABEL mask_lb3 ADD COLUMN(tb_for_masking.col3); gaussdb=# CREATE RESOURCE LABEL mask_lb4 ADD COLUMN(tb_for_masking.col4); gaussdb=# CREATE RESOURCE LABEL mask_lb5 ADD COLUMN(tb_for_masking.col5); gaussdb=# CREATE RESOURCE LABEL mask_lb6 ADD COLUMN(tb_for_masking.col6); gaussdb=# CREATE RESOURCE LABEL mask_lb7 ADD COLUMN(tb_for_masking.col7); gaussdb=# CREATE RESOURCE LABEL mask_lb8 ADD COLUMN(tb_for_masking.col8); --创建脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); gaussdb=# CREATE MASKING POLICY maskpol2 alldigitsmasking ON LABEL(mask_lb2); gaussdb=# CREATE MASKING POLICY maskpol3 basicemailmasking ON LABEL(mask_lb3); gaussdb=# CREATE MASKING POLICY maskpol4 fullemailmasking ON LABEL(mask_lb4); gaussdb=# CREATE MASKING POLICY maskpol5 creditcardmasking ON LABEL(mask_lb5); gaussdb=# CREATE MASKING POLICY maskpol6 shufflemasking ON LABEL(mask_lb6); gaussdb=# CREATE MASKING POLICY maskpol7 regexpmasking('[\d+]','*',2, 9) ON LABEL(mask_lb7); --创建仅对用户dev_mask和bob_mask,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol8 randommasking ON LABEL(mask_lb8) FILTER ON ROLES(dev_mask, bob_mask), APP(gsql), IP('10.20.30.40', '127.0.0.0/24'); --查看脱敏策略生效。 gaussdb=# SELECT * FROM tb_for_masking; idx | col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 -----+------------+------------+----------------+----------------+---------------------+-------------------------------------+---------------------+-------------------- 1 | xxxxxxxxxx | usr000usr | xxx@huawei.com | xxx@xxxxxx.com | xxxx-xxxx-xxxx-0123 | s 2iju1bcjk243df333d61l 22 53ef3a | 48**-****-*545-2525 | this is a llt case 2 | xxxxxxxxxx | lltc000llt | xxx@gmail.com | xxx@xxxxx.com | xxxx-xxxx-xxxx-3456 | j 71fem0l286dbia543 g k9 ch | 48**-****-*234-9865 | this,is.a!LLT?case (2 rows) --使用gsql工具,IP地址为'10.20.30.40',用户dev_mask查看tb_for_masking。 gaussdb=# GRANT ALL PRIVILEGES TO dev_mask; gaussdb=# GRANT ALL PRIVILEGES TO bob_mask; gaussdb=# SET role dev_mask PASSWORD '********'; --使用maskpol8脱敏,结果随机,每次不同。 gaussdb=# SELECT col8 FROM tb_for_masking; col8 -------------------- 9f1425b3835cc30d99 9585b4ea8ea8ddcc5b (2 rows) gaussdb=# SET role bob_mask PASSWORD '********'; gaussdb=# SELECT col8 FROM tb_for_masking; col8 -------------------- f29ef3a0769a1f417c 806aa46409482d838f (2 rows) --删除脱敏策略。 gaussdb=# DROP MASKING POLICY maskpol1, maskpol2, maskpol3, maskpol4, maskpol5, maskpol6, maskpol7, maskpol8; --删除资源标签。 gaussdb=# DROP RESOURCE LABEL mask_lb1, mask_lb2, mask_lb3, mask_lb4, mask_lb5, mask_lb6, mask_lb7, mask_lb8; --删除表tb_for_masking。 gaussdb=# DROP TABLE tb_for_masking; --删除用户dev_mask和bob_mask。 gaussdb=# DROP USER dev_mask, bob_mask;
  • 语法格式 1 CREATE MASKING POLICY policy_name masking_clause[, ...] [ policy_filter_clause ] [ENABLE | DISABLE]; masking_clause: 1 masking_function ON LABEL(label_name[, ...]) masking_function: maskall不是预置函数,硬编码在代码中,不支持\df展示。 预置时脱敏方式如下: { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking }
  • 参数说明 policy_name 审计策略名称,需要唯一,不可重复。 取值范围:字符串,要符合标识符命名规范。 label_name 资源标签名称。 masking_clause 指出使用何种脱敏函数对被label_name标签标记的数据库资源进行脱敏,支持用schema.function的方式指定脱敏函数。 policy_filter 指出该脱敏策略对何种身份的用户生效,若为空表示对所有用户生效。 FILTER_TYPE 描述策略过滤的条件类型,包括IP | APP | ROLES。 filter_value 指具体过滤信息内容,例如具体的IP,具体的APP名称,具体的用户名。 ENABLE|DISABLE 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
  • GLOBAL_MEMORY_NODE_DETAIL 显示当前集群中所有正常节点下的内存使用情况。 表1 GLOBAL_MEMORY_NODE_DETAIL字段 名称 类型 描述 nodename text 节点名称。 memorytype text 内存使用的名称。 max_process_memory:数据库节点可用内存的最大值。 process_used_memory:进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:已使用的动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 max_shared_memory:最大共享内存。 shared_used_memory:已使用的共享内存。 max_sctpcomm_memory:TCP代理通信所允许使用的最大内存。 sctpcomm_used_memory:TCP代理通信已使用的内存大小。 sctpcomm_peak_memory:TCP代理通信的内存峰值。 other_used_memory:其他已使用的内存大小。 gpu_max_dynamic_memory:GPU最大动态内存。 gpu_dynamic_used_memory:GPU已使用的动态内存。 gpu_dynamic_peak_memory:GPU内存的动态峰值。 pooler_conn_memory:连接池申请内存计数。 pooler_freeconn_memory:连接池空闲连接的内存计数。 storage_compress_memory:存储模块压缩使用的内存大小。 udf_reserved_memory:UDF预留的内存大小。 memorymbytes integer 内存使用的大小,单位为MB。 父主题: Memory
  • enable_sonic_optspill 参数说明:标识是否对面向列的hash表设计的Hash Join算子进行下盘文件数优化。该参数打开时,在Hash Join算子下盘文件较多的时候,下盘文件数不会显著增加。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示优化面向列的hash表设计的Hash Join算子的下盘文件数。 off表示不优化面向列的hash表设计的Hash Join算子的下盘文件数。 默认值:on
  • cursor_tuple_fraction 参数说明:优化器估计游标获取行数在总行数中的占比。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:浮点型,0.0~1.0。 比默认值小的值与使用 “fast start” 为游标规划的值相偏离,从而使得前几行恢复的很快而抓取全部的行需要很长的时间。比默认值大的值加大了总的估计的时间。在最大的值1.0处,像正常的查询一样规划游标,只考虑总的估计时间和传送第一行的时间。 默认值:0.1
  • autoanalyze 参数说明:标识是否允许在生成计划的时候,对于没有统计信息的表进行统计信息自动收集。对于外表和临时表,不支持autoanalyze,如果需要收集统计信息,用户需手动执行analyze操作。如果在auto analyze某个表的过程中数据库发生异常,当数据库正常运行之后再执行语句有可能仍提示需要收集此表的统计信息。此时需要用户对该表手动执行一次analyze操作,以同步统计信息数据。该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示允许自动进行统计信息收集。 off表示不允许自动进行统计信息收集。 默认值:off
  • auto_explain_log_min_duration 参数说明:控制自动打印执行计划的耗时阈值,整体耗时大于auto_explain_log_min_duration的执行计划才会被打印。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~2147483647,单位为毫秒。 设置为0,所有执行过的执行计划都会输出。 设置为3000,单次语句执行耗时超过3000毫秒后所有执行的执行计划会输出。 默认值:0
  • session_sequence_cache 参数说明:在当前会话下,一次性交互申请的sequence数值,会话结束会自动丢弃未用完的值。用户在使用sequence大批量导入数据的时候可以通过调大该参数,提高插入速度,增加高并发性能;用户在高并发单条插入数据的时候,将该参数设置为1,减少了sequence的跳变。如对连续性有强要求,需要在创建sequence的时候指定需要的cache,该参数如果大于cache指定的值会自动失效。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1 ~ 2147483647。 默认值:10 默认值为10是高并发场景下,兼顾单条插入和批量插入的性能会有比较好的表现。
  • plan_cache_mode 参数说明:标识在prepare语句中,选择生成执行计划的策略。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:枚举类型 auto表示按照默认的方式选择custom plan或者generic plan。 force_generic_plan表示强制走generic plan(软解析)。generic plan是指对于prepare语句生成计划,该计划策略会在执行execute语句的时候把参数bind到plan中,然后执行计划。这种方案的优点是每次执行可以省去重复的优化器开销;缺点是当bind参数字段上数据存在倾斜时该计划可能不是最优的,部分bind参数场景下执行性能较差。 force_custom_plan表示强制走custom plan(硬解析)。custom plan是指对于prepare语句,在执行execute的时候,把execute语句中的参数嵌套到语句之后生成的计划。custom plan会根据execute语句中具体的参数生成计划,这种方案的优点是每次都按照具体的参数生成优选计划,执行性能比较好;缺点是每次执行前都需要重新生成计划,存在大量的重复的优化器开销。 此参数只对prepare语句生效,一般用在prepare语句中参数化字段存在比较严重的数据倾斜的场景下。 默认值:auto
  • router 参数说明:用于控制router功能的详细属性,仅在打开enable_router和enable_light_proxy后生效。该参数会根据表的hash分布列,计算给定的分布列在哪个DN上,设置router后将支持的sql下推到该DN上执行。如果设置错了router,可能导致数据存入错误的dn,导致不可预测的问题,需谨慎使用。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串 该参数分为两部分,'schema_name.table_name,"distribute_keys"',其具体含义如下: schema_name.table_name:表示schema名和表名,如不显示设置schema_name,则默认为current_schema。 distribute_keys:分布表的所有分布列值,用逗号间隔开,且分布列值的顺序必须和表中分布列顺序一致。 默认值:空
  • join_collapse_limit 参数说明:根据得出的列表项数来判断优化器是否执行把除FULL JOINS之外的JOIN构造重写到FROM列表中。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1~2147483647‬。 设置为1会避免任何JOIN重排。这样就使得查询中指定的连接顺序就是实际的连接顺序。查询优化器并不是总能选取最优的连接顺序,高级用户可以选择暂时把这个变量设置为1,然后指定它们需要的连接顺序。 比默认值小的数值减少规划时间但也降低了执行计划的质量。 默认值:8
  • 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中对应设置方法进行设置。 取值范围:整型,-1~ 2147483647 默认值:0 当该参数设置为随机执行计划模式时,优化器会生成不同的随机执行计划,该执行计划可能不是最优计划。因此在随机计划模式下,会对查询性能产生影响,所以建议在升级、扩容、缩容等正常业务操作或运维过程中将该参数保持为默认值0。 当该参数不为0时,查询指定的plan hint不会生效。
  • enable_extrapolation_stats 参数说明:标识对于日期类型是否允许基于历史统计信息使用推理估算的逻辑。使用该逻辑对于未及时收集统计信息的表可以增大估算准确的可能性,但也存在错误推理导致估算过大的可能性,需要对于日期类型数据定期插入的场景开启此开关。该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示允许基于历史统计信息使用推理估算的逻辑。 off表示不允许基于历史统计信息使用推理估算的逻辑。 默认值:off
  • query_dop 参数说明:用户自定义的查询并行度。该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,-64-64 [1,64]:打开固定SMP功能,系统会使用固定并行度。 0:打开SMP自适应功能,系统会根据资源情况和计划特征动态选取最优并行度。 [-64,-1]:打开SMP自适应功能,并限制自适应选取的最大并行度。 在开启并行查询后,请保证系统CPU、内存、网络、I/O等资源充足,以达到最佳效果。 为了避免用户设置不合理的过大值造成性能劣化,系统会计算出该DN可用最大CPU核数,并以此来作为query_dop的上限。如果用户设置query_dop超过4并且同时超过该上限,那么系统会重置query_dop为该上限值。 默认值:1
  • explain_perf_mode 参数说明:此参数用来指定explain的显示格式。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:normal、pretty、summary、run normal:代表使用默认的打印格式。 pretty:代表使用 GaussDB 改进后的新显示格式。新的格式层次清晰,计划包含了plan node id,性能分析简单直接。 summary:是在pretty的基础上增加了对打印信息的分析。 run:在summary的基础上,将统计的信息输出到csv格式的文件中,以便于进一步分析。 默认值:pretty pretty模式当前只支持包含stream算子的计划,不支持下发语句到DN节点的计划。因此显示格式会受enable_stream_operator参数影响,当enable_stream_operator设置为off时无法生成包含stream算子的计划。
  • enable_partition_opfusion 参数说明:在enable_opfusion参数打开的状态下,如果开启该参数,可以对分区表的简单查询进行查询优化,提升SQL执行性能。在enable_global_plancache参数设置为on时,此参数设置on将不生效。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示使用。 off表示不使用。 默认值:off
  • constraint_exclusion 参数说明:控制查询优化器使用表约束查询的优化。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:枚举类型 on/true/yes/1表示检查所有表的约束。 off/false/no/0表示不检查约束。 partition表示只检查继承的子表和UNION ALL子查询。 当constraint_exclusion为on,优化器用查询条件和表的CHECK约束比较,并且在查询条件和约束冲突的时候忽略对表的扫描。 默认值:partition 目前, constraint_exclusion缺省被打开,通常用来实现表分区。为所有的表打开它时,对于简单的查询强加了额外的规划,并且对简单查询没有什么好处。如果不用分区表,可以关掉它。
  • cost_param 参数说明:该参数用于控制在特定的客户场景中,使用不同的估算方法使得估算值与真实值更接近。此参数可以同时控制多种方法,与某一方法对应的位做与操作,不为0表示该方法被选择。 当cost_param & 1不为0,表示对于求不等值连接选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估算中更加准确。当前版本已弃用cost_param & 1不为0时的路径,默认选择更优的估算公式。 当cost_param & 2不为0,表示求多个过滤条件(Filter)的选择率时,选择最小的作为总的选择率,而非两者乘积,此方法在过滤条件的列之间关联性较强时估算更加准确。 当cost_param & 4不为0,表示在进行stream节点估算时,选用调试模型,该模型不推荐用户使用。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~2147483647‬ 默认值:0
  • enable_gpc_grayrelease_mode 参数说明:分布式集群下,开启GPC需要重启集群。如果需要在不重启集群的情况下开启GPC,需要用enable_gpc_grayrelease_mode控制滚动开启GPC或关闭GPC。 分布式集群上操作方式。 开启GPC: 1、在所有DN节点开启enable_gpc_grayrelease_mode。 2、在所有CN节点开启enable_gpc_grayrelease_mode。 3、开启GPC参数,由于GPC是POSTMASTER参数,需要先reload参数,之后轮询kill节点,使重新拉起的节点上GPC生效。 关闭GPC: 1、首先确定enable_gpc_grayrelease_mode 是on的状态,reload关闭GPC参数,然后轮询kill节点,使重新拉起的节点上GPC生效。 2、在所有CN节点关闭enable_gpc_grayrelease_mode。 3、在所有DN节点关闭enable_gpc_grayrelease_mode。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型。 on off 默认值:off
  • enable_fast_numeric 参数说明:标识是否开启Numeric类型数据运算优化。Numeric数据运算是较为耗时的操作之一,通过将Numeric转化为int64/int128类型,提高Numeric运算的性能。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on/true表示开启Numeric优化。 off/false表示关闭Numeric优化。 默认值:on
  • enable_global_plancache 参数说明:设置是否对PBE查询和存储过程中语句的执行计划进行缓存共享,开启该功能可以节省高并发下CN和DN上的内存使用。且该参数必须在CN和DN上一致,否则会出现CN下发给DN的报文不匹配从而报错等问题。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 在打开enable_global_plancache的情况下,为保证GPC生效,默认local_syscache_threshold不小于16MB。即如当前local_syscache_threshold小于16MB,则设置为16MB,如大于16MB,则不改变。 取值范围:布尔型。 on表示对PBE查询和存储过程中语句的执行计划进行缓存共享。 off表示不共享。 默认值:off
  • enable_opfusion 参数说明:控制是否对简单查询进行查询优化。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 该开关是优化DN的查询性能,可以设置max_datanode_for_plan查看一个查询DN的执行计划,如果DN的执行计划中带有[Bypass]标识则代表该查询在该DN可以查询优化。 简单查询限制如下: 只支持indexscan和indexonlyscan,且全部WHERE语句的过滤条件都在索引上。 只支持单表增删改查,不支持join、using。 只支持行存表,不支持分区表,表不支持有触发器。 不支持active sql、QPS等信息统计特性。 不支持正在扩容和缩容的表。 不支持查询或者修改系统列。 只支持简单SELECT语句,例如: SELECT c3 FROM t1 WHERE c1 = ? and c2 =10; 仅可以查询目标表的列,c1和c2列为索引列,后边可以是常量或者参数,可以使用 for update。 只支持简单INSERT语句,例如: INSERT INTO t1 VALUES (?,10,?); 仅支持一个VALUES,VALUES里面的类型可以是常量和参数,不支持returning。 只支持简单DELETE语句,例如: DELETE FROM t1 WHERE c1 = ? and c2 = 10; c1和c2列为索引列,后边可以是常量或者参数。 只支持简单UPDATE语句,例如: UPDATE t1 SET c3 = c3+? WHERE c1 = ? and c2 = 10; c3列修改的值可以是常量和参数,也可以是一个简单的表达式,c1和c2列为索引列,后边可以是常量或者参数。 取值范围:布尔型 on表示使用。 off表示不使用。 默认值:on
  • enable_global_stats 参数说明:标识当前统计信息模式,区别采用全局统计信息收集模式还是单节点统计信息收集模式,默认创建为采用全局统计信息模式。当关闭该参数时,则默认收集集群第一个节点的统计信息,此时可能会影响生成查询计划的质量,但信息收集性能较优,建议谨慎设置。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on/true表示全局统计信息。 off/false表示单DN统计信息。 默认值:on
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全