华为云用户手册

  • enable_data_replicate 参数说明:导入数据行存表时,对主机与备机的数据同步方式进行选择。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示导入数据行存表时,主备数据采用数据页的方式进行同步。当replication_type参数为1时,不允许设置为on,如果此时用guc工具设置成on,会强制改为off。 off:表示导入数据行存表时,主备数据采用xLog日志方式进行同步。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • ha_module_debug 参数说明:用于查看数据复制时具体数据块的复制状态日志。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示日志中将打印数据复制时每个数据块的状态。 off:表示日志中不打印数据复制时每个数据块的状态。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:打印日志会占用不必要的磁盘、CPU、I/O带宽,不建议用户开启。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • catchup2normal_wait_time 参数说明:最大可用模式most_available_sync开启,主备场景下,控制备机数据追赶(catchup)阻塞主机的最长时间。该时间为估算值,实际结果可能与参数值有偏差。 参数类型:整型 参数单位:ms(毫秒) 取值范围:-1~10000 -1表示主机阻塞直到备机数据追赶完成。 0表示备机数据追赶时始终不阻塞主机。 正整数表示备机数据追赶时阻塞主机的最长时间。例如,取值5000,表示当备机数据追赶完成时间还剩5s时,阻塞主机等待其完成。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • enable_stream_replication 参数说明:控制主备是否进行数据和日志同步。 此参数属于性能测试参数,用于测试带有备机和不带备机的性能参数。关闭参数后,不能进行切换、故障等异常场景测试,否则会出现主备不一致的情况。 此参数属于受控参数,不建议正常业务场景下关闭此参数。 参数类型:布尔型 参数单位:无 取值范围: on:表示打开主备同步。 off:表示关闭主备同步。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭后,数据库实例将失去多副本能力,会降低可用性,不建议用户关闭。
  • most_available_sync 参数说明:在有同步备机故障时,主机事务不因同步备机故障而被阻塞。比如有两个同步备机,一个故障,另一个正常,此时主机事务只会等正常的同步备机,而不被故障的同步备所阻塞。 再比如执行quorum协议时,一主三同步备,配置ANY 2(node1,node2,node3),当node1、node3故障,node2正常时,主机业务同样不被阻塞。 参数类型:布尔型 参数单位:无 取值范围: on:表示在所有同步备机故障时,不阻塞主机的事务提交。 off:表示在所有同步备机故障时,阻塞主机的事务提交。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:开启后,主机不会等待备机提交验证。主机处于单主时也会提交成功,而不是多数派写入成功,需要用户针对自身使用场景谨慎开启。 设置不当的风险与影响:主机处于单主时也会提交成功,而不是多数派写入成功。
  • keep_sync_window 参数说明:延迟进入最大可用模式的时间。 当最大可用模式most_available_sync配置为on,在主备场景下,当存在同步备发生故障,导致不满足当前所配置的同步备数量(详细可参考synchronous_standby_names的含义)时,如果配置了keep_sync_window参数,则在keep_sync_window设置的时间窗口内,继续保持最大保护模式,即阻塞主机的事务提交,延缓进入最大可用模式的时间。 若在keep_sync_window超时窗口内,同步备机故障恢复,且满足当前所配置的同步备数量,则不阻塞事务,恢复到正常状态。 如果设置keep_sync_window,推荐最小配置为5s,以避免监控系统监控到网络不稳定的误报。 配置该参数可能会对RPO造成影响,若主机在所配置的超时时间窗口内发生故障,则从开始阻塞到主机故障这段时间窗口内的数据可能丢失。 参数类型:整型 参数单位:s(秒) 取值范围:0~2147483647 0表示不设置keep_sync_window超时时间窗口,即直接进入最大可用模式。 其余表示keep_sync_window超时时间窗口的大小。 默认值:0 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:开启后,主机不会等待备机提交验证。主机处于单主时也会提交成功,而不是多数派写入成功,需要客户针对自身使用场景谨慎开启。 设置不当的风险与影响:主机处于单主时也会提交成功,而不是多数派写入成功。
  • ADM_IND_EXPRESSIONS ADM_IND_EXPRESSIONS视图显示数据库中表达式索引的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_IND_EXPRESSIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 index_owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名。 column_expression text 定义列的基于函数的索引表达式。 column_position smallint 索引中列的位置。 父主题: 其他系统视图
  • 以pg_temp或pg_toast_temp开头的SCHEMA是什么? 答:在查询SCHEMA的时候,发现查询结果中存在以pg_temp或pg_toast_temp开头的SCHEMA如下所示。 gaussdb=# SELECT nspname FROM pg_namespace WHERE nspname LIKE 'pg_t%' AND nspname != 'pg_toast'; nspname --------------------------------- pg_temp_dn_6001_4_1_11495 pg_toast_temp_dn_6001_4_1_11495 (2 rows) 以pg_temp或者pg_toast_temp开头的表是在创建临时表时,通过每个会话以pg_temp开头的SCHEMA来保证只对当前会话可见。因此,不建议用户在日常操作中手动删除以pg_temp、pg_toast_temp开头的SCHEMA。 临时表只在当前会话可见,会话结束后会自动删除,相对应的SCHEMA也会被删除。 父主题: FAQ
  • 示例 对复合类型的修改。 --创建复合类型。 gaussdb=# CREATE TYPE typ_stu AS (name varchar(10),age int); --创建表并插入数据,其中info字段数据类型为typ_stu。 gaussdb=# CREATE TABLE tbl_test (id int PRIMARY KEY,info typ_stu); gaussdb=# INSERT INTO tbl_test VALUES (1,('Jim',16)); --查看tbl_test数据。 gaussdb=# SELECT * FROM tbl_test; id | info ----+---------- 1 | (Jim,16) (1 row) --为复合类型增加一个新的属性。 gaussdb=# ALTER TYPE typ_stu ADD ATTRIBUTE year int CASCADE; --再次查看tbl_test数据,info多了一个属性。 gaussdb=# SELECT * FROM tbl_test; id | info ----+----------- 1 | (Jim,16,) (1 row) --从复合类型删除一个属性。 gaussdb=# ALTER TYPE typ_stu DROP ATTRIBUTE year; 修改类型所有者。 --创建用户test。 gaussdb=# CREATE ROLE test PASSWORD '********'; --修改typ_stu的所有者为test。 gaussdb=# ALTER TYPE typ_stu OWNER TO test; --查询typ_stu拥有者。 gaussdb=# SELECT t1.typname, t2.rolname AS owner FROM pg_type t1, gs_roles t2 WHERE t1.typname = 'typ_stu' AND t1.typowner = t2.oid; typname | owner ---------+-------- typ_stu | test (1 row) 修改类型或是一个复合类型中的一个属性的名称。 --将typ_stu的其中一个属性age重命名为age1。 gaussdb=# ALTER TYPE typ_stu RENAME ATTRIBUTE age to age1; --通过如下SQL查询tbl_test表中年龄为16的数据。 gaussdb=# SELECT id,(info).name,(info).age1 FROM tbl_test WHERE (info).age1 = 16; id | name | age1 ----+------+------ 1 | Jim | 16 (1 row) 将类型移至一个新的模式中。 --创建模式sctest。 gaussdb=# CREATE SCHEMA sctest; --将typ_stu移至模式sc_test中。 gaussdb=# ALTER TYPE typ_stu SET SCHEMA sctest; --查询typ_stu的所属模式。 gaussdb=# \dT sctest.* List of data types Schema | Name | Description --------+----------------+------------- sctest | sctest.typ_stu | (1 row) -- 删除表。 gaussdb=# DROP TABLE tbl_test; gaussdb=# DROP TYPE sctest.typ_stu; gaussdb=# DROP ROLE test; gaussdb=# DROP SCHEMA sctest; 为枚举类型增加一个新值。 --创建一个枚举类型typ_bugstatus gaussdb=# CREATE TYPE typ_bugstatus AS ENUM ('create', 'modify', 'closed'); --创建表tbl_test1。 gaussdb=# CREATE TABLE tbl_test1 (id serial, bugstat typ_bugstatus); --插入数据时bugstat字段必须是枚举类型中的值,否则报错。 gaussdb=# INSERT INTO tbl_test1 (bugstat) VALUES ('closed'); gaussdb=# INSERT INTO tbl_test1 (bugstat) VALUES ('deleted'); ERROR: invalid input value for enum typ_bugstatus: "deleted" LINE 1: INSERT INTO tbl_test1 (bugstat) VALUES ('deleted'); ^ CONTEXT: referenced column: bugstat --查看tbl_test1数据。 gaussdb=# SELECT * FROM tbl_test1; id | bugstat ----+--------- 1 | closed (1 row) --为枚举类型增加一个标签值。 gaussdb=# ALTER TYPE typ_bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed'; --查询。 gaussdb=# \dT+ typ_bugstatus List of data types Schema | Name | Internal name | Size | Elements | Access privileges | Description --------+---------------+---------------+------+----------+-------------------+------------- public | typ_bugstatus | typ_bugstatus | 4 | create +| | | | | | modify +| | | | | | regress +| | | | | | closed | | (1 row) 重命名枚举类型的一个标签值。 --将类型typ_bugstatus中closed修改为close。 gaussdb=# ALTER TYPE typ_bugstatus RENAME VALUE 'closed' TO 'close'; --查看表tbl_test1数据,其中closed的数据也都改成了close。 gaussdb=# SELECT * FROM tbl_test1; id | bugstat ----+--------- 1 | close (1 row) --查询。 gaussdb=# \dT+ typ_bugstatus; List of data types Schema | Name | Internal name | Size | Elements | Access privileges | Description --------+---------------+---------------+------+----------+-------------------+------------- public | typ_bugstatus | typ_bugstatus | 4 | create +| | | | | | modify +| | | | | | regress +| | | | | | close | | (1 row) --删除。 gaussdb=# DROP TABLE tbl_test1; gaussdb=# DROP TYPE typ_bugstatus;
  • 参数说明 name 一个需要修改的现有类型的名称(可以有模式修饰) 。 new_name 该类型的新名称。 new_owner 新所有者的用户名 。 new_schema 该类型的新模式 。 attribute_name 拟增加、更改或删除的属性的名称。 new_attribute_name 拟改名的属性的新名称。 data_type 拟新增属性的数据类型或是拟更改的属性的新类型名。 new_enum_value 枚举类型新增加的标签值,是一个非空的长度不超过63个字节的字符串。 neighbor_enum_value 一个已有枚举标签值,新值应该增加在紧接着该枚举值之前或者之后的位置上。 existing_enum_value 现有的要重命名的枚举值,是一个非空的长度不超过63个字节的字符串 CASCADE 自动级联更新需更新类型以及相关联的记录和继承它们的子表。 RESTRICT 如果需联动更新类型是已更新类型的关联记录,则拒绝更新,这是缺省选项。 ADD ATTRIBUTE、DROP ATTRIBUTE和ALTER ATTRIBUTE选项可以组合成一个列表同时处理多个属性更改。 例如,在一条命令中同时增加几个属性或是更改几个属性的类型。 要修改一个类型的模式,必须在新模式上拥有CREATE权限。 要修改所有者,必须是新的所有角色的直接或间接成员, 并且该成员必须在此类型的模式上有CREATE权限。 (这些限制了修改所有者不会做任何通过删除和重建类型不能做的事情。 但是,三权分立关闭时系统管理员可以以任何方式修改任意类型的所有权。) 要增加一个属性或是修改一个属性的类型,也必须有该类型的USAGE权限。 CURRENT_USER 当前用户。 SESSION_USER 当前系统用户。 COLLATE collation COLLATE子句为该列(必须是一种可排序数据类型)赋予一个排序规则。 如果没有指定,将使用该列数据类型的默认排序规则。
  • 语法格式 修改类型。 1 ALTER TYPE name action [, ... ]; 其中action对应的子句如下: 给复合类型增加新的属性。 1 ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] 从复合类型中删除一个属性。 1 DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ] 改变一种复合类型中某个属性的类型。 1 ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] 改变类型的所有者。 1 ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }; 改变类型的名称。 ALTER TYPE name RENAME TO new_name; 改变一个复合类型中一个属性的名称。 1 ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]; 将类型移至一个新的模式中。 1 ALTER TYPE name SET SCHEMA new_schema; 为枚举类型增加一个新值。 1 ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ]; 重命名枚举类型的一个标签值。 1 ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value;
  • pl_trace_func_start 开启trace功能的接口函数。字段信息详见表1。 表1 pl_trace_func_start 参数 类型 描述 session_id bigint 需要开启trace功能的会话ID。 max_num integer 本次trace所能记录的最大信息数量(取值为100~10000)。 level text 本次trace的等级: session:会话级别,在调用pl_trace_func_end函数或会话关闭前一直开启trace功能。 portal:portal级别,执行一次存储过程后自动关闭trace功能。 time:会话级别,在会话级别上添加语句执行时间显示。 threshold:会话级别,在time级别上只记录大于等于阈值的语句。 threshold float8 本次trace的阈值(单位:毫秒,仅在level为threshold时生效)。 父主题: Trace Function
  • GLOBAL_STAT_DATABASE_CONFLI CTS 显示数据库各节点冲突状态的统计信息(不同节点下,每个数据库状态信息不汇总求和),如表1所示。 表1 GLOBAL_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 node_name name 节点名称。 datid oid 数据库标识。 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • autovacuum_analyze_threshold 参数说明:触发对ASTORE表ANALYZE操作的删除、插入或更新元组的最小数量值。触发ANALYZE的阈值=autovacuum_analyze_threshold+reltuples(表上元组的个数)* autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时,才会对这个表执行ANALYZE操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响: 该参数设置得过低,会导致频繁的ANALYZE操作,增加系统开销,降低性能。 该参数设置得过高,表中的统计信息可能会过时,从而导致查询计划不准确,影响查询性能。
  • autovacuum_vacuum_cost_delay 参数说明:设置在自动VACUUM操作里使用的开销延迟数值。 参数类型:整型 参数单位:毫秒(ms) 取值范围:-1 ~ 100。其中-1表示使用常规的vacuum_cost_delay。 默认值:20 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • autovacuum_freeze_max_age 参数说明:指定ASTORE表pg_class.relfrozenxid字段在超过多少个事务后,会强制执行VACUUM操作。即使自动清理被禁用,系统也会启动AUTOVACUUM线程。清理操作还允许从pg_clog/子目录中删除旧文件。 参数类型:整型 参数单位:无 取值范围:100000 ~ 576460752303423487 默认值:4000000000 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。如果数据库中的ASTORE表经常进行大量的更新和删除操作,那么建议将该参数设置为较小的值,以便及时回收垃圾。如果数据库中的ASTORE表很少进行更新和删除操作,那么可以将该参数设置为较大的值,以减少自动垃圾回收的频率。 设置不当的风险与影响:在ASTORE表中: 该参数设置得过低,会导致频繁的自动垃圾回收操作,增加系统开销,降低性能。 该参数设置得过高,会导致自动垃圾回收的延迟,从而可能导致大量的无效数据占用磁盘空间,影响数据库性能。
  • autovacuum_analyze_scale_factor 参数说明:ANALYZE时表的规模因子,用于计算触发ANALYZE的阈值。触发ANALYZE的阈值=autovacuum_analyze_threshold+reltuples(表上元组的个数)*autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时,才会对这个表执行ANALYZE操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响: 该参数设置得过低,会导致频繁的ANALYZE操作,增加系统开销,降低性能。 该参数设置得过高,可能会导致ANALYZE的频率过低,表中的统计信息可能会过时,从而导致查询计划不准确,影响查询性能。
  • defer_csn_cleanup_time 参数说明:用来指定本地回收时间间隔。defer_csn_cleanup_time参数用于控制系统何时清理已过期的 CS N信息,指定了系统在多长时间内保留已过期的CSN信息。 参数类型:整型 参数单位:ms 取值范围:0 ~ 2147483647 默认值:5000(即5s) 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。如果系统的负载较轻,可以将defer_csn_cleanup_time设置为较长的时间。如果系统的负载较重,建议将defer_csn_cleanup_time设置为较短的时间。这样可以确保系统在忙碌时也能保持良好的性能。 设置不当的风险与影响:如果设置得太短,系统可能会频繁地清理已过期的CSN信息,从而导致性能下降。如果设置得太长,系统可能会占用过多的内存,从而导致系统变慢或崩溃。
  • 对大表的自动清理参数进行调优 AUTOVACUUM基于死亡元组百分比确认是否对特定表进行清理(详见自动清理规模因子参数autovacuum_vacuum_scale_factor,因此,对于元组较多的大表,默认参数下相对较难触发自动清理(例如表中元组超过一亿,死亡元组数量超过两千万才能触发一次清理),对于这种情况,可适当降低自动清理的规模因子,例如,可通过下面的方式进行手动调优: ALTER TABLE table_name SET (autovacuum_vacuum_scale_factor = 0.05); 如果期望自动清理不依赖死亡元组的比例触发,而是依赖死亡元组数量触发,可单独调整自动清理的阈值与规模因子参数,例如,可通过以下方式手动调优,让指定表死亡元组达到一万时即可触发自动清理。 ALTER TABLE table_name SET (autovacuum_vacuum_threshold = 10000); ALTER TABLE table_name SET (autovacuum_vacuum_scale_factor = 0.0);
  • autovacuum_vacuum_scale_factor 参数说明:VACUUM时表的规模因子,用于计算触发VACUUM的阈值。触发VACUUM的阈值=autovacuum_vacuum_threshold+reltuples(表上元组的个数)*autovacuum_vacuum_scale_factor。当表上被删除或更新的记录数超过阈值时,才会对这个表执行VACUUM操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.2 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置值取决于ASTORE表的负载和使用情况;如果是高写入负载的,则用户需要将该参数设置得更低,以便更频繁地清理表以避免性能下降。另一方面,如果是高读取负载的,则可以将该参数设置得更高,以避免在读取时不必要地浪费资源。 设置不当的风险与影响:在ASTORE表中: 该参数设置得太低,那么autovacuum线程可能会过于频繁地清理表,导致性能下降。 该参数设置得太高,那么表可能无法及时清理,会变得非常大,占用过多的磁盘空间。
  • autovacuum_vacuum_cost_limit 参数说明:设置在自动VACUUM操作里使用的开销限制数值。 参数类型:整型 参数单位:无 取值范围:-1 ~ 10000。其中-1表示使用常规的vacuum_cost_limit。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • 对自动清理进行参数调优 AUTOVACUUM清理速度与autovacuum_vacuum_cost_delay、autovacuum_vacuum_cost_limit等参数强相关,当业务表进行高并发写入时,使用默认的参数配置可能会出现AUTOVACUUM清理速度跟不上表空间膨胀场景,导致空间膨胀、性能下降等。例如,对Astore表进行高并发更新、插入删除,尤其是含有全局分区索引的大分区表(需要多次扫描清理全局分区索引),因此建议业务定时巡检确认空间膨胀情况,并对AUTOVACUUM参数进行针对性调优或定时在业务低峰期执行手动VACUUM,避免空间持续膨胀。
  • autovacuum_mode 参数说明:该参数仅在autovacuum设置为on的场景下生效,它控制autoanalyze和autovacuum的打开情况。 参数类型:枚举类型 参数单位:无 取值范围: analyze:表示只做autoanalyze。 vacuum:表示只做autovacuum。 mix:表示autoanalyze和autovacuum都做。 none:表示autoanalyze和autovacuum都不做。 默认值:mix 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • autovacuum 参数说明:控制数据库自动清理线程(autovacuum)的启动。自动清理线程运行的前提是将track_counts设置为on。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启数据库自动清理线程。 off:表示关闭数据库自动清理线程。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议: 如果希望系统在故障恢复后,具备自动清理两阶段事务的功能,请将autovacuum设置为on; 当设置autovacuum为on,autovacuum_max_workers为0时,表示系统不会自动进行autovacuum,只会在故障恢复后自动清理两阶段事务; 当设置autovacuum为on,autovacuum_max_workers大于0时,表示系统不仅会在故障恢复后自动清理两阶段事务,还可以自动进行autovacuum。 设置不当的风险与影响:在ASTORE表中,关闭该参数会导致表中有过多的不活跃行存在,可能会影响查询性能。
  • autovacuum_max_workers 参数说明:设置能同时运行的自动清理线程的最大数量,该参数的取值上限与GUC参数max_connections和job_queue_processes大小有关。 参数类型:整型 参数单位:无 取值范围:最小值为0(表示不会自动进行autovacuum),理论最大值为262143,实际最大值为动态值,计算公式为“262143 - max_inner_tool_connections - max_connections - max_concurrent_autonomous_transactions - job_queue_processes - 辅助线程数 – autovacuum的launcher线程数 - 1”,其中辅助线程数和autovacuum的launcher线程数由两个宏来指定,当前版本的默认值分别为20和2。 默认值:3 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:此参数设置越大,自动清理功能创建的线程数越多,占用的系统CPU和内存资源越多,所以设置时不建议设置过大,避免由于此参数设置过大导致内存无法分配或者占用过多CPU资源,导致数据库启动报错或业务受到影响。如果将该参数设置得过低,可能会导致autovacuum线程无法及时清理和回收不再使用的表空间,从而导致数据库膨胀和性能下降。
  • autovacuum_io_limits 参数说明:控制autovacuum线程每秒触发I/O的上限。 参数类型:整型 参数单位:无 取值范围:-1 ~ 1073741823。其中-1表示不控制,而是使用系统默认控制组。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议: 服务器有足够的磁盘I/O资源,可以将autovacuum_io_limits设置为较高的值,这将允许autovacuum线程更快地完成清理操作。 服务器磁盘I/O资源有限,可以将autovacuum_io_limits设置为较低的值。这将限制autovacuum线程使用的磁盘I/O资源,以避免对其他线程的影响。 设置不当的风险与影响: 设置为过高的值,可能会导致autovacuum线程使用过多的磁盘I/O资源,从而影响其他线程的性能。 设置为过低的值,可能会导致autovacuum线程无法有效地清理表数据,从而导致表数据过度膨胀,影响数据库性能。
  • autovacuum_naptime 参数说明:设置两次自动清理操作的时间间隔。 参数类型:整型 参数单位:秒(s) 取值范围:1 ~ 2147483。 默认值:600(即10min) 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值600,表示autovacuum_naptime为600s;带单位取值10min,表示autovacuum_naptime为10min。取值如果要带单位,必须为s、min、h、d。 设置建议:仅用Ustore表时推荐使用默认值。对于Astore表,设置值取决于用户的数据库环境和应用程序负载。如果数据库环境中有大量表的更新或删除操作,建议将该参数设置为较短的时间间隔,以确保及时清理无用的数据并避免数据库空间不足的情况。如果数据库环境中的更新或删除操作较少,则可以将该参数设置为较长的时间间隔,以减少自动清理线程的开销。 设置不当的风险与影响: 如果将autovacuum_naptime设置为过短的时间间隔,可能会导致autovacuum线程的开销过大,从而影响数据库的性能。 如果将autovacuum_naptime设置为过长的时间间隔,可能会导致无用的数据堆积,从而占用数据库空间,影响数据库的性能。
  • log_autovacuum_min_duration 参数说明:当自动清理的执行时间大于或者等于某个特定的值时,向服务器日志中记录自动清理执行的每一步操作。设置此选项有助于追踪自动清理的行为。 举例如下:将log_autovacuum_min_duration设置为250ms,表示记录所有运行大于或者等于250ms的自动清理命令的相关信息。 参数类型:整型 参数单位:毫秒(ms) 取值范围:-1 ~ 2147483647 当参数设置为0时,表示所有的自动清理操作都记录到日志中。 当参数设置为-1时,表示所有的自动清理操作都不记录到日志中。 当参数设置大于等于0时,当由于锁冲突的存在导致一个自动清理操作被跳过,记录一条消息(记录跳过autovacuum原因,便于审计)。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值600,表示log_autovacuum_min_duration为600ms;带单位取值10min,表示log_autovacuum_min_duration为10min。取值如果要带单位,必须为ms、s、min、h、d。 设置建议:一般默认为-1。如果需要监控自动VACUUM操作的性能,可以将log_autovacuum_min_duration设置为一个大于0的值,以记录持续时间超过该值的自动VACUUM操作的日志信息。 设置不当的风险与影响:如果设置为0或者过小,则可能会记录大量的日志信息,影响系统性能;如果设置过大,可能无法及时感知自动清理时间过久,导致清理速度不足或异常情况。
  • autoanalyze_timeout 参数说明:设置autoanalyze的超时时间。在对某张表做autoanalyze时,如果该表的analyze时长超过了autoanalyze_timeout,则自动取消该表此次analyze。 参数类型:整型 参数单位:秒(s) 取值范围:0 ~ 2147483,0表示没有超时限制。 默认值:300 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置值取决于数据库的负载和性能需求。如果数据库的负载较轻,可以适当地将autoanalyze_timeout设置大些,以便自动分析操作有足够的时间来完成。如果数据库的负载较重,则应该将autoanalyze_timeout设置小些,以便自动分析操作可以在短时间内完成,从而避免影响其他重要的数据库操作。 设置不当的风险与影响:autoanalyze操作会消耗一定的系统资源,如果该参数设置太大,可能会导致系统资源被过度消耗,从而影响数据库的性能。如果设置太小,autoanalyze操作可能无法完成,可能会导致统计信息不准确,从而影响查询的执行计划和性能。
  • autovacuum_vacuum_threshold 参数说明:触发对ASTORE表VACUUM操作的删除或更新元组的最小数量值。触发VACUUM的阈值=autovacuum_vacuum_threshold+reltuples(表上元组的个数)* autovacuum_vacuum_scale_factor。当表上被删除或更新的记录数超过阈值时,才会对这个表执行VACUUM操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:在ASTORE表中: 该参数设置得过低,会导致频繁的VACUUM操作,增加系统开销,降低性能。 该参数设置得过高,会导致表中过多的死亡行存在,可能会影响查询性能。
共100000条