华为云用户手册

  • Database设计建议 在实际业务中,根据需要创建新的Database,不建议直接使用数据库实例默认的postgres数据库。 一个数据库实例内,用户自定义的Database数量推荐值为3个,不建议超过10个。用户自定义的Database数量过多会导致升级、备份等运维操作的效率降低。 为了适应全球化的需求,使数据库编码能够存储与表示绝大多数的字符,建议创建Database的时候使用UTF8编码。 创建Database时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。 GaussDB 支持A、B、C、PG和M五种兼容模式,分别表示兼容O语法、MY语法、TD语法、POSTGRES和M-Compatibility语法。不同兼容模式下的语法存在一定差异,默认为A兼容模式。 Database的owner默认拥有该Database下所有对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。
  • 总结 智能修正模式与严格校验模式可以结合使用,且智能修正模式具有优先级。在进行COPY导入时,若已明确指定对数据异常采用智能修正,那么该行数据的处理将不会触发严格校验模式。这意味着错误表不会记录相应数据,同时也不会扣除reject limit次数。建议用户根据自身实际情况,权衡是否自动修正列异常与字符异常后入库,还是直接舍弃。 对于严格校验模式的两个级别,推荐用户默认选择Level1。这是因为Level1所支持的错误类型较为常见,并且不会对导入性能产生任何影响。而Level2目前仅在集中式A兼容环境下支持,开启该特性会额外消耗导入性能和内存资源。具体信息请参见COPY支持约束冲突容错能力。因此,不建议用户默认使用Level2,仅在明确数据存在约束类型冲突时再开启。
  • GS_ LOG ICAL_TYPE GS_LOGICAL_TYPE系统表存储数据类型的相关信息。 表1 GS_LOGICAL_TYPE字段 字段名称 字段类型 说明 typname name 类型名称。 typnamespace oid 包含此类型的命名空间的OID。 typlen smallint 该类型值所使用的字节数。 typbyval boolean 该类型的值是按值还是按引用传递。 typtype "char" 表示表的行类型。 typisdefined boolean 表示类型是否被完全定义。 typreceive regproc 二进制格式的接收函数。 typsend regproc 发送函数。 typmodin regproc 用于可选类型修饰符的输入函数。 typmodout regproc 输出函数。 typid oid 类型的OID。 dbnode oid 数据库OID。 originid integer 元组的来源标识符。 createtime timestamp with time zone 插入元组的时间戳。 csnmin bigint 插入元组时的 CS N(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 typstorage "char" 指定字段的数据存储方式,具体包含以下几个类型: p:普通存储(plain)。数值总是以简单方式存储。 e:外部存储(external)。数据实际存储在主表以外的地方(如TOAST表),主表存储的是指向该外部存储数据的引用。 m:主体存储(main)。该方式与“普通存储”类似,可以以内联的压缩方式存储。通常用于存储需要自定义存储方式的类型,如自定义的复合类型。 x:扩展存储(extended)。值可以被压缩和/或移动到一个二级关系表中。 x一般是TOAST类型存储的方式。 typelem oid 如果typelem不为零,那么它表示gs_logical_type表中的另一行,该行定义了通过下标获取的类型(如数组)。如果typsubscript为零,则typelem应该为零。如果处理程序不需要typelem来确定下标类型,那么当typsubscript不为零时typelem也可以为零。请注意,typelem依赖关系表示了该类型中元素类型物理上的约束;因此,DDL修改类型时可能会因这种类型的存在而受到限制。 typinput regproc 输入转换函数(文本格式)。 typoutput regproc 输出转换函数(文本格式)。 typrelid oid 如果是复合类型(请参见typtype),则这个字段指向GS_LOGICAL_CLASS中定义该表的行。对于复合类型,GS_LOGICAL_CLASS的类型不是一个表。对于非复合类型,该字段为零。 父主题: 逻辑解码
  • 扩展语法 GaussDB提供的扩展语法如下。 表1 扩展SQL语法 类别 语法关键字 描述 创建表CREATE TABLE column_constraint: REFEREN CES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ][ ON DELETE action ] [ ON UPDATE action ] 支持用REFERENCES reftable[ ( refcolumn ) ] [ MATCH FULL |MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] 为表创建外键约束。 加载模块 CREATE EXTENSION 把一个新的模块加载进当前数据库中。该特性为内部使用,不建议用户使用。 DROP EXTENSION 删除已加载的模块。该特性为内部使用,不建议用户使用。 聚集函数 CREATE AGGREGATE 定义一个新的聚集函数。 ALTER AGGREGATE 修改一个聚集函数的定义。 DROP AGGREGATE 删除一个现存的聚集函数。 父主题: 附录
  • PG_INDEX PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。 表1 PG_INDEX字段 名称 类型 描述 indexrelid oid 这个索引在12.2.15.28 PG_CLASS里的记录的OID。 indrelid oid 使用这个索引的表在12.2.15.28 PG_CLASS里的记录的OID。 indnatts smallint 索引中的字段数目。 indisunique boolean 是否为唯一索引。 true:是唯一索引。 false:不是唯一索引。 indisprimary boolean 该索引是否为该表的主键。 true:该索引是该表的主键。这个字段为真的时候indisunique总是为真。 false:该索引不是该表的主键。 indisexclusion boolean 该索引是否支持排他约束。 true:该索引支持排他约束。 false:该索引不支持排他约束。 indimmediate boolean 插入数据时是否进行唯一性检查。 true:在插入数据时会立即进行唯一性检查。 false:在插入数据时不会进行唯一性检查。 indisclustered boolean 该表是否在这个索引上建簇。 true:该表在这个索引上建簇。 false:该表没有在这个索引上建簇。 indisusable boolean 该索引对insert/select是否可用。 true:该索引对insert/select可用。 false:该索引对insert/select不可用。 indisvalid boolean true:该索引可以用于查询。 false:该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,不过不能安全的用于查询。如果是唯一索引,则唯一属性也将不为真。 indcheckxmin boolean true:查询不能使用索引,直到pg_index此行的xmin低于其快照的TransactionXmin,因为该表可能包含它们能看到的不兼容行断开的HOT链。 false:查询可以用索引。 indisready boolean true:此索引对插入数据是可用的。 false:在插入或修改数据时忽略此索引。 indkey int2vector 这是一个包含indnatts值的数组,这些数组值表示这个索引所建立的表字段。比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键字。这个数组里的零表明对应的索引属性是在这个表字段上的一个表达式,而不是一个简单的字段引用。 indcollation oidvector 索引各列对应的排序规则的OID,详情请参考PG_COLLATION。 indclass oidvector 对于索引键字里面的每个字段,这个字段都包含一个指向所使用的操作符类的OID,详情请参考12.2.15.53 PG_OPCLASS。 indoption int2vector 存储列前标识位,该标识位是由索引的访问方法定义。 indexprs pg_node_tree 表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与indkey中的零值个数相同。如果所有索引属性都是简单的引用,则为空。 indpred pg_node_tree 部分索引断言的表达式树(以nodeToString()的形式表现)。如果不是部分索引,则是空字符串。 indisreplident boolean 此索引的列是否为逻辑解码的解码列。 true:此索引的列成为逻辑解码的解码列。 false:此索引的列不是逻辑解码的解码列。 indnkeyatts smallint 索引中的总字段数,超出indnatts的部分不参与索引查询。 indcctmpid oid Ustore在线创建索引时临时表OID。 indisvisible boolean true:此索引状态为可见,即优化器可以使用此索引。 false:此索引状态为不可见,此时若enable_invisible_indexes参数为off,则优化器不可以使用此索引;若enable_invisible_indexes参数为on,则优化器可以使用此索引。 父主题: 其他系统表
  • 语法格式 修改已存在行访问控制策略的名称。 1 ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name RENAME TO new_policy_name; 修改已存在行访问控制策略的指定用户、策略表达式。 1 2 3 ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name [ TO { role_name | PUBLIC } [, ...] ] [ USING ( using_expression ) ];
  • OPERATOR_HISTORY_TABLE OPERATOR_HISTORY_TABLE系统视图显示执行作业结束后的算子相关的记录,如表1所示。此数据是从内核中转储到视图中的数据。 表1 OPERATOR_HISTORY_TABLE的字段 名称 类型 描述 queryid bigint 语句执行使用的内部query_id。 pid bigint 后端线程id。 plan_node_id integer 查询对应的执行计划的plan node id。 plan_node_name text 对应于plan_node_id的算子的名称。 start_time timestamp with time zone 该算子处理第一条数据的开始时间。 duration bigint 该算子到结束时候总的执行时间(ms)。 query_dop integer 当前算子执行时的并行度。 estimated_rows bigint 优化器估算的行数信息。 tuple_processed bigint 当前算子返回的元素个数。 min_peak_memory integer 当前算子在数据库节点上的最小内存峰值(MB)。 max_peak_memory integer 当前算子在数据库节点上的最大内存峰值(MB)。 average_peak_memory integer 当前算子在数据库节点上的平均内存峰值(MB)。 memory_skew_percent integer 当前算子在数据库节点间的内存使用倾斜率。 min_spill_size integer 若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。 max_spill_size integer 若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。 average_spill_size integer 若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,数据库节点间下盘倾斜率。 min_cpu_time bigint 该算子在数据库节点上的最小执行时间(ms)。 max_cpu_time bigint 该算子在数据库节点上的最大执行时间(ms)。 total_cpu_time bigint 该算子在数据库节点上的总执行时间(ms)。 cpu_skew_percent integer 数据库节点间执行时间的倾斜率。 warning text 主要显示如下几类告警信息: Sort/SetOp/HashAgg/HashJoin spill 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 父主题: Operator
  • ADM_TAB_COLS ADM_TAB_COLS视图显示表和视图列的相关信息。数据库中每个表和视图的每一个字段在ADM_TAB_COLS里有一行对应的数据。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。该视图与ADM_TAB_COLUMNS视图显示行数相同,仅存在字段差异。 表1 ADM_TAB_COLS字段 名称 类型 描述 owner character varying(64) 表或视图的所有者。 table_name character varying(128) 表或视图的名称。 column_name character varying(128) 列名。 data_type character varying(128) 列的数据类型,可以是用户自定义的数据类型。 data_type_mod character varying(3) 暂不支持,值为NULL。 data_type_owner character varying(128) 列的数据类型的所有者。 data_length numeric 列的字节长度。 data_precision numeric 数据类型的精度,对于numeric数据类型有效,其他类型为NULL。 data_scale numeric 小数点右边的位数,对于numeric数据类型有效,其他类型为0。 nullable character varying(1) 该列是否允许为空,对于主键约束和非空约束,该值为n。 column_id numeric 创建表时列的序号。 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。 hidden_column character varying(3) 暂不支持,值为NULL。 virtual_column character varying 表示列是否为虚拟列(即生成列): YES:表示是。 NO:表示不是。 segment_column_id numeric 暂不支持,值为NULL。 internal_column_id numeric 列的内部序列号,内容同COLUMN_ID。 histogram character varying(15) 直方图是否存在以及存在的类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI_W IDT H:表示等宽直方图。 qualified_col_name character varying(64) 限定列名,同COLUMN_NAME。 user_generated character varying(3) 暂不支持,值为YES。 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) 列的排序规则。因该字段与保留关键字冲突,调用该字段需加视图名。 collated_column_id numeric 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • PG_GTT_STATS PG_GTT_STATS视图可用来查看当前会话所有全局临时表的单列统计信息,调用pg_get_gtt_statistics()函数。 表1 PG_GTT_STATS字段 名称 类型 描述 schemaname name schema名称。 tablename name 全局临时表名称。 attname name 属性名称。 inherited boolean 是否统计有继承关系的对象。 null_frac real 该字段中为NULL的记录的比率。 avg_width integer 非NULL记录的平均存储宽度,以字节计算。 n_distinct real 标识全局统计信息中字段里唯一的非NULL数据值的数目。 most_common_vals text[] 高频值列表,按照出现的频率排序。 most_common_freqs real[] 高频值的频率。 histogram_bounds text[] 等频直方图描述列中的数据分布(不包含高频值)。 correlation real 相关系数。 most_common_elems text[] 类型高频值列表,用于数组类型或一些其他类型。 most_common_elem_freqs real[] 类型高频值的频率。 elem_count_histogram real[] 数组类型直方图。 父主题: 其他系统视图
  • 关闭连接 libpq通常使用PQfinish函数来关闭与数据库的连接。如果您的应用程序建立了多个连接,则需要确保每个连接都被正确关闭。 示例如下(完整示例请参考数据库建连、执行SQL并返回结果): /* 关闭入口 ... 不用检查错误 ... */ res = PQexec(conn, "CLOSE myportal"); PQclear(res); /* 结束事务 */ res = PQexec(conn, "END"); PQclear(res); /* 关闭数据库连接并清理 */ PQfinish(conn); 父主题: 开发步骤
  • GaussDB支持动态内存管理吗? 答:支持。动态内存使用方法均基于内存上下文管理,在内存上下文的机制上,引入了逻辑内存管理机制,同时提供多项视图追踪内存使用情况。当前GaussDB Kernel的内存管理分为两级,分别是: 内存节点级别控制:通过max_process_memory参数限制DN上可以使用的内存上限。 内存作业级别控制:限制单条query语句最大可使用的内存上限。 父主题: FAQ
  • GLOBAL_REDO_STATUS GLOBAL_REDO_STATUS视图显示数据库实例的日志回放情况,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时返回空列表。 表1 GLOBAL_REDO_STATUS字段 名称 类型 描述 node_name text 节点名称。 redo_start_ptr bigint 当前实例日志回放的起始点。 redo_start_time bigint 当前实例日志回放的起始UTC时间。 redo_done_time bigint 当前实例日志回放的结束UTC时间。 curr_time bigint 当前实例的当前UTC时间。 min_recovery_point bigint 当前实例日志的完成回放后可对外提供服务的最小一致性点。 read_ptr bigint 当前实例日志的读取位置。 last_replayed_read_ptr bigint 当前实例的日志回放位置。 recovery_done_ptr bigint 当前实例启动完成时的回放位置。 read_xlog_io_counter bigint 当前实例读取回放日志的I/O次数计数。 read_xlog_io_total_dur bigint 当前实例读取回放日志的I/O总用时。 read_data_io_counter bigint 当前实例日志回放过程中,读取数据页面的I/O次数计数。 read_data_io_total_dur bigint 当前实例日志回放过程中,读取数据页面的I/O总用时。 write_data_io_counter bigint 当前实例日志回放过程中,写数据页面的I/O次数计数。 write_data_io_total_dur bigint 当前实例日志回放过程中,写数据页面的I/O总用时。 process_pending_counter bigint 当前实例日志回放过程中,日志分发线程的同步次数计数。 process_pending_total_dur bigint 当前实例日志回放过程中,日志分发线程的同步总用时。 apply_counter bigint 当前实例日志回放过程中,回放线程的同步次数计数。 apply_total_dur bigint 当前实例日志回放过程中,回放线程的同步总用时。 speed bigint 当前实例日志回放速率,每回放256MB日志该值更新一次,单位byte/s。 建议使用cm_ctl query -rv命令来获取更精确的备机回放速度(cm_ctl命令请参考《工具参考》中“统一数据库管理工具”章节)。 local_max_ptr bigint 当前实例启动成功后本地收到的回放日志的最大值。 primary_flush_ptr bigint 主机落盘日志的位置。 worker_info text 当前实例回放线程信息,若没有开并行回放则该值为空。 父主题: Utility
  • 语法格式 CREATE MODEL model_name USING architecture_name FEATURES { {attribute_list} } [TARGET attribute_name], FROM ([schema.]table_name | subquery) [WITH ([hyper_parameter_name = {hp_value | DEFAULT},]...)];
  • 示例 --创建数据表。 gaussdb=# CREATE TABLE houses ( id INTEGER, tax INTEGER, bedroom INTEGER, bath DOUBLE PRECISION, price INTEGER, size INTEGER, lot INTEGER, mark text ); --插入训练数据。 gaussdb=# INSERT INTO houses(id, tax, bedroom, bath, price, size, lot, mark) VALUES (1,590,2,1,50000,770,22100,'a+'), (2,1050,3,2,85000,1410,12000,'a+'), (3,20,2,1,22500,1060,3500,'a-'), (4,870,2,2,90000,1300,17500,'a+'), (5,1320,3,2,133000,1500,30000,'a+'), (6,1350,2,1,90500,850,25700,'a-'), (7,2790,3,2.5,260000,2130,25000,'a+'), (8,680,2,1,142500,1170,22000,'a-'), (9,1840,3,2,160000,1500,19000,'a+'), (10,3680,4,2,240000,2790,20000,'a-'), (11,1660,3,1,87000,1030,17500,'a+'), (12,1620,3,2,118500,1250,20000,'a-'), (13,3100,3,2,140000,1760,38000,'a+'), (14,2090,2,3,148000,1550,14000,'a-'), (15,650,3,1.5,65000,1450,12000,'a-'); --训练模型。 gaussdb=# CREATE MODEL price_model USING logistic_regression FEATURES size, lot TARGET mark FROM HOUSES WITH learning_rate=0.88, max_iterations=default; --删除模型。 gaussdb=# DROP MODEL price_model; --删除表。 gaussdb=# DROP TABLE houses;
  • 示例 -- 创建包头包体。 CREATE OR REPLACE PACKAGE pkg_1 AS var1 int; var2 int; PROCEDURE proc1; END pkg_1; / CREATE PACKAGE CREATE OR REPLACE PACKAGE BODY pkg_1 AS PROCEDURE proc1 AS BEGIN var1 := var1 + var2; END; END pkg_1; / CREATE PACKAGE BODY -- 重新创建包头。 CREATE OR REPLACE PACKAGE pkg_1 AS var1 int; var2 int; var3 int; PROCEDURE proc1; END pkg_1; / CREATE PACKAGE -- 查询状态,包体定义未被删除。 SELECT * FROM gs_package WHERE pkgname='pkg_1'; pkgnamespace | pkgowner | pkgname | pkgspecsrc | pkgbodydeclsrc | pkgbodyinitsrc | pkgacl | pkgsecdef --------------+----------+---------+--------------------+----------------------+----------------+--------+----------- 2200 | 10 | pkg_1 | PACKAGE DECLARE +| PACKAGE DECLARE +| | | f | | | var1 int; +| procedure proc1 as +| | | | | | var2 int; +| begin +| | | | | | var3 int; +| var1 := var1 + var2;+| | | | | | procedure proc1; +| end; +| | | | | | end | end | | | (1 row) -- 包体对象被置为无效。 SELECT * FROM pg_object WHERE object_oid = (SELECT oid FROM gs_package WHERE pkgname='pkg_1'); object_oid | object_type | creator | ctime | mtime | createcsn | changecsn | valid ------------+-------------+---------+-------------------------------+-------------------------------+-----------+-----------+------- 171138 | B | 10 | 2024-12-31 16:50:29.923577+08 | 2025-01-17 15:56:42.271533+08 | | 183936 | f 171138 | S | 10 | 2024-12-24 16:09:29.527485+08 | 2025-01-17 15:56:42.271533+08 | | 183936 | t (2 rows) -- 删除已创建的对象。 DROP PACKAGE pkg_1; NOTICE: drop cascades to function public.proc1() DROP PACKAGE -- 包头包体定义被删除。 SELECT * FROM gs_package WHERE pkgname='pkg_1'; pkgnamespace | pkgowner | pkgname | pkgspecsrc | pkgbodydeclsrc | pkgbodyinitsrc | pkgacl | pkgsecdef --------------+----------+---------+------------+----------------+----------------+--------+----------- (0 rows) SELECT * FROM pg_object WHERE object_oid = (SELECT oid FROM gs_package WHERE pkgname='pkg_1'); object_oid | object_type | creator | ctime | mtime | createcsn | changecsn | valid ------------+-------------+---------+-------+-------+-----------+-----------+------- (0 rows)
  • 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 SQL_NO_DATA:表示SQL语句不返回结果集。
  • 问题规避 如果发现AUTOVACUUM清理死行过慢,跟不上业务死行生成的速度,导致死行持续堆积,则需要人工介入处理,具体策略如下: 调整AUTOVACUUM参数:在系统I/O资源充足的情况下,可以通过减小autovacuum_vacuum_cost_delay来加快VACUUM的清理速度。该参数默认值为20ms,即扫描约20-50个页面时会触发一次强制睡眠,每次睡眠时间为20ms。建议将该参数调整为1ms,以极大地提高后台线程的清理效率。 手动执行VACUUM:如果调整参数后仍无法立即回收死行,可以通过视图获取死行较多的数据表,并对这些表进行手动VACUUM。手动VACUUM不使用I/O管控,会以最大效率清理死行,从而快速减少死行数量。
  • pg_get_triggerdef(oid, boolean) 描述:获取触发器的定义信息。 参数:待查触发器的OID及是否以pretty方式展示。 仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。 返回值类型:text 示例: --查看表tri_insert的触发器定义信息,以非pretty形式。 gaussdb=# SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef -------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE trigger_func('after_ins_when') (2 rows) --查看表tri_insert的触发器定义信息,以pretty形式。 gaussdb=# SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef ------------------------------------------------------------------------------------------------------------------------------------------------------ CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE trigger_func('after_ins_when') (2 rows) --清理表tri_insert。 gaussdb=# DROP TABLE tri_insert CASCADE; DROP TABLE --清理函数trigger_func。 gaussdb=# DROP FUNCTION trigger_func; DROP FUNCTION
  • pg_get_triggerdef(oid) 描述:获取触发器的定义信息。 参数:待查触发器的OID。 返回值类型:text 示例: --创建表tri_insert。 gaussdb=# CREATE TABLE tri_insert (a int, b int); CREATE TABLE --创建函数trigger_func。 gaussdb=# CREATE FUNCTION trigger_func() RETURNS trigger LANGUAGE plpgsql AS ' gaussdb'# BEGIN gaussdb'# RAISE NOTICE ''trigger_func(%) called: action = %, when = %, level = %'', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL; gaussdb'# RETURN NULL; gaussdb'# END;'; CREATE FUNCTION --创建触发器before_ins_stmt_trig。 gaussdb=# CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert gaussdb-# FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt'); CREATE TRIGGER --创建触发器after_ins_when_trig。 gaussdb=# CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert gaussdb-# FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE trigger_func('after_ins_when'); CREATE TRIGGER --查看表tri_insert的触发器定义信息。 gaussdb=# SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef -------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE trigger_func('after_ins_when') (2 rows)
  • MY_TAB_SUBPARTITIONS MY_TAB_SUBPARTITIONS视图显示当前用户可访问的所有子分区表信息。该视图所有用户可访问,仅可查看当前用户所属信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TAB_SUBPARTITIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 schema character varying(64) 模式名称。 table_name character varying(64) 表名。 partition_name character varying(64) 分区名称。 subpartition_name character varying(64) 子分区名称。 high_value text 子分区边界值表达式。 high_value_length integer 子分区边界值表达式的长度。 partition_position numeric 分区在表内的位置。 subpartition_position numeric 子分区在分区中的位置。 tablespace_name name 子分区所在的表空间名称。 pct_free numeric 块中最小可用空间百分比。 pct_used numeric 暂不支持,值为NULL。 ini_trans numeric 初始事务数。 max_trans numeric 最大事务数。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 是否记录对表的更改: YES NO compression character varying(8) 子分区是否压缩。取值范围:ENABLED、DISABLED。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此表的日期。数据库重启后,数据会丢失。 buffer_pool character varying(7) 子分区的缓冲池: DEFAULT KEEP RECYCLE NULL flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 interval character varying(3) 分区是在间隔分区表的间隔节中(YES),还是在范围节中(NO)。 segment_created character varying(3) 表子分区段是否已创建: YES:已创建。 NO:未创建。 N/A:此表没有子分区。 indexing character varying(3) 暂不支持,值为NULL。 read_only character varying(5) 暂不支持,值为NULL。 inmemory character varying(8) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(1000) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 父主题: 分区表
  • GS_MODEL_WAREHOUSE GS_MODEL_WAREHOUSE系统表用于存储AI引擎训练模型,其中包含模型,训练过程的详细描述。 表1 GS_MODEL_WAREHOUSE字段 名称 数据类型 描述 oid oid 隐含列。 modelname name 唯一约束。 modelowner oid 模型拥有者的OID。 createtime timestamp without time zone 模型创建的时间。 processedtuples integer 训练涉及的元组数。 discardedtuples integer 未参加训练的不合格元组数。 preprocesstime real 数据预处理时长。 exectime real 训练时长。 iterations integer 迭代轮次。 outputtype oid 模型输出的数据类型OID。 modeltype text AI算子的类型名称。 query text 创建模型所执行的query语句。 modeldata bytea 保存的二进制模型信息。 weight real[] 目前只适用于GD算子模型。 hyperparametersnames text[] 涉及的超参名称。 hyperparametersvalues text[] 超参所对应的取值。 hyperparametersoids oid[] 超参对应的数据类型OID。 coefnames text[] 模型参数名称。 coefvalues text[] 模型参数对应的取值。 coefoids oid[] 模型参数对应的数据类型OID。 trainingscoresname text[] 度量模型性能方法的名称。 trainingscoresvalue real[] 度量模型性能方法的数值。 modeldescribe text[] 模型的描述信息。 父主题: AI
  • allocate_mem_cost 参数说明:设置优化器计算Hash Join创建Hash表开辟内存空间所需的开销,供Hash join估算不准时调优使用。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ DBL_MAX 默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,仅在Hash Join估算不准确时调整该参数。 设置不当的风险与影响:错误地设置该参数可能导致Hash Join估算不准确,部分场景下影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
  • cpu_tuple_cost 参数说明:设置优化器计算在一次查询中处理每一行数据的开销。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ DBL_MAX 默认值:0.01。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:该参数影响一次查询中对处理一行数据的性能开销评估,错误地设置该参数会影响优化器对生成计划的选择,部分场景下影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
  • cpu_operator_cost 参数说明:设置优化器计算一次查询中执行一个操作符或函数的开销。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ DBL_MAX 默认值:0.0025。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:该参数影响一次查询中对操作符或函数的性能开销评估,错误地设置该参数会影响优化器对生成计划的选择,部分场景下影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
  • effective_cache_size 参数说明:设置优化器在一次单一的查询中可用的磁盘缓冲区的有效大小。该参数可在PDB级别设置。 设置这个参数,要考虑GaussDB的共享缓冲区以及内核的磁盘缓冲区,还要考虑预计在不同表之间的并发查询数目,因为它们将共享可用的空间。 这个参数对GaussDB分配的共享内存大小没有影响,它也不会使用内核磁盘缓冲,它只用于估算。该数值用磁盘页来计算,通常每个页面是8192字节。 参数类型:整型 参数单位:页面(8kB) 取值范围: 方式一:设置为不带单位的整数,整数范围为1 ~ 2147483647。例如设置为200,表示200个页面,即200*8kB的大小。 方式二:设置为带单位的值,范围为1*8kB ~ 2147483647*8kB。例如设置为200MB,表示200MB的大小。单位仅限于“kB”、“MB”和“GB”。 默认值: 280GB(196核CPU/1536G内存);180GB(128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存);135GB(96核CPU/768G内存);100GB(80核CPU/640G内存);90GB(64核CPU/512G内存);80GB(60核CPU/480G内存);40GB(32核CPU/256G内存);18GB(16核CPU/128G内存);8GB(8核CPU/64G内存);4GB(4核CPU/32G内存);2GB(4核CPU/16G内存)。在PDB场景内,若未设置该参数,则继承来自全局的设置。
  • cpu_index_tuple_cost 参数说明:设置优化器计算在一次索引扫描中处理每条索引的开销。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ DBL_MAX 默认值:0.005。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:该参数影响一次查询中对索引扫描的性能开销评估,错误地设置该参数会影响优化器对生成计划的选择,部分场景下影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
  • seq_page_cost 参数说明:设置优化器计算一次顺序磁盘页面抓取的开销。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ DBL_MAX 默认值:1。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:该参数影响一次查询中对顺序抓取磁盘页面的性能开销评估,错误地设置该参数会影响优化器对生成计划的选择,部分场景下影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
  • random_page_cost 参数说明:设置优化器计算一次非顺序抓取磁盘页面的开销。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ DBL_MAX 默认值:4。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:参见说明部分。 设置不当的风险与影响:该参数影响一次查询中对随机抓取磁盘页面的性能开销评估,错误地设置该参数会影响优化器对生成计划的选择,部分场景下影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。 虽然服务器允许将random_page_cost设置的比seq_page_cost小,但是物理上实际不受影响。如果所有数据库都位于随机访问内存中,两者设置为相等很合理。因为在此种情况下,非顺序抓取页并没有副作用。同样,在缓冲率很高的数据库上,应该相对于CPU参数同时降低这两个值,因为获取内存中的页要比通常情况下开销小很多。 对于指定表空间中的表和索引,可以通过设置同名的表空间参数覆盖库级别的该参数值,即表空间级别该参数的优先级高于库级别该参数的优先级。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。
  • STAT_ALL_TABLES 显示数据库当前节点每个表(包括TOAST表)的状态信息,如表1所示。 表1 STAT_ALL_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表所在的Schema名。 relname name 表名。 seq_scan bigint 该表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。在Ustore表中仅代表不活跃行指针数量。 last_vacuum timestamp with time zone 最后一次该表是手动清理的(不计算VACUUM FULL)的时间。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析该表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析时间。 vacuum_count bigint 该表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 该表被autovacuum清理的次数。 analyze_count bigint 该表被手动分析的次数。 autoanalyze_count bigint 该表被autovacuum守护线程分析的次数。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Object
  • GLOBAL_REPLICATION_STAT GLOBAL_REPLICATION_STAT视图用于获得各节点描述日志同步状态信息,如发起端发送日志位置、接收端接收日志位置等,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息,当前不支持PDB级别的日志同步,因此实际会返回空列表。 表1 GLOBAL_REPLICATION_STAT字段 名称 类型 描述 node_name name 节点名称。 pid bigint 线程的PID。 usesysid oid 用户系统ID。 usename name 用户名。 application_name text 程序名称。 client_addr inet 客户端地址。 client_hostname text 客户端名。 client_port integer 客户端端口。 backend_start timestamp with time zone 程序启动时间。 state text 日志复制的状态: 追赶状态 一致的流状态 sender_sent_location text 发送端发送日志位置。 receiver_write_location text 接收端write日志位置。 receiver_flush_location text 接收端flush日志位置。 receiver_replay_location text 接收端replay日志位置。 sync_priority integer 同步复制的优先级(0表示异步)。 sync_state text 同步状态: 异步复制 同步复制 潜在同步者 dbid oid 数据库标识。 父主题: Utility
共100000条
提示

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