华为云用户手册

  • 算子说明 InitPlan是 GaussDB 的子计划的一部分。GaussDB中子查询计划可分为相关子计划和非相关子计划,相关子计划是指子查询依赖外部查询的行,不可独立于外部查询执行,非相关子计划则相反。在GaussDB中,SubPlan或InitPlan都可以叫做子计划,是相对于整个计划而言可以相对独立执行的部分,一般由不能提升的子计划生成。SubPlan主要是相关子计划生成的,InitPlan则是非相关子计划生成的。SubPlan是在主查询执行期间运行的,在主查询的每一行上重新执行一次,而InitPlan是在主查询执行之前运行的,结果是一次性的,它们在查询开始时计算一次,然后缓存起来在整个查询执行期间重用,所以InitPlan效率会更高。
  • GS_ALL_PREPARED_STATEMENTS GS_ALL_PREPARED_STATEMENTS视图显示所有会话中可用的预备语句的信息。默认只有系统管理员权限才可以访问。在多租场景下,该视图在PDB内部仅返回本PDB数据,在Non-PDB可返回全局数据。 表1 GS_ALL_PREPARED_STATEMENTS字段 名称 类型 描述 pid bigint 后台线程ID。 说明: 线程池模式下pid显示的是当前会话绑定的线程ID,当会话在不同线程上执行时pid会随之改变。线程池模式下statement与sessionid相关联,与pid无关联,关联查询时建议使用sessionid。 sessionid bigint 当前会话ID。 global_sessionid text 全局会话ID。 name text 预备语句的标识符。 statement text 创建该预备语句的查询字符串。 对于从SQL创建的预备语句而言是客户端提交的PREPARE语句。 对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。 prepare_time timestamp with time zone 创建该预备语句的时间戳。 parameter_types regtype[] 该预备语句期望的参数类型,以regtype类型的数组格式出现。与该数组元素相对应的OID可以通过把regtype转换为OID值得到。 from_sql boolean 如果该预备语句是通过PREPARE语句创建的则为true。 如果是通过前/后端协议创建的则为false。 父主题: 其他系统视图
  • ROLE_ROLE_PRIVS ROLE_ROLE_PRIVS视图显示授予其他角色的角色,仅提供用户有权访问的角色的信息。默认所有用户都可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ROLE_ROLE_PRIVS字段 名称 类型 描述 role character varying(128) 角色名称。 granted_role character varying(128) 被授予的角色。 admin_option character varying(3) 该授权是否包含ADMIN选项。 YES:包含ADMIN选项。 NO:不包含ADMIN选项。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • 如何评估VACUUM清理速率或需要清理多久 AUTOVACUUM的执行分为若干步骤,各个步骤的执行耗时各不相同,其流程简化如下: 图1 VACUUM流程图 从上图可以看出,VACUUM单表的耗时主要与以下几个因素相关:表页面数量、索引页面数量、全局索引个数、分区数量、IO管控时间。 单表VACUUM速度的估算公式如下: 非分区表 页面数量 = 数据页数量 + 索引页面数量 清理时间 = 页面数量 * 清理耗时 + 页面数量 / 评估代价 * 休眠时间 清理速度 = 死行总数 / 清理时间 分区表 页面数量= 数据页数量 + 普通索引页面数量 + (全局索引页面数量之和) * 分区数量 清理时间 = 页面数量 * 清理耗时 + 页面数量 / 评估代价 * 休眠时间 清理速度 = 死行总数 / 清理时间 可以通过以下SQL语句对单表的VACUUM速度进行评估: 非分区表: select ((heap_pages * prune_time) + (index_pages * prune_time) * nindexs + ((heap_pages+index_pages) * hit_percent * Vacuum_cost_page_hit + (heap_pages+index_pages) * miss_percent * Vacuum_cost_page_miss + (heap_pages+index_pages) * dirty_percent * Vacuum_cost_page_dirty) * Vacuum_cost_delay / Vacuum_cost_limit) as totaltime, deadtuples/totaltime as speed from (select relpages as heap_pages, b.n_dead_tup as deadtuples, b.n_dead_tup/(reltuples+b.n_dead_tup +1) as dirty_percent from pg_class a, pg_stat_all_tables b where a.relname = 't1' and b.relname = a.relname) as abc , (select sum(relpages) as index_pages, count(*) as nindexs from pg_class where relname in (select indexname from pg_indexes where tablename = 't1') and relkind = 'i') as bcd , (select 0.07 as prune_time, 0.05 as miss_percent , 0.95 as hit_percent , 1 as Vacuum_cost_page_hit,10 as Vacuum_cost_page_miss , 200 as Vacuum_cost_limit ,20 as Vacuum_cost_delay , 20 as Vacuum_cost_page_dirty); 分区表: select ((heap_pages * prune_time) + (local_index_pages * prune_time) * nlocalindexs + (gpi_index_pages * prune_time) * npartitions * ngpiindexs + ((heap_pages + local_index_pages + gpi_index_pages) * hit_percent * Vacuum_cost_page_hit + (heap_pages + local_index_pages + gpi_index_pages) * miss_percent * Vacuum_cost_page_miss + (heap_pages + local_index_pages + gpi_index_pages) * dirty_percent * Vacuum_cost_page_dirty) * Vacuum_cost_delay / Vacuum_cost_limit) as total_time, dead_tuples/total_time as speed from (select relpages as heap_pages, b.n_dead_tup as dead_tuples, b.n_dead_tup/(reltuples+b.n_dead_tup+1) as dirty_percent from pg_class a, pg_stat_all_tables b where a.relname = 't1' and b.relname = a.relname) as abc , (select sum(relpages) as local_index_pages, count(*) as nlocalindexs from pg_class where oid in (select indexrelid from pg_index where indrelid=(select oid from pg_class where relname = 't1')) and relkind='i') as bcd , (select sum(relpages) as gpi_index_pages, count(*) as ngpiindexs from pg_class where oid in (select indexrelid from pg_index where indrelid=(select oid from pg_class where relname = 't1')) and relkind='I') as fenqu , (select count(*) as npartitions from pg_partition where parentid in (select oid from pg_class where relname = 't1'))as qqq ,(select 0.07 as prune_time, 0.05 as miss_percent , 0.95 as hit_percent , 1 as Vacuum_cost_page_hit,10 as Vacuum_cost_page_miss , 200 as Vacuum_cost_limit ,20 as Vacuum_cost_delay , 20 as Vacuum_cost_page_dirty) as yyy; 公式中prune_time为清理一个tuple需要的时间,这个值与硬件I/O能力相关,在SSD硬盘可以按照0.07ms进行估算。对于IO能力更强的NVMe硬盘,可以适当降低该值;而对于I/O能力较弱的机械硬盘,则需要适当提高; miss_percent和hit_percent是缓存命中情况。在刚导入数据的场景,缓存命中较低;在系统稳定后,可以按照miss 0.5和hit 0.95进行估算; vacuum_cost_delay是GUC参数autovacuum_vacuum_cost_delay的值。 除此之外,在当前版本中,我们引入了如下的进度分析视图,可以获取当前的AUTOVACUUM进度以及效率。 gaussdb=# select * from gs_stat_progress_vacuum(140123447490304); pid | dataname | relid | relname | phase | detail -----------------+----------+-------+---------+---------------+--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------- 140123447490304 | postgres | 24602 | t1 | scanning heap | vacuum db "postgres" starts at 2025-02-09 14:10:17.863838-05, vacuumed 12/242 relations, current r elation "t1"; heap: scanned 55298/73216 blocks, skipped 0 blocks; info: found 0 dead tuples, already run 610s, delay 608s. (1 row) 父主题: 常见问题
  • Package支持自治事务 自治事务可以在package中的存储过程或者函数中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建package中存储过程或函数语法相同,请参见CREATE PACKAGE,示例如下。 --建表 gaussdb=# CREATE TABLE t2(a INT, b INT); CREATE TABLE gaussdb=# INSERT INTO t2 VALUES(1,2); INSERT 0 1 gaussdb=# SELECT * FROM t2; a | b ---+--- 1 | 2 (1 row) --创建包含自治事务的PACKAGE中的存储过程和函数 gaussdb=# CREATE OR REPLACE PACKAGE autonomous_pkg AS PROCEDURE autonomous_4(a INT, b INT); FUNCTION autonomous_32(a INT ,b INT) RETURN INT; END autonomous_pkg; / CREATE PACKAGE gaussdb=# CREATE OR REPLACE PACKAGE BODY autonomous_pkg AS PROCEDURE autonomous_4(a INT, b INT) AS DECLARE num3 INT := a; num4 INT := b; PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO t2 VALUES(num3, num4); END; FUNCTION autonomous_32(a INT ,b INT) RETURN INT AS DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO t2 VALUES(a, b); RETURN 1; END; END autonomous_pkg; / CREATE PACKAGE BODY --创建调用PACKAGE自治事务存储过程和函数的普通存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_5(a INT, b INT) AS DECLARE va INT; BEGIN INSERT INTO t2 VALUES(666, 666); autonomous_pkg.autonomous_4(a,b); va := autonomous_pkg.autonomous_32(a + 1, b + 1); ROLLBACK; END; / CREATE PROCEDURE --调用普通存储过程 gaussdb=# SELECT autonomous_5(11,22); autonomous_5 -------------- (1 row) --查看表结果 gaussdb=# SELECT * FROM t2 ORDER BY a; a | b ----+---- 1 | 2 11 | 22 12 | 23 (3 rows) gaussdb=# DROP TABLE t2; DROP TABLE 上述例子,最后在回滚的事务块中执行包含package自治事务的存储过程和函数,直接说明了自治事务的特性,即主事务的回滚不会影响自治事务已经提交的内容。 父主题: 自治事务
  • PG_AMPROC PG_AMPROC系统表存储有关与访问方法操作符族相关联的支持过程的信息。每个属于某个操作符族的支持过程都占有一行。 表1 PG_AMPROC字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amprocfamily oid PG_OPFAMILY.oid 该项的操作符族。 amproclefttype oid PG_TYPE.oid 相关操作符的左输入数据类型。可能取值及其描述见于8.3 数据类型。 amprocrighttype oid PG_TYPE.oid 相关操作符的右输入数据类型。可能取值及其描述见于8.3 数据类型。 amprocnum smallint - 支持过程编号。 amproc regproc PG_PROC.proname 过程的OID。 amproclefttype和amprocrighttype字段的习惯解释,标识一个特定支持过程支持的操作符的左和右输入类型。对于某些访问方式,匹配支持过程本身的输入数据类型,对其他的则不这样。有一个对索引的“缺省”支持过程的概念,amproclefttype和amprocrighttype都等于索引操作符类的opcintype。 父主题: 其他系统表
  • STAT_XACT_SYS_TABLES 显示当前节点Schema中系统表的事务状态信息,如表1所示。 表1 STAT_XACT_SYS_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更新行数(即没有更新索引列的行数)。 父主题: Object
  • STREAMING_CONT_QUERY STREAMING_CONT_QUERY系统表存储所有CONTVIEW对象的元数据信息。 表1 STREAMING_CONT_QUERY字段 名称 类型 描述 id integer CONTVIEW对象唯一的标识符,不可重复。 type "char" 标识CONTVIEW的类型。 'r':表示该CONTVIEW是基于行存存储模型。 relid oid CONTVIEW对象的标识。 defrelid oid CONTVIEW对应的持续计算规则VIEW的标识。 active boolean 标识CONTVIEW是否处于持续计算状态。 t(true):表示是。 f(false):表示不是。 streamrelid oid CONTVIEW对应的STREAM的标识。 matrelid oid CONTVIEW对应物化表的标识。 lookupidxid oid CONTVIEW对应GROUP LOOK UP INDEX的标识,此字段内部使用,仅行存具有。 step_factor smallint 标识CONTVIEW的步进模式。主要取值为0(无重叠窗口)和1(滑动窗口,步长为1)。 ttl integer CONTVIEW设置的ttl_interval参数值。 ttl_attno smallint CONTVIEW设置的TTL功能对应时间列的字段编号。 dictrelid oid CONTVIEW对应字典表的标识。 grpnum smallint CONTVIEW持续计算规则中维度列的个数,此字段内部使用。 grpidx int2vector CONTVIEW持续计算规则中维度列在TARGET LIST的索引,此字段内部使用。 父主题: 其他系统表
  • job_queue_processes 参数说明:表示系统可以并发执行的job数目。 参数类型:整型 参数单位:无 取值范围:0 ~ 1000 当job_queue_processes设置为0时,表示不启用定时任务功能,任何job都不会被执行(因为开启定时任务的功能会对系统的性能有影响,有些局点可能不需要定时任务的功能,可以通过设置为0不启用定时任务功能)。 当job_queue_processes大于0时,表示启用定时任务功能且系统能够并发处理的最大任务数。 启用定时任务功能后,job_scheduler线程会在定时时间间隔轮询pg_job系统表,系统设置定时任务检查周期默认为1s。 由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数,当前并发的任务数达到job_queue_processes,且同时又有任务到期时,这些任务将因为本次得不到执行而延期到下一轮询周期。因此,建议用户需要根据每个任务的执行时长合理设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间太长而导致下个轮询周期无法正常执行。 默认值:10 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:如果同一时间内并行的job数很多,过小的参数值会导致job等待,而过大的参数值则消耗更多的系统资源,因此建议设置此参数为100,用户可以根据系统资源情况合理调整。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • enable_prevent_job_task_startup 参数说明:控制是否可以启动job线程。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示不能启动job线程。 off:表示可以启动job线程。 默认值:off。在PDB场景内,若未设置该参数,则默认值为off。 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • cache_connection 参数说明:是否回收连接池的连接。 参数类型:布尔型 参数单位:无 取值范围: on:表示回收连接池的连接。 off:表示不回收连接池的连接。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参考表2中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭该参数后,会话执行语句结束后会直接清理掉持有的连接,导致业务频繁建立连接,对性能有一定损耗。 集中式中该参数不生效。
  • SESSION_STAT 当前节点以会话线程或AutoVacuum线程为单位,统计会话状态信息,如表1所示。 表1 SESSION_STAT字段 名称 类型 描述 sessid text 线程启动时间+线程标识。 statid integer 统计编号。 statname text 统计会话名称。 statunit text 统计会话单位。 value bigint 统计会话值。 父主题: Session/Thread
  • PG_TS_CONFIG PG_TS_CONFIG系统表包含表示文本搜索配置的记录。其中的每一条配置包含一个特定的文本搜索解析器和字典映射的列表。 解析器在PG_TS_CONFIG记录中显示,但是字典映射的标记是由PG_TS_CONFIG_MAP里面的辅助记录定义的。 表1 PG_TS_CONFIG字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 cfgname name - 文本搜索配置名。 cfgnamespace oid PG_NAMESPACE.oid 包含这个配置的名称空间的OID。 cfgowner oid PG_AUTHID.oid 配置的所有者。 cfgparser oid PG_TS_PARSER.oid 这个配置的文本搜索解析器的OID。 cfoptions text[] - 分词相关配置选项。 父主题: 其他系统表
  • 注意事项 触发器所在表的所有者或者被授予了ALTER ANY TRIGGER权限的用户可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。 若要修改触发器owner,当前用户必须是该触发器的所有者或者系统管理员,且当前用户必须是新owner所属角色的直接或者间接成员。新owner必须有触发器所在模式上的CREATE权限。三权分立开关关闭时,系统管理员默认拥有该权限。当三权分立开关打开时,系统管理员默认没有该权限。 只有初始化用户才能修改触发器的owner为初始化用户。
  • 示例 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 --创建源表及触发表。 gaussdb=# CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT); gaussdb=# CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT); --创建DELETE触发器函数。 gaussdb=# CREATE OR REPLACE FUNCTION TRI_DELETE_FUNC() RETURNS TRIGGER AS $$ DECLARE BEGIN DELETE FROM test_trigger_des_tbl WHERE id1=OLD.id1; RETURN OLD; END $$ LANGUAGE plpgsql; --创建DELETE触发器。 gaussdb=# CREATE TRIGGER delete_trigger BEFORE DELETE ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_delete_func(); --修改触发器的名称。 gaussdb=# ALTER TRIGGER delete_trigger ON test_trigger_src_tbl RENAME TO delete_trigger_renamed; --修改触发器owner为jack(需保证jack为数据库中已创建的用户)。 gaussdb=# ALTER TRIGGER delete_trigger ON test_trigger_src_tbl OWNER TO jack; --删除触发器。 gaussdb=# DROP TRIGGER delete_trigger_renamed ON test_trigger_src_tbl; --删除函数。 gaussdb=# DROP FUNCTION tri_delete_func; --删除源表及触发表。 gaussdb=# DROP TABLE test_trigger_src_tbl; gaussdb=# DROP TABLE test_trigger_des_tbl;
  • ADM_PART_COL_STATIS TICS ADM_PART_COL_STATISTI CS 视图显示数据库中所有表分区的列统计信息和直方图信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_PART_COL_STATISTICS字段 名称 类型 描述 owner character varying(128) 分区表的所有者。 table_name character varying(128) 表名。 partition_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(63) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 分区表
  • MY_AUDIT_TRAIL MY_AUDIT_TRAIL视图显示与当前用户有关的标准审计跟踪条目,GaussDB审计信息主要通过gs_query_audit()函数。该视图同时存在于PG_CATALOG和SYS Schema下,仅拥有AUDITADMIN属性及MY_AUDIT_TRAIL的SELECT权限的用户才可以查看审计信息;三权分立未开启时,拥有SYSADMIN属性的用户也可以查看审计信息。GaussDB的action_name字段与A数据库审计动作不一致,transactionid字段与A数据库中transactionid数据的类型保持一致,GaussDB的sql_text字段为解析后SQL描述语句,不完全与执行的SQL语句相同。 表1 MY_AUDIT_TRAIL字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户ID。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(255) 暂不支持,值为NULL。 timestamp timestamp(0) without time zone 在本地数据库会话时区中创建审计跟踪条目的日期和时间(由审计会话创建的条目的用户登录日期和时间)。 owner character varying(128) 受操作影响的对象的创建者。 obj_name character varying(128) 受操作影响的对象的名称。 action numeric 暂不支持,值为NULL。 action_name character varying(28) action列中的数字代码对应的action类型名称。 new_owner character varying(128) 暂不支持,值为NULL。 new_name character varying(128) 暂不支持,值为NULL。 obj_privilege character varying(32) 暂不支持,值为NULL。 sys_privilege character varying(40) 暂不支持,值为NULL。 admin_option character varying(1) 暂不支持,值为NULL。 grantee character varying(128) 暂不支持,值为NULL。 audit_option character varying(40) 暂不支持,值为NULL。 ses_actions character varying(19) 暂不支持,值为NULL。 logoff_time timestamp(0) without time zone 暂不支持,值为NULL。 logoff_lread numeric 暂不支持,值为NULL。 logoff_pread numeric 暂不支持,值为NULL。 logoff_lwrite numeric 暂不支持,值为NULL。 logoff_dlock character varying(40) 暂不支持,值为NULL。 comment_text character varying(4000) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 entryid numeric 暂不支持,值为NULL。 statementid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 priv_used character varying(40) 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 econtext_id character varying(64) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL。 extended_timestamp timestamp(6) with time zone 创建审计跟踪条目的时间戳(由创建的条目的用户登录时间戳UTC(协调通用)中的审计会话时间)时区。 proxy_sessionid numeric 暂不支持,值为NULL。 global_uid character varying(32) 暂不支持,值为NULL。 instance_number numeric 暂不支持,值为NULL。 os_process character varying(16) 暂不支持,值为NULL。 transactionid text 访问或修改对象的事务的事务标识符。 scn numeric 暂不支持,值为NULL。 sql_bind nvarchar2(2000) 暂不支持,值为NULL。 sql_text nvarchar2 查询的SQL文本。 obj_edition_name character varying(128) 暂不支持,值为NULL。 dbid numeric 暂不支持,值为NULL。 rls_info clob 暂不支持,值为NULL。 current_user character varying(128) 暂不支持,值为NULL。 父主题: 其他系统视图
  • GS_STATIO_ALL_PARTITIONS GS_STATIO_ALL_PARTITIONS视图包含当前数据库中每个分区表分区的I/O统计信息,此视图信息由gs_statio_get_all_partitions_stats()函数查询得到。 表1 GS_STATIO_ALL_PARTITIONS字段 名称 类型 描述 partition_oid oid 分区OID。 schemaname name 该分区模式名。 relname name 该分区所在表的表名。 partition_name name 该分区所在一级分区名。 sub_partition_name name 该分区所在二级分区名。 heap_blks_read bigint 从该分区中读取的磁盘块数。 heap_blks_hit bigint 该分区缓存命中数。 idx_blks_read bigint 从分区中所有索引读取的磁盘块数。 idx_blks_hit bigint 分区中所有索引命中缓存数。 toast_blks_read bigint 该分区的TOAST表分区读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该分区的TOAST表分区命中缓冲区数(如果存在)。 tidx_blks_read bigint 该分区的TOAST表分区索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该分区的TOAST表分区索引命中缓冲区数(如果存在)。 父主题: 分区表
  • ADM_TRIGGERS ADM_TRIGGERS视图显示数据库中的触发器信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TRIGGERS字段 名称 类型 描述 owner character varying(128) 触发器的所有者。 trigger_name character varying(64) 触发器名称。 trigger_type character varying 触发器触发的时机。取值范围:before statement、before each row、after statement、after each row、instead of。 triggering_event character varying 触发触发器的事件。取值范围:update、insert、delete、truncate。 table_owner character varying(64) 定义触发器的表的所有者。 base_object_type character varying(18) 定义触发器的基础对象。取值范围:table、view。 table_name character varying(64) 定义触发器的表或视图名称。 column_name character varying(4000) 暂不支持,值为NULL。 referencing_name character varying(422) 暂不支持,值为referencing new as new old as old。 when_clause character varying(4000) when子句的内容,必须值为true才能执行trigger_body status character varying(64) 触发器触发的状态: O:触发器在“origin”和“local”模式下触发。 D:触发器被禁用。 R:触发器在“replica”模式下触发。 A:触发器始终触发。 description character varying(4000) 触发器描述。用于重新创建触发器创建语句。 action_type character varying(11) 触发器的动作类型,仅支持call。 trigger_body text 触发器触发时执行的语句。 crossedition character varying(7) 暂不支持,值为NULL。 before_statement character varying(3) 暂不支持,值为NULL。 before_row character varying(3) 暂不支持,值为NULL。 after_row character varying(3) 暂不支持,值为NULL。 after_statement character varying(3) 暂不支持,值为NULL。 instead_of_row character varying(3) 暂不支持,值为NULL。 fire_once character varying(3) 暂不支持,值为NULL。 apply_server_only character varying(3) 暂不支持,值为NULL。 父主题: 其他系统视图
  • GLOBAL_RECOVERY_STATUS GLOBAL_RECOVERY_STATUS视图显示关于主机和备机的日志流控信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时返回空列表。 表1 GLOBAL_RECOVERY_STATUS字段 名称 类型 描述 node_name text 节点名称,包含主机和备机。 standby_node_name text 备机节点的名称。 source_ip text 主机的IP地址。 source_port integer 主机的端口号。 dest_ip text 备机的IP地址。 dest_port integer 备机的端口号。 current_rto bigint 备机当前的日志流控时间,单位秒。 target_rto bigint 备机通过GUC参数设置的预期流控时间,单位秒。 current_sleep_time bigint 为了达到此RTO预期,主机所需要执行的睡眠时间,单位微秒。 父主题: Utility
  • 查询结果集 返回单行结果的SELECT语句可以直接使用EXEC SQL执行,请参见执行SQL语句章节。 示例: /* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (2, 1); /* 查询结果为单行,:num 为宿主变量 */ EXEC SQL SELECT number1 INTO :num FROM test_table WHERE number2 = 1; 若要处理多行结果集,则必须使用游标,请参见使用游标章节(特殊情况下,应用程序可以一次取出多行结果写入到数组类型的宿主变量中,请参见使用非初级类型的宿主变量章节)。 示例: /* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (2, 1); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (3, 1); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (4,1); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (5, 1); /* 定义宿主变量 */ EXEC SQL BEGIN DECLARE SECTION; int v1; int v2; EXEC SQL END DECLARE SECTION; /* 声明游标 */ EXEC SQL DECLARE test_bar CURSOR FOR SELECT number1, number2 FROM test_table ORDER BY number1; /* 打开游标 */ EXEC SQL OPEN test_bar; /* 当游标到达结果集末尾时跳出循环 */ EXEC SQL WHENEVER NOT FOUND DO BREAK; /* 获取查询结果集 */ while(1) { EXEC SQL FETCH NEXT FROM test_bar INTO :v1, :v2; printf("number1 = %d, number2 = %d\n",v1,v2); } /* 关闭游标 */ EXEC SQL CLOSE test_bar; 父主题: 基于ecpg开发
  • num_internal_lock_partitions 参数说明:控制内部轻量级锁分区的个数。主要用于各类场景的性能调优。 参数内容以关键字和数字的KV方式组织,各个不同类型锁之间以逗号隔开。 先后顺序对设置结果不影响。例如"CLOG_PART=256,CSNLOG_PART=512"等同于"CSNLOG_PART=512,CLOG_PART=256"。 重复设置同一关键字时,以最后一次设置为准。例如"CLOG_PART=256,CLOG_PART=2",设置的结果为CLOG_PART=2。 参数类型:字符串 参数单位:无 取值范围: CLOG_PART:CLOG文件控制器的个数。最小值为1,最大值为256。 CSNLOG_PART:CSNLOG文件控制器的个数。最小值为1,最大值为512。 LOG2_LOCKTABLE_PART:常规锁表锁分区个数的2对数。最小值4,即锁分区数为16;最大值为16,即锁分区数为65536。 FASTPATH_PART:每个线程可以不通过主锁表拿锁的最大锁个数。最小值为20,最大值为10000。 默认值: "CLOG_PART=256,CSNLOG_PART=512,LOG2_LOCKTABLE_PART=4,FASTPATH_PART=20"(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内存);"CLOG_PART=8,CSNLOG_PART=16,LOG2_LOCKTABLE_PART=4,FASTPATH_PART=20"(4核CPU/16G内存)。 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议: CLOG_PART:增大该值可以提高CLOG日志写入效率,提升事务提交性能,但是会增大内存使用;减小该值会减少相应内存使用,但可能使得CLOG日志写入冲突变大,影响性能。 CSNLOG_PART:增大该值可以提高CSNLOG日志写入效率,提升事务提交性能,但是会增大内存使用;减小该值会减少相应内存使用,但可能使得CSNLOG日志写入冲突变大,影响性能。 LOG2_LOCKTABLE_PART:增大该值可以提升正常流程常规锁获取锁的并行度,但是会增大内存使用,对于等待事件在LockMgrLock时,可以调大该锁增加性能。 FASTPATH_PART:对于分区表读取、更新、插入、删除操作且等待事件在LockMgrLock时,可以通过调大该值避免获取LockMgrLock提升性能,建议调整数量大于等于分区数*(1+本地索引数量)+全局索引数量+10,调大该值可能增加锁转移和锁消除时的耗时,并会额外增加内存。fastpath增量内存=((fastpath增加量/20)*8 + fastpath增加量*12) * 线程池大小,单位是字节。 设置不当的风险与影响:设置不当可能会影响数据库性能。
  • enable_wait_exclusive_lock 参数说明:控制ProcArrayLock的排他锁hang死检测与治愈功能的开关。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启。 off:表示关闭。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • barrier_lock_timeout 参数说明:持有barrier锁的超时时间。该参数可在PDB级别设置。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 3600 默认值:30。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • gs_clean_timeout 参数说明:控制主节点调用gs_clean工具的周期,可用来定时清理临时表。数据库连接异常中止时,通常会有临时表残留,此时需要对数据库中的临时表进行清理。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 2147483 默认值:60 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如:不带单位取值1,表示gs_clean_timeout为1s;带单位取值1min,表示gs_clean_timeout为1min。取值如果要带单位,必须为s、min、h、d。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过大时,会使数据库残留临时表清理周期延长。
  • xloginsert_locks 参数说明:控制用于并发写预写式日志锁的个数。主要用于提高写预写式日志的效率。 参数类型:整型 参数单位:无 取值范围:1 ~ 1000。若CPU为NUMA架构,数值必须为NUMA节点数量的整数倍。 默认值:16 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:ARM CPU架构在并发压力大的场景下,可能因为原子操作的竞争而导致概率性的性能抖动,可以适当降低该参数值而获取相对稳定的运行性能。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • update_lockwait_timeout 参数说明:在业务允许并发更新的情况下,该参数控制并发更新同一行时单个锁的最长等待时间。当申请的锁等待时间超过设定值时,系统会报错。该参数仅针对常规锁生效。该参数可在PDB级别设置。 参数类型:整型 参数单位:ms(毫秒) 取值范围:0 ~ 2147483647 默认值:120000(2min)。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。例如,不带单位取值900,表示update_lockwait_timeout为900ms;带单位取值2min,表示update_lockwait_timeout为2min。取值如果要带单位,必须为ms、s、min、h、d。 设置建议:设置值主要取决于并发更新同一行的事务的workload。一般TP业务,执行时间较短小于两分钟,因此等待并发更新事务提交时间较短,按默认值2min的配置误报锁超时概率较小;如果业务出现大量并发更新同一行事务,执行时间超过两分钟,可以调大该参数避免等锁超时误报。 设置不当的风险与影响:设置过大时,并发更新同一行时锁冲突造成的阻塞时间更长;设置过小时,可能会出现更多的锁超时报错。
  • enable_online_ddl_waitlock 参数说明:控制DDL是否会阻塞等待pg_advisory_lock等数据库锁。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启。 off:表示关闭。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:主要用于OM在线操作场景,不建议用户设置。 设置不当的风险与影响:修改该参数取值可能导致数据库出现意料之外的结果,请保持默认值。
  • partition_lock_upgrade_timeout 参数说明:在执行某些查询语句的过程中,需要将分区表上的锁级别由允许读的ExclusiveLock级别升级到读写阻塞的AccessExclusiveLock级别。如果此时已经存在并发的读事务,那么该锁升级操作将阻塞等待。partition_lock_upgrade_timeout为尝试锁升级的等待超时时间。该参数可在PDB级别设置。 举例:在分区表上进行MERGE PARTITION和CLUSTER PARTITION操作时,都利用了临时表进行数据重排和文件交换,为了最大程度提高分区上的操作并发度,在数据重排阶段给相关分区加锁ExclusiveLock,在文件交换阶段加锁AccessExclusiveLock。加锁方式是尝试性加锁,加锁成功了则立即返回,不成功则等待50ms后继续下次尝试,加锁超时时间使用会话级设置参数partition_lock_upgrade_timeout。 参数类型:整型 参数单位:s(秒) 取值范围:-1 ~ 3000。-1表示无限等待,即不停地尝试锁升级,直到加锁成功。 默认值:1800。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置为-1时,长时间无法升级锁可能导致业务阻塞。
  • max_pred_locks_per_transaction 参数说明:当数据库连接数达到最大时,每个事务能够持有断定锁的平均数量。 这个参数并不严格限制每个事务最多可以持有多少断定锁。如果连接数没有达到最大值max_connections,那么每个事务能够持有断定锁的平均数量会增大。 参数类型:整型 参数单位:无 取值范围:10 ~ 2147483647 默认值:64 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议: 共享的断定锁表的大小是以假设任意时刻最多只有max_pred_locks_per_transaction*(max_connections+max_prepared_transactions) 个独立的对象需要被锁住为基础进行计算的。不超过设定数量的多个对象可以在任一时刻同时被锁定。当在一个事务里面修改很多不同的表时,可能需要提高这个默认数值。只能在服务器启动的时候设置。 增大这个参数可能导致GaussDB请求更多的System V共享内存,有可能超过操作系统的缺省配置。 设置不当的风险与影响:设置过大时,可能导致数据库启动失败。
共100000条
提示

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