华为云用户手册

  • GS_MY_ILMRESULTS GS_MY_ILMRESULTS视图反映ADO JOB的执行详情信息,包含Task ID,JOB名称、JOB状态、JOB时间信息等。 表1 GS_MY_ILMRESULTS字段 名称 类型 描述 task_id bigint ADO Task的ID。 job_name character varying(128) ADO Job的任务名称。 job_state character varying(35) ADO Job的状态。 start_time timestamp with time zone JOB开始被调度的时间。 completion_time timestamp with time zone 完成时间。 comments character varying(4000) JOB失败后此处记录失败原因。 statistics clob 统计信息。 父主题: OLTP表压缩
  • 语法格式 CREATE [ OR REPLACE ] PROCEDURE procedure_name [ ( {[ argname ] [ argmode ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] [ { IMMUTABLE | STABLE | VOLATILE } | { SHIPPABLE | NOT SHIPPABLE } | {PACKAGE} | [ NOT ] LEAKPROOF | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} | COST execution_cost | SET configuration_parameter { [ TO | = ] value | FROM CURRENT } ][ ... ] { IS | AS } plsql_body /
  • 参数说明 OR REPLACE 当存在同名的存储过程时,替换原来的定义。 procedure_name 创建的存储过程名称,可以带有模式名。 取值范围:字符串,要符合标识符命名规范。 创建和系统函数重名的函数时,调用时需要指定函数的schema。 argmode 参数的模式。 VARIADIC用于声明数组类型的参数。 取值范围:IN,OUT,INOUT或VARIADIC。缺省值是IN。只有OUT模式的参数能跟在VARIADIC参数之后。 argname 参数的名称。 取值范围:字符串,要符合标识符命名规范。 argtype 参数的数据类型。可以使用%TYPE或%ROWTYPE间接引用变量或表的类型,详细可参考存储过程章节定义变量。 取值范围:可用的数据类型。 PACKAGE外PROCEDURE argtype中%TYPE不支持引用PACKAGE变量的类型。 expression 参数的默认表达式。 在参数a_format_version值为10c和a_format_dev_version值为s2的情况下,参数为INOUT模式时不支持默认表达式。 推荐使用方式:将所有默认值参数定义在所有非默认值参数后。 调用带有默认参数的函数时,入参从左往右排入函数,如果有非默认参数的入参缺失则报错。 打开 proc_uncheck_default_param 参数,调用带有默认参数的函数时,入参从左往右排入函数,允许缺省默认参数个入参,如果有非默认参数的入参缺失,则会用错位的默认值填充该参数。 在参数a_format_version值为10c、a_format_dev_version值为s1和关闭proc_outparam_override,函数参数同时包括out出参和default时,默认值不可缺省。 configuration_parameter value 把指定的配置参数设置为给定的值。如果value是DEFAULT,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串 DEFAULT OFF 指定默认值。 from current 取当前会话中的值设置为configuration_parameter的值。 IMMUTABLE、STABLE等 行为约束可选项。各参数的功能与CREATE FUNCTION类似,详细请参见CREATE FUNCTION。 plsql_body PL/SQL存储过程体。 当在存储过程体中进行创建用户、修改密码或加解密等涉及密码或密钥相关操作时,系统表及日志中会记录密码或密钥的明文信息。为防止敏感信息泄露,不建议用户在存储过程体中进行涉及密码或密钥等敏感信息的相关操作。 argname和argmode的顺序没有严格要求,推荐按照argname、argmode、argtype的顺序使用。
  • 注意事项 如果创建存储过程时参数或返回值带有精度,不进行精度检测。 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。 创建存储过程时,仅对CREATE的存储过程或PACKAGE本身加写锁,仅对执行过程中编译、执行会对函数和函数依赖的PACKAGE均加读锁。 创建存储过程时,存储过程内部通过SET语句设置current_schema和search_path无效。执行完函数search_path和current_schema与执行函数前的search_path和current_schema保持一致。 SELECT、CALL调用函数时,必须要在出参位置提供实参进行调用,实参不会发生作用。 存储过程指定package属性时支持重载。 不能创建仅形参名字不同(存储过程名和参数列表类型都一样)的重载存储过程。 重载的存储过程在调用时变量需要明确具体的类型。 不能创建与函数拥有相同名称和参数列表的存储过程。 不支持仅默认值不同的存储过程重载。 存储过程仅in、out、inout这三种类型不同的参数,打开guc参数behavior_compat_options='proc_outparam_override'后,不允许重载。关闭该参数后,可以重载。 A兼容模式的数据库,建立A风格的函数;PG兼容的库,建立PG风格的函数。不建议混合创建。 函数如果支持重载,需要添加PACKAGE关键字。 在存储过程内部使用未声明的变量,存储过程被调用时会报错。 在创建procedure时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。 存储过程中不支持需要return集合的操作。 在存储过程内部调用其它无参数的存储过程时,可以省略括号,直接使用存储过程名进行调用。 在存储过程内部调用其他有出参的函数,如果在赋值表达式中调用时,需要打开guc参数 set behavior_compat_options = 'proc_outparam_override' ,并提前定义与出参类型相同的变量,然后将变量作为出参调用带有出参的其他函数,出参才能生效。否则,被调函数的出参会被忽略。 在表达式中使用out参数作为出参时,如下情况不会生效,例如:使用execute immediate sqlv using func语法执行函数、使用select func into语法执行函数、使用insert、update等DML语句执行以及带out出参的函数作为入参时,fun(func(out b),a),out出参b未生效等。 存储过程支持参数注释的查看与导出、导入。 存储过程支持介于IS/AS与plsql_body之间的注释的查看与导出、导入。 存储过程默认为SECURITY INVOKER权限,如果想将默认行为改为SECURITY DEFINER权限,需要设置guc参数behavior_compat_options='plsql_security_definer'。 被授予CREATE ANY FUNCTION权限的用户,可以在用户模式下创建/替换存储过程。 out/inout参数必须传入变量,不能传入常量。 集中式环境下,想要调用in参数相同,out参数不同的存储过程,需要设置guc参数behavior_compat_options='proc_outparam_override',并且打开参数后,无论使用select还是call调用存储过程,都必须加上out参数。打开参数后,不支持使用perform调用存储过程或函数。 存储过程创建时依赖未定义对象,如参数behavior_compat_options='plpgsql_dependency'打开,创建可执行,通过WARNING提示;如参数未打开,存储过程创建不可执行。 当打开三权分立时,对于定义者权限的存储过程,只能由本用户自己重建。 如果将定义者权限的存储过程创建到其他用户Schema下,则会以其他用户的权限执行该存储过程,有越权风险,请谨慎使用。 在存储过程内部函数复杂调用,如:func(x).a,函数调用返回复合类型,支持跨schema调用,不支持通过database.schema.package.func(x).b的方式调用。 调用带out出参的存储过程,设置GUC参数set behavior_compat_options = 'proc_outparam_transfer_length'后可以传递参数长度。规格限制如下: 支持的基本类型包括:CHAR(n)、CHARACTER(n)、NCHAR(n)、VARCHAR(n)、VARYING(n)、VARCHAR2(n)、NVARCHAR2(n)。 out出参不生效的情况下(比如perform)不需要传递长度。 不支持精度传递的基本类型包括:NUMERIC、DECIMAL、NUMBER、FLOAT、DEC、INTEGER、TIME、TIMESTAMP、INTERVAL、TIME WITH TIME ZONE、TIMESTAMP WITH TIME ZONE、TIME WITHOUT TIME ZONE、TIMESTAMP WITHOUT TIME ZONE。 无论GUC参数set behavior_compat_options是否设置为proc_outparam_override都支持传递参数长度。 要传递集合类型的元素长度和被集合类型嵌套的数组类型的元素长度需要在GUC参数behavior_compat_options里同时开启tableof_elem_constraints选项。 函数中存在通过GUC参数控制特性的语法、函数等,如果在会话内更改相关GUC参数,修改参数后,调用函数可能会维持修改前的行为,请谨慎变更GUC参数。
  • 语法格式 创建表。 CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name {({ column_name data_type [ CHARACTER SET | CHARSET charset ] [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option [...] ] } [, ... ]) | LIKE source_table } [ table_option [ [ , ] ... ] ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ] [ COMPRESS | NOCOMPRESS ] [ ILM ADD POLICY ROW STORE { COMPRESS ADVANCED } { ROW } AFTER n { day | month | year } OF { NO MODIFICATION } [ ON ( EXPR )]] [ TABLESPACE tablespace_name ]; 其中table_option为: { COMMENT [ = ] 'string' | AUTO_INCREMENT [ = ] value | [ DEFAULT ] CHARACTER SET | CHARSET [ = ] default_charset | [ DEFAULT ] COLLATE [ = ] default_collation | ENGINE [ = ] { InnoDB | 'InnoDB' | "InnoDB" } } 其中列约束column_constraint为: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | ON UPDATE update_expr | GENERATED ALWAYS AS ( generation_expr ) [STORED] | GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity_options ) ] | AUTO_INCREMENT | COMMENT 'string' | UNIQUE [KEY] index_parameters | PRIMARY KEY index_parameters | ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中列的压缩可选项compress_mode为: { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } 其中表约束table_constraint为: [ CONSTRAINT [ constraint_name ] ] { CHECK ( expression ) | UNIQUE [ index_name ] [ USING method ] ( { { column_name [ ( length ) ] | ( expression ) } [ ASC | DESC ] } [, ... ] ) index_parameters | PRIMARY KEY [ USING method ] ( { column_name [ ASC | DESC ] } [, ... ] ) index_parameters | FOREIGN KEY [ index_name ] ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] { [ COMMENT 'string' ] [ ... ] } 其中like选项like_option为: { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | UPDATE | IDENTITY | ALL } 其中索引参数index_parameters为: [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ] 其中update_expr为: { CURRENT_TIMESTAMP | LOCALTIMESTAMP | NOW() }
  • 建表示例 临时表 --创建临时表。 gaussdb=# CREATE TEMP TABLE test_t1( id CHAR(7), name VARCHAR(20), province VARCHAR(60), --省 country VARCHAR(30) DEFAULT 'China' --国籍 ); -- 在当前会话中插入数据。 gaussdb=# INSERT INTO test_t1 VALUES ('0000009','Jack','Guangzhou','China'); --临时表里面的数据只在当前会话中可见,所以在另一个会话中查看该表中没有数据。 gaussdb=# SELECT * FROM test_t1; id | name | age ----+------+----- (0 rows) --创建表临时表,并指定提交事务时删除该临时表数据。 gaussdb=# CREATE TEMPORARY TABLE test_t2( id CHAR(7), name VARCHAR(20), province VARCHAR(60), --省 country VARCHAR(30) DEFAULT 'China' --国籍 ) ON COMMIT DELETE ROWS; --删除表。 gaussdb=# DROP TABLE test_t1; gaussdb=# DROP TABLE test_t2; 建表时指定字符集字符序 -- 创建t1表,设置t1的默认字符集为utf8mb4,默认字符序为utf8mb4_bin,设置c1字段为表的默认字符集字符序,设置c2字段的字符集为utf8mb4,字符序为utf8mb4_unicode_ci。 gaussdb=# CREATE TABLE t1(c1 text, c2 text charset utf8mb4 collate utf8mb4_unicode_ci) charset utf8mb4 collate utf8mb4_bin; IF NOT EXISTS关键字 使用该关键字,表不存在时报NOTICE;如不用该关键字,则报ERROR。两种情况下表都不会创建成功。 gaussdb=# CREATE TABLE test_t3(id INT); --创建一个已经存在同名的表test_t3。 gaussdb=# CREATE TABLE test_t3(id INT); ERROR: relation "test_t3" already exists in schema "public" DETAIL: creating new table with existing name in the same schema --使用IF NOT EXISTS关键字。 gaussdb=# CREATE TABLE IF NOT EXISTS test_t3(id INT); NOTICE: relation "test_t3" already exists, skipping CREATE TABLE --删除表。 gaussdb=# DROP TABLE test_t3; 建表时指定表空间 --创建表空间。 gaussdb=# CREATE TABLESPACE ds_tbs1 RELATIVE LOCATION 'tablespace/tablespace_1'; --创建表时,指定表空间。 gaussdb=# CREATE TABLE test(id CHAR(7), name VARCHAR(20)) TABLESPACE ds_tbs1; --删除表和表空间。 gaussdb=# DROP TABLE test; gaussdb=# DROP TABLESPACE ds_tbs1;
  • 注意事项 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 使用JDBC时,支持通过PrepareStatement对DEFAULT值进行参数化设置。 被授予CREATE ANY TABLE权限的用户,可以在public模式和用户模式下创建表。如果想要创建包含serial类型列的表,还需要授予CREATE ANY SEQUENCE创建序列的权限。 XML类型不能作为主键、外键。 在为数据对象增加或者变更ILM策略的时候,如果追加了行级表达式,需要注意行表达式目前只支持白名单中列出的函数。具体白名单函数列表参考行表达式函数白名单。 表约束个数不能超过32767个。
  • 优化建议 UNLOGGED UNLOGGED表和表上的索引因为数据写入时不通过WAL日志机制,写入速度远高于普通表。因此,可以用于缓冲存储复杂查询的中间结果集,增强复杂查询的性能。 UNLOGGED表无主备机制,在系统故障或异常断点等情况下,会有数据丢失风险,因此,不可用来存储基础数据。 TEMPORARY | TEMP 临时表只在当前会话可见,会话结束后会自动删除。 LIKE 新表自动从这个表中继承所有字段名及其数据类型和非空约束,新表与源表之间在创建动作完毕之后是完全无关的。 LIKE INCLUDING DEFAULTS 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是NULL。 LIKE INCLUDING CONSTRAINTS 源表上的CHECK约束仅在指定INCLUDING CONSTRAINTS时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 LIKE INCLUDING INDEXES 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 LIKE INCLUDING STORAGE 如果指定了INCLUDING STORAGE,则复制列的STORAGE设置会复制到新表中,默认情况下不包含STORAGE设置。 LIKE INCLUDING COMMENTS 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 LIKE INCLUDING PARTITION 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不复制源表的分区定义。 列表/哈希分区表暂不支持LIKE INCLUDING PARTITION。 LIKE INCLUDING RELOPTIONS 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 LIKE INCLUDING IDENTITY 如果指定了INCLUDING IDENTITY,则创建一个和源表SEQUENCE参数相同的SEQUENCE来实现IDENTITY,并且IDENTITY类型与源表相同。默认情况下,不复制源表的IDENTITY。 LIKE INCLUDING ALL INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS和INCLUDING IDENTITY的内容。 ORIENTATION ROW 创建行存表,行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。
  • 几何函数 area(object) 描述:计算图形的面积。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT area(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row) center(object) 描述:计算图形的中心。 返回类型:point 示例: 1 2 3 4 5 gaussdb=# SELECT center(box '((0,0),(1,2))') AS RESULT; result --------- (0.5,1) (1 row) diameter(circle) 描述:计算圆的直径。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT diameter(circle '((0,0),2.0)') AS RESULT; result -------- 4 (1 row) height(box) 描述:矩形的竖直高度。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT height(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row) isclosed(path) 描述:图形是否为闭合路径。 返回类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT isclosed(path '((0,0),(1,1),(2,0))') AS RESULT; result -------- t (1 row) isopen(path) 描述:图形是否为开放路径。 返回类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT isopen(path '[(0,0),(1,1),(2,0)]') AS RESULT; result -------- t (1 row) length(object) 描述:计算图形的长度。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT length(path '((-1,0),(1,0))') AS RESULT; result -------- 4 (1 row) npoints(path) 描述:计算路径的顶点数。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT npoints(path '[(0,0),(1,1),(2,0)]') AS RESULT; result -------- 3 (1 row) npoints(polygon) 描述:计算多边形的顶点数。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT npoints(polygon '((1,1),(0,0))') AS RESULT; result -------- 2 (1 row) pclose(path) 描述:把路径转换为闭合路径。 返回类型:path 示例: 1 2 3 4 5 gaussdb=# SELECT pclose(path '[(0,0),(1,1),(2,0)]') AS RESULT; result --------------------- ((0,0),(1,1),(2,0)) (1 row) popen(path) 描述:把路径转换为开放路径。 返回类型:path 示例: 1 2 3 4 5 gaussdb=# SELECT popen(path '((0,0),(1,1),(2,0))') AS RESULT; result --------------------- [(0,0),(1,1),(2,0)] (1 row) radius(circle) 描述:计算圆的半径。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT radius(circle '((0,0),2.0)') AS RESULT; result -------- 2 (1 row) width(box) 描述:计算矩形的水平尺寸。 返回类型:double precision 示例: 1 2 3 4 5 gaussdb=# SELECT width(box '((0,0),(1,1))') AS RESULT; result -------- 1 (1 row)
  • ADM_IND_COLUMNS ADM_IND_COLUMNS视图显示数据库中索引字段的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_IND_COLUMNS字段 名称 类型 描述 index_owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名。 table_owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 column_name name 列名。 column_position smallint 索引中列的位置。 column_length numeric 列的长度,如果列是变长类型,该字段取值为NULL。 char_length numeric 列的最大字节长度。 descend character varying(4) 列是降序(DESC)排序还是升序(ASC)排序。 collated_column_id numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • PG_TOTAL_USER_RESOURCE_INFO_OID PG_TOTAL_USER_RESOURCE_INFO_OID视图显示所有用户的资源使用情况,需要使用管理员用户进行查询。此视图在GUC参数use_workload_manager为on时才有效。 表1 PG_TOTAL_USER_RESOURCE_INFO_OID字段 名称 类型 描述 userid oid 用户ID。 used_memory integer 正在使用的内存大小,单位MB。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 used_cpu double precision 正在使用的CPU核数。 total_cpu integer 在该机器节点上,用户关联控制组的CPU核数总和。 used_space bigint 已使用的存储空间大小,单位KB。 total_space bigint 可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。 used_temp_space bigint 已使用的临时空间大小,单位KB total_temp_space bigint 可使用的临时空间总大小,单位KB,值为-1表示未限制。 used_spill_space bigint 已使用的下盘空间大小。单位KB。 total_spill_space bigint 可使用的下盘空间总大小,单位KB,值为-1表示未限制。 read_kbytes bigint 读磁盘数据量,单位KB。 write_kbytes bigint 写磁盘数据量,单位KB。 read_counts bigint 读磁盘次数。 write_counts bigint 写磁盘次数。 read_speed double precision 读磁盘速率,单位B/ms。 write_speed double precision 写磁盘速率,单位B/ms。 父主题: 其他系统视图
  • auto_explain_log_min_duration 参数说明:控制自动打印执行计划的耗时阈值,整体耗时大于auto_explain_log_min_duration的执行计划才会被打印。比如设置为0,所有执行过的执行计划都会输出;设置为3000,单次语句执行耗时超过3000毫秒的所有执行的执行计划会输出。 参数类型:整型 参数单位:毫秒 取值范围:0~2147483647 默认值:0 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • enable_auto_explain 参数说明:控制是否开启自动打印执行计划。该参数是用来定位慢存储过程或慢查询,对当前连接的数据库主节点和直连的备机有效。 参数类型:布尔型 参数单位:无 取值范围: true表示开启。 false表示关闭。 默认值:false 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若需查看执行计划,则开启,但会降低当前系统性能。
  • default_statistic_granularity 参数说明:默认情况下,当未指定PARTITION_MODE时,指定默认收集哪些分区表分区级统计信息。对非分区表不生效。 参数类型:枚举型 参数单位:无 取值范围:枚举型 ALL:收集整表、一级分区、二级分区的统计信息。 GLOBAL:收集整表的统计信息。 PARTITION:收集一级分区的统计信息。 GLOBAL_AND_PARTITION:收集整表、一级分区的统计信息。 SUBPARTITION:收集二级分区的统计信息。 ALL_COMPLETE:收集整表、一级分区、二级分区的统计信息。 默认值:ALL 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。如果需要收集分区级统计信息,可根据实际需要设置,但可能会对ANALYZE的性能产生一定影响。
  • immediate_analyze_threshold 参数说明:插入数据后自动做analyze的阈值。当一次新增数据量达到原有数据量的immediate_analyze_threshold倍,且总行数超过一百时,会自动触发一次analyze。 参数类型:整型 参数单位:无 取值范围:0~1000。当取值为零时,该功能关闭。 默认值:0 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:对数据变化较快且需要不断更新统计信息的表设置为较小值,对达到一定量数据后统计信息才产生较大波动的表设置为较大值。 该功能只支持永久表和非日志表,不支持临时表。 同一表不会在10s内两次被自动触发analyze。
  • enable_invisible_indexes 参数说明:设置优化器是否可以使用不可见索引。 索引在被设置为不可见状态后,可能会对查询语句的性能产生影响。此时若不想变更索引可见性状态,且打算使用不可见索引,可设置enable_invisible_indexes参数为on。 参数类型:布尔型 参数单位:无 取值范围: on:优化器可以使用不可见索引。 off:优化器不可以使用不可见索引。 默认值:off 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • enable_dynamic_samplesize 参数说明:是否动态调整采样行数。对于超过一百万行的大表,收集统计信息时动态调整采样行数,提高统计信息准确性。 参数类型:布尔型 参数单位:无 取值范围: on:表示该功能打开。 off:表示该功能关闭。 默认值:on 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 动态调整采样行数的功能仅支持绝对值采样。
  • STATS_HISTORY_RECORD_LIMIT 参数说明:每个对象(包括表、列、分区、索引)的历史统计信息保留数目上限。每个对象在收集统计信息时会同时存入历史统计信息表中,当历史统计信息表中该对象的统计信息数量达到该阈值,再次收集新的统计信息时,时间较早的统计信息会被清理。 参数类型:整型 参数单位:条 取值范围:0 ~ 100 默认值:10 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,如果需要记录更多历史版本的统计信息可以适当调大该参数,但可能会对analyze的性能产生一定影响。
  • STATS_HISTORY_RETENTION_TIME 参数说明:每个对象(包括表、列、分区、索引)的历史统计信息保留时间。每个对象在收集统计信息时会同时存入历史统计信息表中,当历史统计信息表中该对象的统计信息的保留时间超过该阈值后,再次收集新的统计信息时,已经超过保留时间的统计信息会被清理。 参数类型:浮点型 参数单位:天 取值范围:-1、0 ~ 365000,-1表示历史统计信息不因时间而清除。 默认值:31 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,如果需要记录更早时间的历史版本的统计信息可以适当调大该参数,但可能会对analyze的性能产生一定影响。
  • 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不会生效。
  • join_collapse_limit 参数说明:根据得出的列表项数来判断优化器是否执行把除FULL JOINS之外的JOIN构造重写到FROM列表中。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:整型,1~INT_MAX。 设置为1会避免任何JOIN重排。这样就使得查询中指定的连接顺序就是实际的连接顺序。查询优化器并不是总能选取最优的连接顺序,高级用户可以选择暂时把这个变量设置为1,然后指定它们需要的连接顺序。 比默认值小的数值减少规划时间但也降低了执行计划的质量。 默认值:8
  • codegen_cost_threshold 参数说明:由于LLVM编译生成最终的可执行机器码需要一定时间,因此只有当实际执行的代价大于编译生成机器码所需要的代码和优化后的执行代价之和时,利用代码生成才有收益。codegen_cost_threshold标识代价的阈值,当执行估算代价大于该代价时,使用LLVM优化。codegen使用执行算子的plan_rows作为代价与codegen_cost_threshold进行比较,plan_rows的值可以通过explain命令查看。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:整型,0 ~ 2147483647。 默认值:100000
  • autoanalyze 参数说明:标识是否允许在生成计划的时候,对于没有统计信息的表进行统计信息自动收集。对于外表和临时表,不支持autoanalyze,如果需要收集统计信息,用户需手动执行analyze操作。如果在auto analyze某个表的过程中数据库发生异常,当数据库正常运行之后再执行语句有可能仍提示需要收集此表的统计信息。此时需要用户对该表手动执行一次analyze操作,以同步统计信息数据。 参数类型:布尔型 参数单位:无 取值范围: on表示允许自动进行统计信息收集。 off表示不允许自动进行统计信息收集。 默认值:off 设置方式:该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 集中式下该参数不生效。
  • enable_analyze_check 参数说明:标识是否允许在生成计划的时候,对于在pg_class中显示reltuples和relpages均为0的表,检查这些表是否曾进行过统计信息收集。 参数类型:布尔型 参数单位:无 取值范围: on表示允许检查。 off表示不允许检查。 默认值:off 设置方式:该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • enable_sonic_optspill 参数说明:标识是否对面向列的hash表设计的Hash Join算子进行下盘文件数优化。该参数打开时,在Hash Join算子下盘文件较多的时候,下盘文件数不会显著增加。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示优化面向列的hash表设计的Hash Join算子的下盘文件数。 off表示不优化面向列的hash表设计的Hash Join算子的下盘文件数。 默认值:on
  • enable_extrapolation_stats 参数说明:标识对于日期类型是否允许基于历史统计信息使用推理估算的逻辑。使用该逻辑对于未及时收集统计信息的表可以增大估算准确的可能性,但也存在错误推理导致估算过大的可能性,需要对于日期类型数据定期插入的场景开启此开关。该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示允许基于历史统计信息使用推理估算的逻辑。 off表示不允许基于历史统计信息使用推理估算的逻辑。 默认值:off
  • llvm_max_memory 参数说明:此参数设置Codegen编译产生的IR(包括缓存的和正在使用的)所占用的最大内存。Codegen使用的内存不使用预占的方式申请,属于max_dynamic_memory的一部分,且受llvm_max_memory参数的限制。 参数类型:整型 参数单位:kB 取值范围:0 ~ 2147483647,超过设定值则不再使用Codegen执行逻辑,降级为原有递归执行逻辑。当到达该上限触发执行降级后,调小llvm_max_memory的值无法立即释放多余IR所占用的内存,实际IR所占用的内存随着对应的SQL执行完毕后释放。 默认值:131072kB(128MB) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:建议设置为默认值。 最大占用内存如果设置过小,则易使系统不再使用Codegen执行逻辑,影响功能使用。 最大占用内存如果设置过大,可能会造成LLVM的编译过多占用其他线程的资源,造成系统整体性能下降。
  • plan_cache_mode 参数说明:标识在prepare语句中,选择生成执行计划的策略。 参数类型:枚举型 参数单位:无 取值范围: auto表示按照默认的方式选择custom plan或者generic plan。 force_generic_plan表示强制走generic plan(软解析)。generic plan是指对于prepare语句生成计划,该计划策略会在执行execute语句的时候把参数bind到plan中,然后执行计划。这种方案的优点是每次执行可以省去重复的优化器开销;缺点是当bind参数字段上数据存在倾斜时该计划可能不是最优的,部分bind参数场景下执行性能较差。bind会绑定第一次传入的参数类型,如果同一占位符两次传入的参数类型不一致会导致报错。 force_custom_plan表示强制走custom plan(硬解析)。custom plan是指对于prepare语句,在执行execute的时候,把execute语句中的参数嵌套到语句之后生成的计划。custom plan会根据execute语句中具体的参数生成计划,这种方案的优点是每次都按照具体的参数生成优选计划,执行性能比较好;缺点是每次执行前都需要重新生成计划,存在大量的重复的优化器开销。 此参数只对prepare语句生效,一般用在prepare语句中参数化字段存在比较严重的数据倾斜的场景下。 默认值:auto 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:根据实际业务场景进行设置。
  • enable_global_plancache 参数说明:设置是否对PBE查询和存储过程中语句的执行计划进行缓存共享,开启该功能可以节省高并发下数据库节点的内存使用。 在打开enable_global_plancache的情况下,为保证GPC生效,默认local_syscache_threshold不小于16MB。即如当前local_syscache_threshold小于16MB,则设置为16MB,如大于16MB,则不改变。 参数类型:布尔型 参数单位:无 取值范围: on:表示对PBE查询和存储过程中语句的执行计划进行缓存共享。 off:表示不共享。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
  • enable_functional_dependency 参数说明:ANALYZE生成的多列统计信息是否包含函数依赖统计信息,是否应用函数依赖统计信息计算选择率。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on包含两个功能:1. 执行ANALYZE生成的多列统计信息包含函数依赖统计信息。2. 计算选择率会使用函数依赖统计信息。 off包含两个功能:1. 执行ANALYZE生成的多列统计信息不包含函数依赖统计信息。2. 计算选择率不会使用函数依赖统计信息。 默认值:off
共100000条