华为云用户手册

  • 功能描述 检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。 设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以使用gs_guc命令设置相关运行时参数(checkpoint_segments,checkpoint_timeout和incremental_checkpoint_timeout)来调整这个原子化检查点的间隔。
  • 参数说明 IF EXISTS 如果不存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表不存在。 table_name [*] | ONLY table_name | ONLY ( table_name ) table_name是需要修改的表名。 若声明了ONLY选项,则只有那个表被更改。若未声明ONLY,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。 constraint_name 要删除的现有约束的名称。 index_name 索引名称。 storage_parameter 表的存储参数的名称。 透明数据加密选项: enable_tde(bool类型) 是否开启表的透明数据加密。开启的前提是打开透明数据加密开关GUC参数enable_tde,同时启用了KMS密钥管理服务,并正确配置了数据库实例主密钥ID GUC参数tde_cmk_id。 本参数仅支持行存表。不支持列存表、临时表。不支持ustore存储引擎。只有创建表时指定了enable_tde选项才支持修改此参数配置,切换加密开关状态不会改变加密算法和密钥信息。 取值范围:on/off。on表示开启透明数据加密,从off切换为on后,新数据写入数据页面时会自动加密,旧数据在更新数据页面时会自动加密。当前配置为off时,表示关闭透明数据加密,从on切换为off后,对于新写入的数据不再加密,对于已加密的旧数据在读取时可以自动解密,重新写回数据页面时则不再加密。 默认值:off 创建索引新增一个选项: parallel_workers(int类型) 表示创建索引时起的bgworker线程数量,例如2就表示将会起2个bgworker线程并发创建索引。 取值范围:[0,32],0表示关闭该功能。 默认值:不设置该参数,表示未开启并行建索引功能。 hasuids(bool类型) 默认值:off 参数开启:更新表元组时,为元组分配表级唯一标识id。 优化器统计信息固化新增一个选项: min_tuples (float8类型) 默认值:0 优化器基于统计信息估算表数据量大小时会取统计信息估算和该参数的较大值。 new_owner 表新拥有者的名称。 new_tablespace 表所属新的表空间名称。 column_name,column_1_name, column_2_name 现存的或新字段的名称。 data_type 新字段的类型,或者现存字段的新类型。 compress_mode 表字段的压缩可选项。该子句指定该字段优先使用的压缩算法。行存表不支持压缩。 collation 字段排序规则名称。可选字段COLLATE指定了新字段的排序规则,如果省略,排序规则为新字段的默认类型。排序规则可以使用“select * from pg_collation;”命令从pg_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 USING expression USING子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个USING子句。 ALTER TYPE的USING选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用ALTER TYPE语法做非常普遍性的转换。因为这个灵活性,USING表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在USING子句,ALTER TYPE也可能无法把缺省值转换成新的类型。在这种情况下,应该用DROP DEFAULT先删除缺省,执行ALTER TYPE,然后使用SET DEFAULT增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。 NOT NULL | NULL 设置列是否允许空值。 integer 带符号的整数常值。当使用PERCENT时表示按照表数据的百分比收集统计信息,integer的取值范围为0-100。 attribute_option 属性选项。 PLAIN | EXTERNAL | EXTENDED | MAIN 字段存储模式。 PLAIN必需用于定长的数值(比如integer)并且是内联的、不压缩的。 MAIN用于内联、可压缩的数据。 EXTERNAL用于外部保存、不压缩的数据。使用EXTERNAL将令在text和bytea字段上的子字符串操作更快,但付出的代价是增加了存储空间。 EXTENDED用于外部的压缩数据,EXTENDED是大多数支持非PLAIN存储的数据的缺省。 CHECK ( expression ) 每次将要插入的新行或者将要被更新的行必须使表达式结果为真才能成功,否则会抛出一个异常并且不会修改数据库。 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 目前,CHECK表达式不能包含子查询也不能引用除当前行字段之外的变量。 DEFAULT default_expr 给字段指定缺省值。 缺省表达式的数据类型必须和字段类型匹配。 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 GENERATED ALWAYS AS ( generation_expr ) STORED 该子句将字段创建为生成列,生成列的值在写入(插入或更新)数据时由generation_expr计算得到,STORED表示像普通列一样存储生成列的值。 生成表达式不能以任何方式引用当前行以外的其他数据。生成表达式不能引用其他生成列,不能引用系统列。生成表达式不能返回结果集,不能使用子查询,不能使用聚集函数,不能使用窗口函数。生成表达式调用的函数只能是不可变(IMMUTABLE)函数。 不能为生成列指定默认值。 生成列不能作为分区键的一部分。 生成列不能和ON UPDATE约束字句的CASCADE,SET NULL,SET DEFAULT动作同时指定。生成列不能和ON DELETE约束字句的SET NULL,SET DEFAULT动作同时指定。 修改和删除生成列的方法和普通列相同。删除生成列依赖的普通列,生成列被自动删除。不能改变生成列所依赖的列的类型。 生成列不能被直接写入。在INSERT或UPDATE命令中, 不能为生成列指定值, 但是可以指定关键字DEFAULT。 生成列的权限控制和普通列一样。 列存表、内存表MOT不支持生成列。外表中仅postgres_fdw支持生成列。 UNIQUE index_parameters UNIQUE ( column_name [, ... ] ) index_parameters UNIQUE约束表示表里的一个或多个字段的组合必须在全表范围内唯一。 PRIMARY KEY index_parameters PRIMARY KEY ( column_name [, ... ] ) index_parameters 主键约束表明表中的一个或者一些字段只能包含唯一(不重复)的非NULL值。 REFERENCES reftable [ ( refcolum ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ] (column constraint) FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ] (table constraint) 外键约束要求新表中一列或多列构成的组应该只包含、匹配被参考表中被参考字段值。若省略refcolum,则将使用reftable的主键。被参考列应该是被参考表中的唯一字段或主键。外键约束不能被定义在临时表和永久表之间。 参考字段与被参考字段之间存在三种类型匹配,分别是: MATCH FULL:不允许一个多字段外键的字段为NULL,除非全部外键字段都是NULL。 MATCH SIMPLE(缺省):允许任意外键字段为NULL。 MATCH PARTIAL:目前暂不支持。 另外,当被参考表中的数据发生改变时,某些操作也会在新表对应字段的数据上执行。ON DELETE子句声明当被参考表中的被参考行被删除时要执行的操作。ON UPDATE子句声明当被参考表中的被参考字段数据更新时要执行的操作。对于ON DELETE子句、ON UPDATE子句的可能动作: NO ACTION(缺省):删除或更新时,创建一个表明违反外键约束的错误。若约束可推迟,且若仍存在任何引用行,那这个错误将会在检查约束的时候产生。 RESTRICT:删除或更新时,创建一个表明违反外键约束的错误。与NO ACTION相同,只是动作不可推迟。 CASCADE:删除新表中任何引用了被删除行的行,或更新新表中引用行的字段值为被参考字段的新值。 SET NULL:设置引用字段为NULL。 SET DEFAULT:设置引用字段为它们的缺省值。 DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE 设置该约束是否可推迟。 DEFERRABLE:可以推迟到事务结尾使用SET CONSTRAINTS命令检查。 NOT DEFERRABLE:在每条命令之后马上检查。 INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。 INITIALLY DEFERRED:只有在事务结尾才检查它。 Ustore表不支持新增DEFERRABLE 以及 INITIALLY DEFERRED约束。 PARTIAL CLUSTER KEY 局部聚簇存储,列存表导入数据时按照指定的列(单列或多列),进行局部排序。 WITH ( {storage_parameter = value} [, ... ] ) 为表或索引指定一个可选的存储参数。 tablespace_name 索引所在表空间的名称。 COMPRESS|NOCOMPRESS NOCOMPRESS:如果指定关键字NOCOMPRESS则不会修改表的现有压缩特性。 COMPRESS:如果指定COMPRESS关键字,则对该表进行批量插入元组时触发该特性。行存表不支持压缩。 new_table_name 修改后新的表名称。 new_column_name 表中指定列修改后新的列名称。 new_constraint_name 修改后表约束的新名称。 new_schema 修改后新的模式名称。 CASCADE 级联删除依赖于被依赖字段或者约束的对象(比如引用该字段的视图)。 RESTRICT 如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。这是缺省行为。 schema_name 表所在的模式名称。
  • 语法格式 修改表的定义。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } action [, ... ]; 其中具体表操作action可以是以下子句之一: column_clause | ADD table_constraint [ NOT VALID ] | ADD table_constraint_using_index | VALIDATE CONSTRAINT constraint_name | DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] | CLUSTER ON index_name | SET WITHOUT CLUSTER | SET ( {storage_parameter = value} [, ... ] ) | RESET ( storage_parameter [, ... ] ) | OWNER TO new_owner | SET TABLESPACE new_tablespace | SET {COMPRESS|NOCOMPRESS} | TO { GROUP groupname | NODE ( nodename [, ... ] ) } | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) | DISABLE TRIGGER [ trigger_name | ALL | USER ] | ENABLE TRIGGER [ trigger_name | ALL | USER ] | ENABLE REPLICA TRIGGER trigger_name | ENABLE ALWAYS TRIGGER trigger_name | DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE | DISABLE ROW LEVEL SECURITY | ENABLE ROW LEVEL SECURITY | FORCE ROW LEVEL SECURITY | NO FORCE ROW LEVEL SECURITY | ENCRYPTION KEY ROTATION | INHERIT parents | NO INHERIT parents | OF type_name | NOT OF | REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING } ADD table_constraint [ NOT VALID ] 给表增加一个新的约束。 ADD table_constraint_using_index 根据已有唯一索引为表增加主键约束或唯一约束。 VALIDATE CONSTRAINT constraint_name 验证一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] 删除一个表上的约束。 CLUSTER ON index_name 为将来的CLUSTER(聚簇)操作选择默认索引。实际上并没有重新盘簇化处理该表。 SET WITHOUT CLUSTER 从表中删除最新使用的CLUSTER索引。这样会影响将来那些没有声明索引的CLUSTER(聚簇)操作。 SET ( {storage_parameter = value} [, ... ] ) 修改表的一个或多个存储参数。 RESET ( storage_parameter [, ... ] ) 重置表的一个或多个存储参数。与SET一样,根据参数的不同可能需要重写表才能获得想要的效果。 OWNER TO new_owner 将表、序列、视图的属主改变成指定的用户。 SET TABLESPACE new_tablespace 这种形式将表空间修改为指定的表空间并将相关的数据文件移动到新的表空间。但是表上的所有索引都不会被移动,索引可以通过ALTER INDEX语法的SET TABLESPACE选项来修改索引的表空间。 SET {COMPRESS|NOCOMPRESS} 修改表的压缩特性。表压缩特性的改变只会影响后续批量插入的数据的存储方式,对已有数据的存储毫无影响。也就是说,表压缩特性的修改会导致该表中同时存在着已压缩和未压缩的数据。行存表不支持压缩。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } 此语法仅在扩展模式(GUC参数support_extended_features为on时)下可用。该模式谨慎打开,主要供内部扩容工具使用,一般用户不应使用该模式。 ADD NODE ( nodename [, ... ] ) 此语法主要供内部扩容工具使用,一般用户不建议使用。 DELETE NODE ( nodename [, ... ] ) 此语法主要供内部缩容工具使用,一般用户不建议使用。 DISABLE TRIGGER [ trigger_name | ALL | USER ] 禁用trigger_name所表示的单个触发器,或禁用所有触发器,或仅禁用用户触发器(此选项不包括内部生成的约束触发器,例如,可延迟唯一性和排除约束的约束触发器)。 应谨慎使用此功能,因为如果不执行触发器,则无法保证原先期望的约束的完整性。 | ENABLE TRIGGER [ trigger_name | ALL | USER ] 启用trigger_name所表示的单个触发器,或启用所有触发器,或仅启用用户触发器。 | ENABLE REPLICA TRIGGER trigger_name 触发器触发机制受配置变量session_replication_role的影响,当复制角色为“origin”(默认值)或“local”时,将触发简单启用的触发器。 配置为ENABLE REPLICA的触发器仅在会话处于“replica”模式时触发。 | ENABLE ALWAYS TRIGGER trigger_name 无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。 | DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE 配置属于表的重写规则,已禁用的规则对系统来说仍然是可见的,只是在查询重写期间不被应用。语义为关闭/启动规则。由于关系到视图的实现,ON SELECT规则不可禁用。 配置为ENABLE REPLICA的规则将会仅在会话为"replica" 模式时启动,而配置为ENABLE ALWAYS的触发器将总是会启动,不考虑当前复制模式。规则触发机制也受配置变量session_replication_role的影响,类似于上述触发器。 | DISABLE/ENABLE ROW LEVEL SECURITY 开启或关闭表的行访问控制开关。 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见CREATE ROW LEVEL SECURITY POLICY章节。 | NO FORCE/FORCE ROW LEVEL SECURITY 强制开启或关闭表的行访问控制开关。 默认情况,表所有者不受行访问控制特性影响,但当强制开启表的行访问控制开关时,表的所有者(不包含系统管理员用户)会受影响。系统管理员可以绕过所有的行访问控制策略,不受影响。 | ENCRYPTION KEY ROTATION 透明数据加密密钥轮转。 只有在数据库开启透明加密功能,并且表的enable_tde选项为on时才可以进行表的数据加密密钥轮转。执行密钥轮转操作后,系统会自动向KMS申请创建新的密钥。密钥轮转后,使用旧密钥加密的数据仍使用旧密钥解密,新写入的数据使用新密钥加密。为保证加密数据安全,用户可根据加密表的新增数据量大小定期更新密钥,建议更新周期为两到三年。 INHERIT parent_table 将目标资料表加到指定的父资料表中成为新的子资料表。之后,针对父资料表的查询将会包含目标资料表的资料。要作为子资料表加入前,目标资料表必须已经包含父资料表的所有栏位。这些栏位必须具有可匹配的资料类别,并且如果他们在父资料表中具有NOT NULL的限制条件,那么他们必须在子资料表中也具有NOT NULL的限制条件。对于父资料表的所有CHECK限制条件,必须还有相对应的子资料表限制条件,除非父资料表中标记为不可继承。 NO INHERIT parent_table 从指定的父资料表的子资料表中产出目标资料表。针对父资料表的查询将不再包含从目标资料表中所产生的记录。 OF type_name 将表连接至一种复合类型,与CREATE TABLE OF选项创建表一样。表的字段的名称和类型必须精确匹配复合类型中的定义,不过oid系统字段允许不一样。表不能是从任何其他表继承的。这些限制确保CREATE TABLE OF选项允许一个相同的表定义。 NOT OF 将一个与某类型进行关联的表进行关联的解除。 REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING } 在逻辑复制场景下,指定该表的UPDATE和DELETE操作中旧元组的记录级别。 DEFAULT记录主键的列的旧值,没有主键则不记录。 USING INDEX记录命名索引覆盖的列的旧值,这些值必须是唯一的、不局部的、不可延迟的,并且仅包括标记为NOT NULL的列。 FULL记录该行中所有列的旧值。 NOTHING不记录有关旧行的信息。 在逻辑复制场景,解析该表的UPDATE和DELETE操作语句时,解析出的旧元组由以此方法记录的信息组成。对于有主键表该选项可设置为DEFAULT或FULL。对于无主键表该选项需设置为FULL,否则解码时旧元组将解析为空。一般场景不建议设置为NOTHING,旧元组会始终解析为空。 即使指定DEAULT或USING INDEX,当前ustore表列的旧值中也可能包含该行所有列的旧值,只有旧值涉及toast该配置选项才会生效。另外针对ustore表,选项NOTHING无效,实际效果等同于FULL。 其中列相关的操作column_clause可以是以下子句之一: ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | MODIFY column_name data_type | MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]| MODIFY column_name [ CONSTRAINT constraint_name ] NULL| DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] | ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] | ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } | ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL | ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer | ADD STATISTICS (( column_1_name, column_2_name [, ...] )) | DELETE STATISTICS (( column_1_name, column_2_name [, ...] )) | ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] 向表中增加一个新的字段。用ADD COLUMN增加一个字段,所有表中现有行都初始化为该字段的缺省值(如果没有声明DEFAULT子句,值为NULL)。 ADD ( { column_name data_type [ compress_mode ] } [, ...] ) 向表中增加多列。 MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] ) 修改表已存在字段的数据类型。 DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如视图。 DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。 ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] 改变表字段的数据类型。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型,方法是重新分析最初提供的表达式。 ALTER TYPE要求重写整个表的特性有时候是一个优点,因为重写的过程消除了表中没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间,最快的方法是 ALTER TABLE table ALTER COLUMN anycol TYPE anytype; 这里的anycol是任何在表中还存在的字段,而anytype是和该字段的原类型一样的类型。这样的结果是在表上没有任何可见的语意的变化,但是这个命令强制重写,这样就删除了不再使用的数据。 ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } 为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的INSERT命令,它们不会修改表中已经存在的行。也可以为视图创建缺省,这个时候它们是在视图的ON INSERT规则应用之前插入到INSERT句中的。 ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL 修改一个字段是否允许NULL值或者拒绝NULL值。如果表在字段中包含非NULL,则只能使用SET NOT NULL。 ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer 为随后的ANALYZE操作设置针对每个字段的统计收集目标。目标的范围可以在0到10000之内设置。设置为-1时表示重新恢复到使用系统缺省的统计目标。 {ADD | DELETE} STATISTICS ((column_1_name, column_2_name [, ...])) 用于添加和删除多列统计信息声明(不实际进行多列统计信息收集)(当前特性是实验室特性,使用时请联系华为工程师提供技术支持),以便在后续进行全表或全库analyze时进行多列统计信息收集。每组多列统计信息最多支持32列。不支持添加/删除多列统计信息声明的表:系统表、外表。 ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) 设置/重置属性选项。 目前,属性选项只定义了n_distinct和n_distinct_inherited。n_distinct影响表本身的统计值,而n_distinct_inherited影响表及其继承子表的统计。目前,只支持SET/RESET n_distinct参数,禁止SET/RESET n_distinct_inherited参数。 ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } 为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。仅支持对行存表的设置;对列存表没有意义,执行时报错。SET STORAGE本身并不改变表上的任何东西,只是设置将来的表操作时,建议使用的策略。 其中列约束column_constraint为: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | GENERATED ALWAYS AS ( generation_expr ) STORED | UNIQUE index_parameters | PRIMARY KEY index_parameters | ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中列的压缩可选项compress_mode为: [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ] 其中根据已有唯一索引为表增加主键约束或唯一约束table_constraint_using_index为: [ CONSTRAINT constraint_name ] { UNIQUE | PRIMARY KEY } USING INDEX index_name [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中表约束table_constraint为: [ CONSTRAINT constraint_name ] { CHECK ( expression ) | UNIQUE ( column_name [, ... ] ) index_parameters | PRIMARY KEY ( column_name [, ... ] ) index_parameters | PARTIAL CLUSTER KEY ( column_name [, ... ] } FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中索引参数index_parameters为: [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ]
  • 注意事项 表的所有者、被授予了表ALTER权限的用户或被授予ALTER ANY TABLE的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。但要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员,且该用户是新所有者角色的成员。 不能修改分区表的tablespace,但可以修改分区的tablespace。 不支持修改存储参数ORIENTATION。 SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。 列存表只支持PARTIAL CLUSTER KEY、UNIQUE、PRIMARY KEY表级约束,不支持外键等表级约束。 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名称、支持更改表空间,支持删除字段DROP COLUMN。对于添加的字段和修改的字段类型要求是列存支持的数据类型。ALTER TYPE的USING选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。 列存表支持的字段约束包括NULL、NOT NULL和DEFAULT常量值、UNIQUE和PRIMARY KEY;对字段约束的修改当前只支持对DEFAULT值的修改(SET DEFAULT)和删除(DROP DEFAULT),暂不支持对非空约束NULL/NOT NULL的修改。
  • 示例 --向gs_global_config系统表中插入单个弱口令。 openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'); --向gs_global_config系统表中插入多个弱口令。 openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password2'),('password3'); --清空gs_global_config系统表中所有弱口令。 openGauss=# DROP WEAK PASSWORD DICTIONARY; --查看现有弱口令。 openGauss=# SELECT * FROM gs_global_config WHERE NAME LIKE 'weak_password';
  • 功能描述 创建分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。 常见的分区方案有范围分区(Range Partitioning)、间隔分区(Interval Partitioning)、哈希分区(Hash Partitioning)、列表分区(List Partitioning)、数值分区(Value Partition)等。目前行存表支持范围分区、间隔分区、哈希分区、列表分区,列存表仅支持范围分区。 范围分区是根据表的一列或者多列,将要插入表的记录分为若干个范围,这些范围在不同的分区里没有重叠。为每个范围创建一个分区,用来存储相应的数据。 范围分区的分区策略是指记录插入分区的方式。目前范围分区仅支持范围分区策略。 范围分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。这是最常用的分区策略。 间隔分区是一种特殊的范围分区,相比范围分区,新增间隔值定义,当插入记录找不到匹配的分区时,可以根据间隔值自动创建分区。 间隔分区只支持基于表的一列分区,并且该列只支持TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE数据类型。 间隔分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则根据分区键值和表定义信息自动创建一个分区,然后将记录插入新分区中,新创建的分区数据范围等于间隔值。 哈希分区是根据表的一列,为每个分区指定模数和余数,将要插入表的记录划分到对应的分区中,每个分区所持有的行都需要满足条件:分区键的值除以为其指定的模数将产生为其指定的余数。 哈希分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则返回报错和提示信息。 列表分区是根据表的一列,将要插入表的记录通过每一个分区中出现的键值划分到对应的分区中,这些键值在不同的分区里没有重叠。为每组键值创建一个分区,用来存储相应的数据。 列表分区策略:根据分区键值将记录映射到已创建的某个分区上,如果可以映射到已创建的某一分区上,则把记录插入到对应的分区上,否则给出报错和提示信息。 分区可以提供若干好处: 某些类型的查询性能可以得到极大提升。特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下。分区可以减少数据的搜索空间,提高数据访问效率。 当查询或更新一个分区的大部分记录时,连续扫描那个分区而不是访问整个表可以获得巨大的性能提升。 如果需要大量加载或者删除的记录位于单独的分区上,则可以通过直接读取或删除那个分区以获得巨大的性能提升,同时还可以避免由于大量DELETE导致的VACUUM超载(哈希分区不支持删除分区)。
  • 语法格式 CREATE TABLE [ IF NOT EXISTS ] partition_table_name( [ { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option [...] ] }[, ... ]] ) [ WITH ( {storage_parameter = value} [, ... ] ) ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ] PARTITION BY { {RANGE (partition_key) [ INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] ] ( partition_less_than_item [, ... ] )} | {RANGE (partition_key) [ INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] ] ( partition_start_end_item [, ... ] )} | {LIST (partition_key) ( PARTITION partition_name VALUES (list_values) [TABLESPACE tablespace_name][, ... ])} | {HASH (partition_key) ( PARTITION partition_name [TABLESPACE tablespace_name][, ... ])} } [ { ENABLE | DISABLE } ROW MOVEMENT ]; 列约束column_constraint: [ CONSTRAINT constraint_name ]{ NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_e xpr | GENERATED ALWAYS AS ( generation_expr ) STORED | UNIQUE index_parameters | PRIMARY KEY index_parameters | REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 表约束table_constraint: [ CONSTRAINT constraint_name ]{ CHECK ( expression ) | UNIQUE ( column_name [, ... ] ) index_parameters | PRIMARY KEY ( column_name [, ... ] ) index_parameters | FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] like选项like_option: { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS| ALL } 索引存储参数index_parameters: [ WITH ( {storage_parameter = value} [, ... ] ) ][ USING INDEX TABLESPACE tablespace_name ]
  • 参数说明 IF NOT EXISTS 如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。 partition_table_name 分区表的名称。 取值范围:字符串,要符合标识符的命名规范。 column_name 新表中要创建的字段名。 取值范围:字符串,要符合标识符的命名规范。 data_type 字段的数据类型。 COLLATE collation COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select * from pg_collation;”命令从pg_collation系统表中查询,默认的排序规则为查询结果中以default开始的行。 CONSTRAINT constraint_name 列约束或表约束的名称。可选的约束子句用于声明约束,新行或者更新的行必须满足这些约束才能成功插入或更新。 定义约束有两种方法: 列约束:作为一个列定义的一部分,仅影响该列。 表约束:不和某个列绑在一起,可以作用于多个列。 LIKE source_table [ like_option ... ] LIKE子句声明一个表,新表自动从这个表里面继承所有字段名及其数据类型和非空约束。 和INHERITS不同,新表与原来的表之间在创建动作完毕之后是完全无关的。在源表做的任何修改都不会传播到新表中,并且也不可能在扫描源表的时候包含新表的数据。 字段缺省表达式只有在声明了INCLUDING DEFAULTS之后才会包含进来。缺省是不包含缺省表达式的,即新表中所有字段的缺省值都是NULL。 如果指定了INCLUDING GENERATED,则源表列的生成表达式会复制到新表中。默认不复制生成表达式。 非空约束将总是复制到新表中,CHECK约束则仅在指定了INCLUDING CONSTRAINTS的时候才复制,而其他类型的约束则永远也不会被复制。此规则同时适用于表约束和列约束。 和INHERITS不同,被复制的列和约束并不使用相同的名称进行融合。如果明确的指定了相同的名称或者在另外一个LIKE子句中,将会报错。 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 如果指定了INCLUDING STORAGE,则拷贝列的STORAGE设置也将被拷贝,默认情况下不包含STORAGE设置。 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释也会被拷贝过来。默认情况下,不拷贝源表的注释。 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)也将拷贝至新表。默认情况下,不拷贝源表的存储参数。 INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和INCLUDING RELOPTIONS的内容。 WITH ( storage_parameter [= value] [, ... ] ) 这个子句为表或索引指定一个可选的存储参数。参数的详细描述如下所示: FILLFACTOR 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。该参数对于列存表没有意义。 取值范围:10~100 ORIENTATION 决定了表的数据的存储方式。 取值范围: COLUMN:表的数据将以列式存储。 ROW(缺省值):表的数据将以行式存储。 orientation不支持修改。 STORAGE_TYPE 指定存储引擎类型,该参数设置成功后就不再支持修改。 取值范围: USTORE,表示表支持Inplace-Update存储引擎。特别需要注意,使用USTORE表,必须要开启track_counts和track_activities参数,否则会引起空间膨胀。 ASTORE,表示表支持Append-Only存储引擎。 默认值: 不指定表时,默认是Append-Only存储。 COMPRESSION 列存表的有效值为LOW/MIDDLE/HIGH/YES/NO,压缩级别依次升高,默认值为LOW。 行存表不支持压缩。 MAX_BATCHROW 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对列存表有效。 取值范围:10000~60000,默认60000。 PARTIAL_CLUSTER_ROWS 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对列存表有效。 取值范围:大于等于MAX_BATCHROW,建议取值为MAX_BATCHROW的整数倍数。 DELTAROW_THRESHOLD 预留参数。该参数只对列存表有效。 取值范围:0~9999 segment 使用段页式的方式存储。本参数仅支持行存表。不支持列存表、临时表、unlog表。不支持ustore存储引擎。 取值范围:on/off 默认值:off COMPRESS / NOCOMPRESS 创建一个新表时,需要在创建表语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。行存表不支持压缩。 缺省值为NOCOMPRESS,即不对元组数据进行压缩。 TABLESPACE tablespace_name 指定新表将要在tablespace_name表空间内创建。如果没有声明,将使用默认表空间。 PARTITION BY RANGE(partition_key) 创建范围分区。partition_key为分区键的名称。 (1)对于从句是VALUES LESS THAN的语法格式: 对于从句是VALUE LESS THAN的语法格式,范围分区策略的分区键最多支持4列。 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE PRECISION、CHARACTER VARYING(n)、VARCHAR(n)、CHARACTER(n)、CHAR(n)、CHARACTER、CHAR、TEXT、NVARCHAR、NVARCHAR2、NAME、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。 (2)对于从句是START END的语法格式: 对于从句是START END的语法格式,范围分区策略的分区键仅支持1列。 该情形下,分区键支持的数据类型为:SMALLINT、INTEGER、BIGINT、DECIMAL、NUMERIC、REAL、DOUBLE PRECISION、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。 (3)对于指定了INTERVAL子句的语法格式: 对于指定了INTERVAL子句的语法格式,范围分区策略的分区键仅支持1列。 该情形下,分区键支持的数据类型为:TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。 PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } ) 指定各分区的信息。partition_name为范围分区的名称。partition_value为范围分区的上边界,取值依赖于partition_key的类型。MAXVALUE表示分区的上边界,它通常用于设置最后一个范围分区的上边界。 每个分区都需要指定一个上边界。 分区上边界的类型应当和分区键的类型一致。 分区列表是按照分区上边界升序排列的,值较小的分区位于值较大的分区之前。 PARTITION partition_name {START (partition_value) END (partition_value) EVERY (interval_value)} | {START (partition_value) END (partition_value|MAXVALUE)} | {START(partition_value)} | {END (partition_value | MAXVALUE)} 指定各分区的信息,各参数意义如下: partition_name:范围分区的名称或名称前缀,除以下情形外(假定其中的partition_name是p1),均为分区的名称。 若该定义是START+END+EVERY从句,则语义上定义的分区的名称依次为p1_1, p1_2, ...。例如对于定义“PARTITION p1 START(1) END(4) EVERY(1)”,则生成的分区是:[1, 2), [2, 3) 和 [3, 4),名称依次为p1_1, p1_2和p1_3,即此处的p1是名称前缀。 若该定义是第一个分区定义,且该定义有START值,则范围(MINVALUE, START)将自动作为第一个实际分区,其名称为p1_0,然后该定义语义描述的分区名称依次为p1_1, p1_2, ...。例如对于完整定义“PARTITION p1 START(1), PARTITION p2 START(2)”,则生成的分区是:(MINVALUE, 1), [1, 2) 和 [2, MAXVALUE),其名称依次为p1_0, p1_1和p2,即此处p1是名称前缀,p2是分区名称。这里MINVALUE表示最小值。 partition_value:范围分区的端点值(起始或终点),取值依赖于partition_key的类型,不可是MAXVALUE。 interval_value:对[START,END) 表示的范围进行切分,interval_value是指定切分后每个分区的宽度,不可是MAXVALUE;如果(END-START)值不能整除以EVERY值,则仅最后一个分区的宽度小于EVERY值。 MAXVALUE:表示最大值,它通常用于设置最后一个范围分区的上边界。 在创建分区表若第一个分区定义含START值,则范围(MINVALUE,START)将自动作为实际的第一个分区。 START END语法需要遵循以下限制: 每个partition_start_end_item中的START值(如果有的话,下同)必须小于其END值; 相邻的两个partition_start_end_item,第一个的END值必须等于第二个的START值; 每个partition_start_end_item中的EVERY值必须是正向递增的,且必须小于(END-START)值; 每个分区包含起始值,不包含终点值,即形如:[起始值,终点值),起始值是MINVALUE时则不包含; 一个partition_start_end_item创建的每个分区所属的TABLESPACE一样; partition_name作为分区名称前缀时,其长度不要超过57字节,超过时自动截断; 在创建、修改分区表时请注意分区表的分区总数不可超过最大限制(1048575); 在创建分区表时START END与LESS THAN语法不可混合使用。 即使创建分区表时使用START END语法,备份(gs_dump)出的SQL语句也是VALUES LESS THAN语法格式。 INTERVAL ('interval_expr') [ STORE IN (tablespace_name [, ... ] ) ] 间隔分区定义信息。 interval_expr:自动创建分区的间隔,例如:1 day、1 month。 STORE IN (tablespace_name [, ... ] ):指定存放自动创建分区的表空间列表,如果有指定,则自动创建的分区从表空间列表中循环选择使用,否则使用分区表默认的表空间。 列存表不支持间隔分区。 PARTITION BY LIST(partition_key) 创建列表分区。partition_key为分区键的名称。 对于partition_key,列表分区策略的分区键仅支持1列。 对于从句是VALUES (list_values)的语法格式,list_values中包含了对应分区存在的键值,每个分区的键值数量不超过64个。 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR(n)、CHAR、BPCHAR、NVARCHAR、NVARCHAR2、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。分区个数不能超过1048575个。 PARTITION BY HASH(partition_key) 创建哈希分区。partition_key为分区键的名称。 对于partition_key,哈希分区策略的分区键仅支持1列。 分区键支持的数据类型为:INT1、INT2、INT4、INT8、NUMERIC、VARCHAR(n)、CHAR、BPCHAR、TEXT、NVARCHAR、NVARCHAR2、TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)] [WITH TIME ZONE]、DATE。分区个数不能超过1048575个。 { ENABLE | DISABLE } ROW MOVEMENT 行迁移开关。 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 取值范围: ENABLE(缺省值):行迁移开关打开。 DISABLE:行迁移开关关闭。 在打开行迁移开关情况下,并发update、delete操作可能会报错,原因如下: 目前GaussDB astore引擎下,update和delete操作对于旧数据都是标记为已删除。在打开行迁移开关情况下,如果更新分区键时,导致了跨分区更新,目前GaussDB astore引擎下,会把旧分区中旧数据标记为已删除,在新分区中新增加一条数据,无法通过旧数据找到新数据。 在update和update并发、delete和delete并发、update和delete并发三个并发场景下,如果并发操作同一行数据时,数据跨分区和非跨分区结果有不同的行为。 对于数据非跨分区结果,第一个操作执行完后,第二个操作不会报错。 如果第一个操作是update,第二个操作能成功找到最新的数据,之后对新数据操作。 如果第一个操作是delete,第二个操作看到当前数据已经被删除而且找不到最新数据,就终止操作。 对于数据跨分区结果,第一个操作执行完后,第二个操作会报错。 如果第一个操作是update,由于新数据在新分区中,第二个操作不能成功找到最新的数据,就无法操作,之后会报错。 如果第一个操作是delete,第二个操作看到当前数据已经被删除而且找不到最新数据,但无法判断删除旧数据的操作是update还是delete。如果是update,报错处理。如果是delete,终止操作。为了保持数据的正确性,只能报错处理。 如果是update和update并发,update和delete并发场景,需要串行执行才能解决问题,如果是delete和delete并发,关闭行迁移开关可以解决问题。
  • 注意事项 唯一约束和主键约束的约束键包含所有分区键将为约束创建LOCAL索引,否则创建GLOBAL索引。 目前哈希分区和列表分区仅支持单列构建分区键,暂不支持多列构建分区键。 只需要有间隔分区表的INSERT权限,往该表INSERT数据时就可以自动创建分区。 对于分区表PARTITION FOR (values)语法,values只能是常量。 对于分区表PARTITION FOR (values)语法,values在需要数据类型转换时,建议使用强制类型转换,以防隐式类型转换结果与预期不符。 分区数最大值为1048575个,一般情况下业务不可能创建这么多分区,这样会导致内存不足。应参照参数local_syscache_threshold的值合理创建分区,分区表使用内存大致为(分区数 * 3 / 1024)MB。理论上分区占用内存不允许大于local_syscache_threshold的值,同时还需要预留部分空间以供其他功能使用。 指定分区语句目前不能走全局索引扫描。
  • SUMMARY_STAT_BAD_BLOCK 获得数据库内汇聚的表、索引等文件的读取失败信息。 表1 SUMMARY_STAT_BAD_BLOCK字段 名称 类型 描述 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 forknum bigint fork编号。 error_count bigint error的数量。 first_time timestamp with time zone 坏块第一次出现的时间。 last_time timestamp with time zone 坏块最后出现的时间。 父主题: Object
  • STAT_BAD_BLOCK 获得当前节点表、索引等文件的读取失败信息。 表1 STAT_BAD_BLOCK字段 名称 类型 描述 nodename text 数据库进程名称。 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 bucketid smallint 一致性hash bucket ID。 forknum integer fork编号。 error_count integer error的数量。 first_time timestamp with time zone 坏块第一次出现的时间。 last_time timestamp with time zone 坏块最后出现的时间。 父主题: Object
  • SUMMARY_STAT_XACT_USER_FUNCTIONS 视图包含数据库内汇聚的本事务内函数执行的统计信息。 表1 SUMMARY_STAT_XACT_USER_FUNCTIONS字段 名称 类型 描述 schemaname name 模式的名称。 funcname name 函数名称。 calls numeric 函数被调用的次数。 total_time double precision 函数的总执行时长。 self_time double precision 当前线程调用函数的总的时长。 父主题: Object
  • STAT_XACT_USER_FUNCTIONS 视图包含当前节点本事务内函数执行的统计信息。 表1 STAT_XACT_USER_FUNCTIONS字段 名称 类型 描述 funcid oid 函数标识。 schemaname name 模式的名称。 funcname name 函数名称。 calls bigint 函数被调用的次数。 total_time double precision 函数的总执行时长。 self_time double precision 当前线程调用函数的总的时长。 父主题: Object
  • SUMMARY_STAT_XACT_USER_TABLES 显示数据库内汇聚的命名空间中用户表的事务状态信息。 表1 SUMMARY_STAT_XACT_USER_TABLES字段 名称 类型 描述 schemaname name 此表的模式名。 relname name 表名。 seq_scan numeric 此表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 此表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(比如没有更新所需的单独索引)。 父主题: Object
  • STAT_XACT_USER_TABLES 显示当前节点命名空间中用户表的事务状态信息。 表1 STAT_XACT_USER_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表的模式名。 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
  • GLOBAL_STAT_XACT_SYS_TABLES 显示各节点命名空间中系统表的事务状态信息。 表1 GLOBAL_STAT_XACT_SYS_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表的模式名。 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
  • SUMMARY_STAT_XACT_SYS_TABLES 显示数据库内汇聚的命名空间中系统表的事务状态信息。 表1 SUMMARY_STAT_XACT_SYS_TABLES字段 名称 类型 描述 schemaname name 此表的模式名。 relname name 表名。 seq_scan numeric 此表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 此表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(比如没有更新所需的单独索引)。 父主题: Object
  • GLOBAL_STAT_XACT_ALL_TABLES 显示各节点的命名空间中所有普通表和toast表的事务状态信息。 表1 GLOBAL_STAT_XACT_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表的模式名。 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
  • STAT_XACT_SYS_TABLES 显示当前节点命名空间中系统表的事务状态信息。 表1 STAT_XACT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表的模式名。 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
  • GLOBAL_STAT_DATABASE 视图将包含数据库中各节点的每个数据库的每一行,显示数据库统计。 表1 GLOBAL_STAT_DATABASE字段 名称 类型 描述 node_name name 节点名称。 datid oid 数据库的OID。 datname name 这个数据库的名称。 numbackends integer 当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。 xact_commit bigint 此数据库中已经提交的事务数。 xact_rollback bigint 此数据库中已经回滚的事务数。 blks_read bigint 在这个数据库中读取的磁盘块的数量。 blks_hit bigint 高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括数据库内核缓冲区高速缓存,没有操作系统的文件系统缓存)。 tup_returned bigint 通过数据库查询返回的行数。 tup_fetched bigint 通过数据库查询抓取的行数。 tup_inserted bigint 通过数据库查询插入的行数。 tup_updated bigint 通过数据库查询更新的行数。 tup_deleted bigint 通过数据库查询删除的行数。 conflicts bigint 由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。 temp_files bigint 通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。 temp_bytes bigint 通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • SUMMARY_STAT_XACT_ALL_TABLES 显示数据库内汇聚的命名空间中所有普通表和toast表的事务状态信息。 表1 SUMMARY_STAT_XACT_ALL_TABLES字段 名称 类型 描述 schemaname name 此表的模式名。 relname name 表名。 seq_scan numeric 此表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 此表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(比如没有更新所需的单独索引)。 父主题: Object
  • STAT_XACT_ALL_TABLES 显示命名空间中所有普通表和toast表的事务状态信息。 表1 STAT_XACT_ALL_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表的模式名。 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
  • SUMMARY_STAT_DATABASE 视图将包含数据库内汇聚的每个数据库的每一行,显示数据库统计。 表1 SUMMARY_STAT_DATABASE 名称 类型 描述 datname name 这个数据库的名称。 numbackends bigint 当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。 xact_commit numeric 此数据库中已经提交的事务数。 xact_rollback numeric 此数据库中已经回滚的事务数。 blks_read numeric 在这个数据库中读取的磁盘块的数量。 blks_hit numeric 高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括GaussDB缓冲区高速缓存,没有操作系统的文件系统缓存)。 tup_returned numeric 通过数据库查询返回的行数。 tup_fetched numeric 通过数据库查询抓取的行数。 tup_inserted bigint 通过数据库查询插入的行数。 tup_updated bigint 通过数据库查询更新的行数。 tup_deleted bigint 通过数据库查询删除的行数。 conflicts bigint 由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。 temp_files numeric 通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。 temp_bytes numeric 通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • SUMMARY_STAT_DATABASE_CONFLICTS 显示数据库内汇聚的数据库冲突状态的统计信息。 表1 SUMMARY_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • STAT_DATABASE_CONFLICTS 显示当前节点数据库冲突状态的统计信息。 表1 STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datid oid 数据库标识。 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • STAT_DATABASE 视图将包含本节点中每个数据库的统计信息。 表1 STAT_DATABASE字段 名称 类型 描述 datid oid 数据库的OID。 datname name 此数据库的名称。 numbackends integer 当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。 xact_commit bigint 此数据库中已经提交的事务数。 xact_rollback bigint 此数据库中已经回滚的事务数。 blks_read bigint 在这个数据库中读取的磁盘块的数量。 blks_hit bigint 高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括数据库缓冲区高速缓存,没有操作系统的文件系统缓存)。 tup_returned bigint 通过数据库查询返回的行数。 tup_fetched bigint 通过数据库查询抓取的行数。 tup_inserted bigint 通过数据库查询插入的行数。 tup_updated bigint 通过数据库查询更新的行数。 tup_deleted bigint 通过数据库查询删除的行数。 conflicts bigint 由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。 temp_files bigint 通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。 temp_bytes bigint 通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • SUMMARY_STAT_ALL_INDEXES 显示GaussDB数据库的每个索引的访问统计信息。 表1 SUMMARY_STAT_ALL_INDEXES字段 名称 类型 描述 schemaname name 索引中模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan numeric 索引上开始的索引扫描数。 idx_tup_read numeric 通过索引上扫描返回的索引项数。 idx_tup_fetch numeric 通过使用索引的简单索引扫描抓取的活表行数。 父主题: Object
  • GLOBAL_STAT_ALL_INDEXES 将包含各节点数据库中的每个索引行,显示访问特定索引的统计。 表1 GLOBAL_STAT_ALL_INDEXES字段 名称 类型 描述 node_name name 节点名称。 relid oid 这个索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引中模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 索引上开始的索引扫描数。 idx_tup_read bigint 通过索引上扫描返回的索引项数。 idx_tup_fetch bigint 通过使用索引的简单索引扫描抓取的活表行数。 父主题: Object
  • GLOBAL_STAT_ALL_TABLES 得到各节点数据中每个表的一行(包括TOAST表)的统计信息。 表1 GLOBAL_STAT_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表的模式名。 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 估计死行数。 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守护进程分析的次数。 父主题: Object
  • SUMMARY_STAT_ALL_TABLES 显示数据库内汇聚数据库中每个表的一行(包括TOAST表)的统计信息。 表1 SUMMARY_STAT_ALL_TABLES字段 名称 类型 描述 schemaname name 此表的模式名。 relname name 表名。 seq_scan numeric 此表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 此表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(比如没有更新所需的单独索引)。 n_live_tup numeric 估计活跃行数。 n_dead_tup numeric 估计死行数。 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 numeric 这个表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count numeric 这个表被autovacuum清理的次数。 analyze_count numeric 这个表被手动分析的次数。 autoanalyze_count numeric 这个表被autovacuum守护进程分析的次数。 父主题: Object
共100000条