华为云用户手册

  • 返回值 ConnStatusType:连接状态的枚举,包括: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 CONNECTION_STARTED 等待进行连接。 CONNECTION_MADE 连接成功;等待发送。 CONNECTION_AWAITING_RESPONSE 等待来自服务器的响应。 CONNECTION_AUTH_OK 已收到认证;等待后端启动结束。 CONNECTION_SSL_STARTUP 协商SSL加密。 CONNECTION_SETENV 协商环境驱动的参数设置。 CONNECTION_OK 连接正常。 CONNECTION_BAD 连接故障。
  • STAT_ALL_INDEXES 显示数据库当前节点中的每个索引的访问信息,如表1所示。 表1 STAT_ALL_INDEXES字段 名称 类型 描述 relid oid 这个索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引所在的Schema名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 该索引上执行的索引扫描次数。 idx_tup_read bigint 该索引上扫描返回的索引项数。 idx_tup_fetch bigint 使用该索引的简单索引扫描在原表中抓取的活跃行数。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Object
  • 如何查询两个时间的时间差? 答:您可以通过以下方法计算时间差。 通过age()函数计算两个时间的时间差。 gaussdb=# SELECT age(timestamp '2001-04-10 14:00:00', timestamp '2001-04-06 13:00:00'); age ----------------- 4 days 01:00:00 (1 row) 通过将字符串转为date类型然后再相减。 gaussdb=# SELECT ('2001-04-10 14:00:00'::date - '2001-04-06 13:00:00'::date); ?column? ---------- 4 (1 row) 通过date_part()函数,获取日期或者时间值中子域的值。 gaussdb=# SELECT date_part('day', '2001-04-10 14:00:00'::timestamp - '2001-04-06 13:00:00'::timestamp); date_part ----------- 4 (1 row) 父主题: FAQ
  • GS_ LOG ICAL_DICTIONARY GS_LOGICAL_DICTIONARY系统表记录逻辑解码数据字典信息表。 表1 GS_LOGICAL_DICTIONARY字段 字段名称 字段类型 说明 status integer 表示逻辑解码数据字典是否有效可用。 restart_lsn bigint unsigned 预留字段。 restart_lsn_time timestamp with time zone 基线化完成时间。 dictionary_csn_min bigint unsigned 使用的最小版本号。 last_clean_time timestamp with time zone 数据字典表最后一次清理的时间。 last_clean_result bool 数据字典表最后一次清理的结果。 originid integer 元组的来源标识符。 last_flush_csn bigint unsigned 上一次元信息修改的 CS N。 pdbid oid 该行数据对应的租户ID。 父主题: 逻辑解码
  • java.sql.ResultSetMetaData java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。 表1 对java.sql.ResultSetMetaData的支持情况 方法名 返回值类型 支持JDBC4 支持计划外ALT getCatalogName(int column) String Yes Yes getColumnClassName(int column) String Yes Yes getColumnCount() int Yes Yes getColumnDisplaySize(int column) int Yes Yes getColumnLabel(int column) String Yes Yes getColumnName(int column) String Yes Yes getColumnType(int column) int Yes Yes getColumnTypeName(int column) String Yes Yes getPrecision(int column) int Yes Yes getScale(int column) int Yes Yes getSchemaName(int column) String Yes Yes getTableName(int column) String Yes Yes isAutoIncrement(int column) boolean Yes Yes isCaseSensitive(int column) boolean Yes Yes isCurrency(int column) boolean Yes Yes isDefinitelyWritable(int column) boolean Yes Yes isNullable(int column) int Yes Yes isReadOnly(int column) boolean Yes Yes isSearchable(int column) boolean Yes Yes isSigned(int column) boolean Yes Yes isWritable(int column) boolean Yes Yes uppercaseAttributeName为true时,下面接口会将查询结果转为大写,可转换范围为26个英文字母。 public String getColumnName(int column) public String getColumnLabel(int column) 父主题: JDBC接口参考
  • PG_LANGUAGE PG_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 表1 PG_LANGUAGE字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性;必须明确选择)。 lanname name - 语言的名称。 lanowner oid PG_AUTHID.oid 语言的所有者。 lanispl boolean - true:表示用户定义的语言。 false:表示内部语言,比如SQL。 目前,gs_dump仍然使用该字段判断哪种语言需要转储,但是这些可能在将来被其它机制取代。 lanpltrusted boolean - true:这是可信语言,意味着系统相信它不会被授予任何正常SQL执行环境之外的权限。 false:这是不可信语言。只有初始用户可以用不可信语言创建函数。 lanplcallfoid oid PG_PROC.oid 对于非内部语言,这是指向该语言处理器的引用,语言处理器是一个特殊函数, 负责执行以某种语言写的所有函数。 laninline oid PG_PROC.oid 这个字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为零。 lanvalidator oid PG_PROC.oid 这个字段引用一个语言校验器函数,它负责检查新创建的函数的语法和有效性。如果没有提供校验器,则为零。 lanacl aclitem[] - 访问权限。 父主题: 其他系统表
  • ADM_TAB_COLUMNS ADM_TAB_COLUMNS视图显示关于表和视图的字段的信息。数据库中每个表和视图的每一个字段在ADM_TAB_COLUMNS里有一行对应的数据。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_COLUMNS字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表的名称。 column_name character varying(64) 列名。 data_type character varying(128) 列的数据类型。 data_type_mod character varying(3) 暂不支持,值为NULL。 data_type_owner character varying(128) 列的数据类型的所有者。 data_length integer 列的字节长度。 data_precision integer 数据类型的精度,对于numeric数据类型有效,其他类型为NULL。 data_scale integer 小数点右边的位数,对于numeric数据类型有效,其他类型为0。 nullable bpchar 该列是否允许为空。取值范围: y:允许。 n:不允许。对于主键约束和非空约束,该值为n。 column_id integer 创建表时列的序号。 default_length numeric 列的默认值字节长度,无默认值时为空。 data_default text 列的默认值。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的最小值。 high_value raw 列中的最大值。 density numeric 列密度。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图的桶数。 last_analyzed timestamp(0) without time zone 上次分析的日期。 sample_size numeric 用于分析此列的样本量。 character_set_name character varying(44) 暂不支持,值为NULL。 char_col_decl_length numeric 字符类型列的声明长度。 global_stats character varying(3) 暂不支持,值为NO。 user_stats character varying(3) 暂不支持,值为NO。 avg_col_len numeric 列的平均长度(单位字节)。 char_length numeric 列的长度(以字符计),只对varchar,nvarchar2,bpchar,char类型有效。 char_used character varying(1) 暂不支持,varchar、bpchar和char类型值为B,nvarchar2类型值为C,其余值为NULL。 v80_fmt_image character varying(3) 暂不支持,值为NULL。 data_upgraded character varying(3) 暂不支持,值为YES。 histogram character varying(15) 直方图是否存在以及存在的类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI_W IDT H:表示等宽直方图。 default_on_null character varying(3) 暂不支持,值为NULL。 identity_column character varying(3) 暂不支持,值为NULL。 sensitive_column character varying(3) 暂不支持,值为NULL。 evaluation_edition character varying(128) 暂不支持,值为NULL。 unusable_before character varying(128) 暂不支持,值为NULL。 unusable_beginning character varying(128) 暂不支持,值为NULL。 collation character varying(100) 列的排序规则。因该字段与保留关键字冲突,调用该字段需加视图名。 comments text 列的注释。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • ai_watchdog_ftask_status 表1 ai_watchdog_ftask_status参数 参数 类型 描述 name text 喂狗任务名。 timeout_threshold int 喂狗任务超时阈值。 register_time timestamp 喂狗任务注册时间。 thread_id bigint 该喂狗任务在哪一个线程ID上使用。 thread_name text 该喂狗任务在哪一个线程名上使用。 last_feed timestamp 喂狗任务最近一次喂狗时间,默认初始值等于register_time。 restart_count int 同一后台线程异常重复注册同一喂狗任务名的次数,该参数在任务调用取消注册喂狗任务接口后清零。 timeout_action text 注册任务时指定的超时处理动作。当前提供的处理动作如下: WATCHDOG_REPORT_WARNING:超时定位定界提示。 WATCHDOG_SEND_SIGTERM:向线程发送SIGTERM信号。 WATCHDOG_SEND_SIGUSR2:向线程发送SIGUSR2信号。 WATCHDOG_SEND_SIGQUIT:向线程发送SIGQUIT信号。 WATCHDOG_EXIT_PRO CES S:进程退出。 父主题: AI Watchdog
  • GS_SEG_DATAFILES GS_SEG_DATAFILES查看所有表空间的数据文件信息。只支持管理员权限用户查询。 表1 GS_SEG_DATAFILES字段 名称 类型 描述 node_name text 节点名称。 file_name text 数据文件名,例如,base/17467/2_fsm。 file_id integer 数据文件标识。取值范围:[1,5]的int4值。 bucketnode integer 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum integer 段对象的分支类型。取值范围: 0表示main fork。 1表示fsm fork。 2表示vm fork。 tablespace_name name 数据文件所属的表空间名称。 contents text 数据文件的存储内容。取值范围: permanent:永久。 unlogged:不记录日志。 temporary:全局临时。 temporary2:本地临时。 extent_size integer 数据文件的扩展大小。 meta_blocks bigint 数据文件已分配的元页面数。 data_blocks bigint 数据文件已分配的数据页面数。 total_blocks bigint 数据文件的总物理页面数。 high_water_mark bigint 数据文件使用页数的高水位线。 utilization real 使用的block数占总block数的百分比,即(data_blocks+meta_blocks)/total_blocks。 父主题: 段页式存储
  • 接口介绍 服务于ILM策略实施,实现ADO的后台调度以及各个限流参数的控制。 表1 DBE_ILM_ADMIN 接口名称 描述 CUSTOMIZE_ILM 根据输入参数定制ILM策略属性。 DISABLE_ILM 关闭后台调度。 ENABLE_ILM 开启后台调度。 当并发量较大时,执行DBE_ILM_ADMIN.DISABLE_ILM或DBE_ILM_ADMIN.ENABLE_ILM可能会提示资源繁忙,稍后重试即可。提示内容为“Resources are busy, please try again later.”。 DBE_ILM_ADMIN.CUSTOMIZE_ILM 根据输入参数定制ILM策略属性,原型为: 1 2 3 DBE_ILM_ADMIN.CUSTOMIZE_ILM( PA RAM IN NUMBER, VAL IN NUMBER); 表2 DBE_ILM_ADMIN.CUSTOMIZE_ILM接口参数说明 参数 描述 PARAM 参数序号。 VAL 参数取值。 由于兼容性影响,在B或M兼容模式下,若调用DBE_ILM_ADMIN.CUSTOMIZE_ILM()时传入的VAL值为非数字的字符,例如DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, '*'),会默认将传入的VAL值赋值为0。 表3 DBE_ILM_ADMIN.CUSTOMIZE_ILM接口参数范围 参数编号 参数值 描述 1 EXECUTION_INTERVAL ADO Task的执行频率,单位分钟,默认值15。取值范围为大于等于1小于等于2147483647的整数或浮点数,作用时向下取整。 2 RETENTION_TIME ADO相关历史的保留时长,单位天,默认值30。取值范围为大于等于1小于等于2147483647的整数或浮点数,作用时向下取整。 7 ENABLE 后台调度的状态。该参数不支持使用DBE_ILM_ADMIN.CUSTOMIZE_ILM修改,应使用DBE_ILM_ADMIN.DISABLE_ILM和DBE_ILM_ADMIN.ENABLE_ILM修改。 11 POLICY_TIME 控制ADO的条件单位是天还是秒,秒仅用来做测试用。取值为: 0: ILM_POLICY_IN_DAYS(默认值) 1:ILM_POLICY_IN_SECONDS 12 ABS_JOBLIMIT 控制一次ADO Task最多生成多少个ADO Job。取值范围为大于等于0小于等于2147483647的整数或浮点数,作用时向下取整。 13 JOB_SIZELIMIT 控制单个ADO Job可以处理的最大字节数,单位兆。取值范围为大于等于1小于等于2147483647的整数或浮点数,作用时向下取整。 14 WIND_DURATION 维护窗口持续时长,单位分钟,默认240分钟(4小时);取值范围为大于等于0小于1440(24小时)的整数。 15 BLOCK_LIMITS 控制实例级的行存压缩速率上限,默认是40;取值范围是0到10000(0表示不限制);单位是block/ms,表示每毫秒最多压缩多少个block。 16 ENABLE_META_COMPRESSION 是否开启header压缩,默认为0,取值范围为0(关闭)和1(开启)。 说明: 设置此参数为1时,对于单行数据较短的表,压缩率会有一定提升,但是访问压缩行的性能会有较大幅度的下降。若数据库多是单行数据较长的表,不建议开启此参数。 17 SAMPLE_MIN 常量编码和等值编码采样步长最小值,默认为10,取值范围[1, 100],支持小数输入,小数会自动向下取整。 18 SAMPLE_MAX 常量编码和等值编码采样步长最大值,默认为10,取值范围[1, 100],支持小数输入,小数会自动向下取整。 19 CONST_PRIO 常量编码优先级,默认为40,取值范围[0, 100],100表示关闭常量编码,支持小数输入,小数会自动向下取整。 20 CONST_THRESHOLD 常量编码阈值,默认为90,取值范围[1, 100],表示一列常量值的占比超过该阈值时进行常量编码,支持小数输入,小数会自动向下取整。 21 EQVALUE_PRIO 等值编码优先级,默认为60,取值范围[0, 100],100表示关闭等值编码,支持小数输入,小数会自动向下取整。 22 EQVALUE_THRESHOLD 等值编码阈值,默认为80,取值范围[1, 100],表示两列数据的等值比例超过该阈值时进行等值编码,支持小数输入,小数会自动向下取整。 23 ENABLE_DELTA_ENCODE_SWITCH 差值编码开关,默认为1,支持小数输入,0表示关闭,1表示开启,小数会自动向下取整。 24 LZ4_COMPRESSION_LEVEL lz4压缩等级,默认为0,取值范围[0, 16],支持小数输入,小数会自动向下取整。 25 ENABLE_LZ4_PARTIAL_DECOMPRESSION 部分解压开关,默认为1,支持小数输入,0表示关闭,1表示开启,小数会自动向下取整。 DBE_ILM_ADMIN.DISABLE_ILM 关闭后台调度,原型为: 1 gaussdb=# DBE_ILM_ADMIN.DISABLE_ILM(); DBE_ILM_ADMIN.ENABLE_ILM 开启后台调度,原型为: 1 gaussdb=# DBE_ILM_ADMIN.ENABLE_ILM(); 注意:后台调度生效需要先在数据库运维平台打开guc参数:enable_ilm。
  • 示例 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 gaussdb=# CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 15); customize_ilm --------------- (1 row) gaussdb=# select * from gs_adm_ilmparameters; name | value ----------------------------------+------- EXECUTION_INTERVAL | 15 RETENTION_TIME | 30 ENABLED | 1 POLICY_TIME | 0 ABS_JOBLIMIT | 10 JOB_SIZELIMIT | 1024 WIND_DURATION | 240 BLOCK_LIMITS | 40 ENABLE_META_COMPRESSION | 0 SAMPLE_MIN | 10 SAMPLE_MAX | 10 CONST_PRIO | 40 CONST_THRESHOLD | 90 EQVALUE_PRIO | 60 EQVALUE_THRESHOLD | 80 ENABLE_DELTA_ENCODE_SWITCH | 1 LZ4_COMPRESSION_LEVEL | 0 ENABLE_LZ4_PARTIAL_DECOMPRESSION | 1 (18 rows)
  • 常用方法 表1 LogicalCreateSlotBuilder常用方法 方法名 返回值类型 描述 throws withSlotName(String slotName) T 指定复制槽名。 - withOutputPlugin(String outputPlugin) ChainedLogicalCreateSlotBuilder 插件名称,当前支持mppdb_decoding、sql_decoding、parallel_binary_decoding、parallel_json_decoding、parallel_text_decoding。 mppdb_decoding:一种解码的输出格式,设置后输出内容为JSON格式。输出的结果包含相关数据的属性信息和属性对应的值。sql_decoding、parallel_binary_decoding、parallel_json_decoding、parallel_text_decoding等根据插件格式不同,分别输出sql格式、二进制格式、json格式和text格式。 - make() void 在数据库中创建具有指定参数的插槽。 SQLException self() ChainedLogicalCreateSlotBuilder 返回ChainedLogicalCreateSlotBuilder的实现。 - 本接口暂不支持计划外ALT特性。
  • 表级字符集和字符序 设置表的默认字符集和默认字符序,创建表操作请参见CREATE TABLE。 CREATE TABLE table_name (column_list) [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ] 修改表的默认字符集和默认字符序,修改不会影响表中当前已经存在的列,修改表操作请参见ALTER TABLE。 ALTER TABLE table_name [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ] 修改表的默认字符集和默认字符序为指定的值,同时将表中的所有字符类型的字段的字符集和字符序设置为指定的值,并将字段里的数据转换为新字符集编码。 ALTER TABLE table_name CONVERT TO CHARACTER SET | CHARSET charset [ COLLATE collation ] 参数说明 table_name 表名称。 default_charset 指定表的默认字符集,单独指定时会将表的默认字符序设置为指定的字符集的默认字符序。 default_collation 指定表的默认字符序,单独指定时会将表的默认字符集设置为指定的字符序对应的字符集。 GaussDB 通过以下方式选择表的字符集和字符序: 如果同时指定了default_charset 和default_collation,则使用字符集default_charset和字符序 default_collation,且default_charset和default_collation需要对应,不对应会产生报错。 如果仅指定了default_charset,则使用字符集default_charset及其默认字符序。 如果仅指定了default_collation,则使用default_collation字符序和其对应的字符集。 如果既不指定default_charset也不指定default_collation,则使用该表所在的模式的默认字符集和默认字符序作为表的默认字符集和表的默认字符序。 default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。 default_collation仅支持指定为B模式(即sql_compatibility = 'B')下的字符序,指定其他字符序报错。 如果表的默认字符序为binary,则表中未指定字符序的文本类型会转换为对应的二进制类型,且字符序设置为binary。 暂不支持设置表的默认字符集与数据库的server_encoding不同。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -- 仅设置字符集,字符序为字符集的默认字符序。 gaussdb=# CREATE TABLE test(c1 text) CHARSET utf8; -- 仅设置字符序,字符集为字符序关联的字符集。 gaussdb=# CREATE TABLE test(c1 text) COLLATE utf8_bin; -- 同时设置字符集与字符序,字符集和字符序需对应。 gaussdb=# CREATE TABLE test(c1 text) CHARSET utf8 COLLATE utf8_bin; -- 将表中字符类型字段的数据转化为utf8mb4编码,并设置表和字段的字符序为utf8mb4_bin。 gaussdb=# ALTER TABLE test CONVERT TO CHARSET utf8mb4 COLLATE utf8mb4_bin; -- 修改表的默认字符集为utf8mb4,默认字符序为utf8mb4_bin。 gaussdb=# ALTER TABLE test CHARSET utf8mb4 COLLATE utf8mb4_bin; 父主题: 字符集与字符序
  • 算子说明 Rownum算子会生成伪列,它返回一个数字,表示从查询中获取结果的行编号。第一行的Rownum为1。可以使用Rownum关键字对查询结果的行编号进行条件过滤。通常出现在Rownum子句里。 使用Rownum有一定的约束条件: Rownum不可作为别名,以免SQL语句出现歧义。 创建索引时不可使用Rownum。 创建表时默认值不可为Rownum。 Where子句中不可使用Rownum的别名。 在插入数据时不可使用Rownum。 在无表查询中不可以使用Rownum。 Rownum不能用于Limit子句。 Rownum不能用于EXECUTE语句的参数。 Upsert语句不支持Rownum用做Update子句更新。
  • 示例 CREATE PACKAGE示例 --创建测试表tbl_test。 gaussdb=# CREATE TABLE tbl_test(uid varchar(6) PRIMARY KEY, area_id varchar(5), level int); --创建包头。 gaussdb=# CREATE OR REPLACE PACKAGE pkg_test AS --公有存储过程可以被外部调用。 PROCEDURE proc_ist_tbl_test(v_uid in varchar, v_area_id varchar, v_level int); PROCEDURE proc_del_tbl_test(v_uid in varchar); PROCEDURE proc_upd_tbl_test(v_uid in varchar, v_area_id varchar, v_level int); END pkg_test; / --创建包体。 gaussdb=# CREATE OR REPLACE PACKAGE BODY pkg_test AS PROCEDURE proc_ist_tbl_test(v_uid in varchar, v_area_id varchar, v_level int) AS BEGIN INSERT INTO tbl_test VALUES (v_uid, v_area_id, v_level); END; PROCEDURE proc_del_tbl_test(v_uid in varchar) AS BEGIN DELETE FROM tbl_test WHERE uid = v_uid; END; PROCEDURE proc_upd_tbl_test(v_uid in varchar, v_area_id varchar, v_level int) AS BEGIN UPDATE tbl_test SET area_id = v_area_id, level = v_level WHERE uid = v_uid; END; var4 int := 10; --实例化开始。 BEGIN var4 := 10; dbe_output.print_line(var4); END pkg_test; / 调用PACKAGE示例 --使用CALL调用PACKAGE的存储过程。 gaussdb=# CALL pkg_test.proc_ist_tbl_test('0A00B1','01001',24); gaussdb=# SELECT * FROM tbl_test; uid | area_id | level --------+---------+--------- 0A00B1 | 01001 | 24 (1 row) --使用SELECT调用PACKAGE的存储过程。 gaussdb=# SELECT pkg_test.proc_upd_tbl_test('0A00B1','01001','26'); gaussdb=# SELECT * FROM tbl_test; uid | area_id | level --------+---------+------- 0A00B1 | 01001 | 26 (1 row) --匿名块调用PACKAGE的存储过程。 gaussdb=# BEGIN pkg_test.proc_del_tbl_test('0A00B1'); END; / gaussdb=# SELECT * FROM tbl_test; uid | area_id | level -----+---------+------- (0 rows) --删除。 gaussdb=# DROP TABLE tbl_test; gaussdb=# DROP PACKAGE pkg_test;
  • 注意事项 在package specification中声明过的函数或者存储过程,必须在package body中找到定义。 创建存储过程时,仅对CREATE的存储过程或PACKAGE本身加写锁,仅对执行过程中编译、执行会对函数和函数依赖的PACKAGE均加读锁。 在实例化中,无法调用带有commit/rollback的存储过程。 不能在Trigger中调用package函数。 不能在外部SQL中直接使用package当中的变量。 不允许在package外部调用package的私有变量和存储过程。 不支持存储过程不支持的用法,例如,在function中不允许调用commit/rollback,则package的function中同样无法调用commit/rollback。 不支持schema与package同名。 只支持A风格的存储过程和函数定义。 不支持package内有同名变量,包括包内同名参数。 package的全局变量为session级,不同session之间package的变量不共享。 package中调用自治事务的函数,不允许使用package中的cursor变量,以及不允许递归的使用package中cursor变量的函数。 package中不支持声明ref cursor变量。 package默认为SECURITY INVOKER权限,如果想将默认行为改为SECURITY DEFINER权限,需要设置GUC参数behavior_compat_options='plsql_security_definer'。 被授予CREATE ANY PACKAGE权限的用户,可以在public模式和用户模式下创建PACKAGE。 如果需要创建带有特殊字符的package名,特殊字符中不能含有空格,并且最好设置GUC参数behavior_compat_options="skip_insert_gs_source",否则可能引起报错。 package创建时依赖未定义对象,如参数enable_force_create_obj打开,创建可执行,通过WARNING提示;如参数未打开,package创建不可执行。 创建package函数时,其参数默认值支持含有package内变量,不支持跨package变量。 package中函数复杂调用,如:func(x).a,函数调用返回复合类型,支持跨schema调用,不支持通过database.schema.package.func(x).b的方式调用。 在创建package内的存储过程时,如果存储过程名称为schema.func或package.func形式,只会获取func的名称,schema声明或package声明无效,如果需要默认禁止这种行为,可以设置GUC参数behavior_compat_options='forbid_package_function_with_prefix'。 在创建PACKAGE内的存储过程时,如果存储过程的入参包含伪类型(如:anyelement),不支持调用时传入变长类型的参数。 package内创建的带参数游标,可以跨package进行类型引用(%RowType)和打开使用,有以下限制: 暂不支持通过database.schema.package.cursor的方式调用游标。 当游标定义为函数参数时,需要提前设置参数behavior_compat_options='allow_procedure_compile_check',以支持解析游标的具体类型。 当未设置参数behavior_compat_options='allow_procedure_compile_check'时,cursor%RowType处理成复合类型,即record。设置参数后,支持解析游标的具体类型。 在PACKAGE SPECIFICATION或PACKAGE BODY SPECIFICATION中声明自治事务PRAGMA AUTONOMOUS_TRANSACTION语法,可成功创建PACKAGE,但自治事务不生效。 仅初始用户可以对初始用户的PACKAGE进行REPLACE操作。
  • 语法格式 CREATE PACKAGE SPECIFICATION语法格式。 CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name [ invoker_rights_clause ] { IS | AS } item_list_1 END [ package_name ]; invoker_rights_clause可以被声明为AUTHID DEFINER或者AUTHID CURRENT_USER,分别为定义者权限和调用者权限。 item_list_1可以为声明的变量或者存储过程以及函数。 END后的package_name可省略(gs_dump生成的sql文件,PACKAGE定义会自动补上END后名称)。 PACKAGE SPECIFICATION(包头)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在PACKAGE SPECIFICATION中只能声明存储过程、函数,不能定义存储过程或者函数。 CREATE PACKAGE BODY语法格式。 CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name { IS | AS } declare_section [ initialize_section ] END [ package_name ]; END后的package_name可省略(gs_dump生成的sql文件,PACKAGE定义会自动补上END后名称)。 PACKAGE BODY(包体内)定义了包的私有变量、函数等。如果变量或者函数没有在PACKAGE SPECIFICATION中声明过,那么这个变量或者函数则为私有变量或者私有函数。 PACKAGE BODY也可以声明实例化部分,用来初始化package,详见示例。
  • CONFIG_SETTINGS CONFIG_SETTINGS视图显示数据库运行时参数的相关信息,如表1所示。 表1 CONFIG_SETTINGS字段 名称 类型 描述 name text 参数名称。 setting text 参数当前值。 unit text 参数的隐式结构。 category text 参数的逻辑组。 short_desc text 参数的简单描述。 extra_desc text 参数的详细描述。 context text 设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser和user。 vartype text 参数类型,包括bool、enum、integer、real和string。 source text 参数的赋值方式。 min_val text 参数最大值。如果参数类型不是数值型,那么该字段值为null。 max_val text 参数最小值。如果参数类型不是数值型,那么该字段值为null。 enumvals text[] enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。 boot_val text 数据库启动时参数默认值。 reset_val text 数据库重置时参数默认值。 sourcefile text 设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。 sourceline integer 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。 父主题: Configuration
  • GS_FILE_STAT GS_FILE_STAT视图通过对数据文件I/O的统计,反映数据的I/O性能,用以发现I/O操作异常等性能问题。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 GS_FILE_STAT字段 名称 类型 描述 filenum oid 文件标识。 dbid oid 数据库标识。 spcid oid 表空间标识。 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件块的数目。 phyblkwrt bigint 写物理文件块的数目。 readtim bigint 读文件的总时长,单位微秒。 writetim bigint 写文件的总时长,单位微秒。 avgiotim bigint 读写文件的平均时长,单位微秒。 lstiotim bigint 最后一次读文件时长,单位微秒。 miniotim bigint 读写文件的最小时长,单位微秒。 maxiowtm bigint 读写文件的最大时长,单位微秒。 父主题: 其他系统视图
  • ADM_SUBPART_COL_STATIS TICS ADM_SUBPART_COL_STATISTICS视图显示数据库中所有子分区的列统计信息和直方图信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_SUBPART_COL_STATISTICS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 subpartition_name character varying(128) 子分区名称。 column_name character varying(4000) 列名。 num_distinct numeric 暂不支持,值为NULL。 low_value raw 暂不支持,值为NULL。 high_value raw 暂不支持,值为NULL。 density numeric 暂不支持,值为NULL。 num_nulls numeric 暂不支持,值为NULL。 num_buckets numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp(0) without time zone 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(41) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 分区表
  • PGXC_COPY_ERROR_LOG PGXC_COPY_ERROR_LOG系统表用于捕捉COPY FROM过程的相关错误行,以便后续查阅。 开启三权分立(即enableSeparationOfDuty=on)时,使用者可以是数据库普通用户或管理员用户。使用前需要到各自的schema下创建pgxc_copy_error_log表,不需要再进行授权。 不开启三权分立(即enableSeparationOfDuty=off)时,使用者可以是数据库普通用户或管理员用户。当使用者为普通用户的时候,需要管理员用户对普通用户赋权。管理员账户可以直接使用。 表1 pgxc_copy_error_log字段说明 名称 类型 描述 relname character varying 表名称。以模式名.表名形式显示。 begintime timestamp with time zone 出现数据格式错误的时间。 filename character varying 出现数据格式错误的数据源文件名。 lineno bigint 在数据源文件中,出现数据格式错误的行号。 rawrecord text 在数据源文件中,出现数据格式错误的原始记录。 detail text 详细错误信息。 父主题: 其他系统表
  • global_syscache_threshold 参数说明:全局系统缓存占用内存的最大值,使用时需要打开enable_global_syscache参数。该参数可在PDB级别设置。 参数类型:整型 参数单位:kB 取值范围:16384 ~ 1073741824 默认值:163840(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存,32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存,4核CPU/32G内存);65536(4核CPU/16G内存)。在PDB场景内,若未设置该参数,则取默认值64MB。 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如,设置为163840,不带单位,表示163840kB;设置为160MB,带单位,表示160MB。取值如果要带单位,必须为kB、MB、GB。 设置建议:建议设置为热点DB个数和线程个数的最小值乘以每个DB分配的内存大小,即global_syscache_threshold = min(count(hot dbs),count(threads)) * memofdb。 热点DB数即访问较为频繁的数据库数量。线程数在线程池模式下取线程池线程个数和后台线程个数之和,非线程池模式不需要计算这个值,直接使用热点DB数。 memofdb即平均每个db应该分配的内存,每个DB的底噪内存是2M,平均每增加一个表或者索引,增加11k内存。 设置不当的风险与影响:如果设置的值过小,会导致内存频繁淘汰,内存存在大量碎片无法回收,导致内存控制失效。当在PDB级别设置该参数时,该参数不宜设置过大,否则会影响其他租户使用预留内存,建议按照规格设置。
  • enable_global_syscache 参数说明:控制是否使用全局系统缓存功能。多租数据库特性(enable_mtd)需要开启该参数。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启全局系统缓存功能。 off:表示不开启全局系统缓存功能。 默认值:on 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,开启全局系统缓存功能可以降低系统缓存内存占用,提高并发扩展能力。若打开该参数,需要结合使用global_syscache_threshold,此时推荐使用线程池模式。若打开该参数后需要访问备机,建议设置备机wal_level级别为hot_standby以上。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • gs_seg_get_datafiles(database_name NAME) 描述:输出查看实例所有数据文件信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 database_name NAME 数据库名称。默认为current_database(),代表当前数据库名称。 返回值说明: 名称 类型 描述 file_name TEXT 数据文件名。例如:base/17467/2_fsm。 file_id INTEGER 数据文件标识。取值范围:【1~5】号文件。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum INTEGER 数据文件分支类型。 tablespace_name NAME 数据文件所属的表空间名称。 contents TEXT 数据文件的存储内容。 取值范围: permanent:永久。 unlogged:不记录日志。 temporary:全局临时。 temporary2:本地临时。 extent_size INTEGER 数据文件的扩展大小。 meta_blocks BIGINT 数据文件的已分配的元页面数。 data_blocks BIGINT 数据文件的已分配的数据页面数。 total_blocks BIGINT 数据文件的总物理页面数。 high_water_mark BIGINT 数据文件使用页数的高水位线。 utilization REAL 使用的block数占总block数的百分比。即(data_blocks+meta_blocks)/total_blocks。 例如(下列操作需要在创建过段页式表后再执行): gaussdb=# SELECT * FROM gs_seg_get_datafiles(); file_name | file_id | bucketnode | forknum | tablespace_name | contents | extent_size | meta_blocks | data_blocks | total_blocks | high_water_mark | utilization --------------+---------+------------+---------+-----------------+-----------+-------------+-------------+-------------+--------------+-----------------+------------- base/15949/1 | 1 | 1024 | 0 | pg_default | permanent | 1 | 4157 | 1 | 16384 | 1048702976 | 2.24208e-44 base/15949/2 | 2 | 1024 | 0 | pg_default | permanent | 8 | 4157 | 8 | 16384 | 1048717312 | 2.24208e-44 (2 rows)
  • gs_seg_get_spc_extents(tablespace_name NAME, file_id INTEGER, bucketnode INTEGER, forknum INTEGER, skip_unused BOOLEAN DEFAULT TRUE) 描述:获取指定表空间所有扩展信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 tablespace_name NAME 表空间名称。 file_id INTEGER 数据文件标识。取值范围:[1,5]的int4值。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum INTEGER 数据文件分支。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 skip_unused BOOLEAN DEFAULT TRUE 是否只输出已分配的extent,默认为TRUE,代表只输出已分配的extent。 返回值说明: 名称 类型 描述 block_id BIGINT 数据扩展的起始页面号。 blocks INTEGER 数据扩展大小。 取值范围: 1表示1号文件。 8表示2号文件。 128表示3号文件。 1024表示4号文件。 4096表示5号文件。 contents TEXT 存储内容。 取值范围: permanent表示永久。 unlogged表示不记录日志。 temporary表示全局临时。 temporary2表示本地临时。 in_used TEXT 是否已分配。 取值范围: Y表示已分配。 N表示未分配。 mapblock_location TEXT 扩展在map block中的位置。格式:(page_id, offset)。 head_file_id INTEGER 段头所在数据文件标识。 head_block_id BIGINT 段头页面号。 usage_type TEXT Extent的使用类型。 取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 remain_flag TEXT 是否为shrink残留扩展。 取值范围: Y表示是shrink残留扩展。 N表示不是shrink残留扩展。 special_data INTEGER 扩展对应反向指针的特殊数据区。 ipblock_location TEXT 扩展反向指针位置。格式:(block_id, offset)。 例如: gaussdb=# SELECT * FROM gs_seg_get_spc_extents('pg_default', 1,1024, 0); block_id | blocks | contents | in_used | mapblock_location | head_file_id | head_block_id | usage_type | remain_flag | special_data | ipblock_location ----------+--------+-----------+---------+-------------------+--------------+---------------+--------------+-------------+--------------+------------------ 4157 | 1 | permanent | Y | (4157,0) | 1 | 4157 | segment head | N | 0 | (67,0) 4158 | 1 | permanent | Y | (4157,1) | 1 | 4158 | fork head | N | 1 | (67,1) (2 rows)
  • gs_seg_free_spc_remain_segment(tablespace_name NAME, head_file_id INTEGER, bucketnode INTEGER, head_block_id BIGINT) 描述:释放指定表空间上的段页式残留段在1号文件上占用的页面。残留段可以在GS_SEG_SPC_REMAIN_SEGMENTS视图中查询。只支持管理员权限用户查询。且仅允许在主机执行。 当前该函数存在缺陷,计划在后续版本重构,以彻底解决段页式残留问题,该函数为离线兜底的段页式清理手段。 为保证查询到的残留段和残留扩展的一致性,以及残留清理的一致性,该函数及GS_SEG_SPC_REMAIN_SEGMENTS视图应在DDL\DML受限状态下执行。鉴于当前版本并未提供DML\DDL受限能力,用户在是使用该特性时,应保证其执行环境DML\DDL受限状态。 该函数需要在参数enable_segment_remain_cleanup取值为off时使用。 参数说明: 名称 类型 描述 tablespace_name NAME 表空间名称。 head_file_id INTEGER 段页式残留段的段头所在的数据文件标识。取值范围:【1】。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 head_block_id BIGINT 指定的段头页面号。 返回值说明:void 例如: gaussdb=# SELECT * FROM gs_seg_free_spc_remain_segment('pg_default', 1, 1024, 4159); gs_seg_free_spc_remain_segment -------------------------------- (1 row)
  • gs_seg_free_spc_remain_extent(tablespace_name NAME, file_id INTEGER, bucketnode INTEGER, forknum INTEGER, block_id BIGINT) 描述:释放指定表空间上残留的段页式孤立扩展。残留的孤立扩展可以在GS_SEG_SPC_REMAIN_EXTENTS视图中查询。该函数也可以清理GS_SEG_SPC_REMAIN_SEGMENTS视图中查询得到的segment的segment head,但是该动作会导致被清理的segment head所在的segment中其他的extent(fork head、level1 page、data extent等)在GS_SEG_SPC_REMAIN_EXTENTS视图暴露出来。只支持管理员权限用户查询。且仅允许在主机执行。 当前该函数存在缺陷,计划在后续版本重构,以彻底解决段页式残留问题,该函数为离线兜底的段页式清理手段。 为保证查询到的残留段和残留扩展的一致性,以及残留清理的一致性,该函数及GS_SEG_SPC_REMAIN_EXTENTS视图应在DDL\DML受限状态下执行。鉴于当前版本并未提供DML\DDL受限能力,用户在是使用该特性时,应保证其执行环境DML\DDL受限状态。 该函数需要在参数enable_segment_remain_cleanup取值为off时使用。 参数说明: 名称 类型 描述 tablespace_name NAME 表空间名称。 file_id INTEGER 段页式残留扩展所在数据文件标识。取值范围:【1~5】号文件。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum INTEGER 数据文件分支编号。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 block_id BIGINT 指定的段头页面号。 返回值说明:void 例如: gaussdb=# SELECT * FROM gs_seg_free_spc_remain_extent('pg_default', 1, 1024, 0, 4159); gs_seg_free_spc_remain_extent ------------------------------- (1 row)
  • gs_seg_get_segment(relid OID, bucketnode INTEGER, partition BOOLEAN DEFAULT FALSE,forknum INTEGER DEFAULT 0) 描述:给定relid,bucketnode等信息输出对应的段头信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 relid OID 表对应的OID。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 partition BOOLEAN DEFAULT FALSE 段对象是否为分区,默认为false。 取值范围:bool,代表所传入的oid对应的对象是否为分区。 forknum INTEGER DEFAULT 0 数据文件fork号,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值说明: 名称 类型 描述 blocks BIGINT 段对象的逻辑页面数。 total_blocks BIGINT 段对象的物理页面数。 extents INTEGER 段对象的逻辑扩展数。 total_extents INTEGER 段对象的物理扩展数。 head_lsn TEXT 段头lsn标识。 level0_slots BIGINT[] 段扩展映射level0槽位数组。 level1_slots BIGINT[] 段扩展映射level1槽位数组。 fork_head BIGINT[] 段对象的分支段头数组。 例如(下列操作中relid必须是合法的段页式对象的oid): gaussdb=# SELECT * FROM gs_seg_get_segment(16768, 1024); blocks | total_blocks | extents | total_extents | head_lsn | level0_slots | level1_slots | fork_head --------+--------------+---------+---------------+----------+--------------+--------------+---------------- 9 | 16 | 2 | 2 | 62211744 | {4157,4165} | {} | {4157,4158,4294967295} (1 row)
  • gs_seg_get_extents(tablespace_name NAME, bucketnode INTEGER, head_block_id BIGINT) 描述:输出该表空间下段头文件里段头页面的段对象的所有扩展,包含1号文件中的segment head、fork head、level1 page,2~5号文件中的data extent。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 tablespace_name NAME 段对象所属的表空间。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 head_block_id BIGINT 段头页面号。 返回值说明: 名称 类型 描述 extent_id INTEGER 逻辑扩展号。 file_id INTEGER 扩展所在的数据文件标识。取值范围:[1,5]的int4值。 forknum INTEGER 段对象的分支。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 block_id BIGINT 扩展所在的数据文件中的起始页面号。 blocks INTEGER 扩展大小。 取值范围: 1表示1号文件。 8表示2号文件。 128表示3号文件。 1024表示4号文件。 4096表示5号文件。 usage_type TEXT Extent的使用类型。 取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 例如(下列操作需要在表空间下创建过段页式普通表后再执行): gaussdb=# SELECT * FROM gs_seg_get_extents('pg_default', 1024, 4157); extent_id | file_id | forknum | block_id | blocks | usage_type -----------+---------+---------+----------+--------+-------------- | 1 | 0 | 4157 | 1 | segment head 0 | 2 | 0 | 4157 | 8 | data extent 1 | 2 | 0 | 4165 | 8 | data extent (3 rows)
  • gs_seg_get_extents(relid OID, bucketnode INTEGER, partition BOOLEAN DEFAULT FALSE,forknum INTEGER DEFAULT 0) 描述:输出对应段头文件里段头页面的段对象的所有扩展,包含1号文件中的segment head、fork head、level1 page,2~5号文件中的data extent。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 relid OID 表对应的OID。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 partition BOOLEAN DEFAULT FALSE 段对象是否为分区,默认为false。 取值范围:bool,代表所传入的oid对应的对象是否为分区。 forknum INTEGER DEFAULT 0 数据文件fork号,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值说明: 名称 类型 描述 extent_id INTEGER 逻辑扩展号。 file_id INTEGER 扩展所在的数据文件标识。取值范围:[1,5]的int4值。 forknum INTEGER 段对象的分支。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 block_id BIGINT 扩展所在的数据文件中的起始页面号。 blocks INTEGER 扩展大小。 取值范围: 1表示1号文件。 8表示2号文件。 128表示3号文件。 1024表示4号文件。 4096表示5号文件。 usage_type TEXT Extent的使用类型。 取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 例如(下列操作中relid必须是合法的段页式对象的oid): gaussdb=# SELECT * FROM gs_seg_get_extents(16768, 1024); extent_id | file_id | forknum | block_id | blocks | usage_type -----------+---------+---------+----------+--------+-------------- | 1 | 0 | 4157 | 1 | segment head 0 | 2 | 0 | 4157 | 8 | data extent 1 | 2 | 0 | 4165 | 8 | data extent (3 rows)
共100000条