华为云用户手册

  • 语法格式 值替换插入。 REPLACE [ INTO ] table_name [ PARTITION ( partition_name [, ... ] ) ] [ ( col_name [, ... ] ) ] { VALUES | VALUE } ( value [, ... ] ) [, ... ]; 查询替换插入。 REPLACE [ INTO ] table_name [ PARTITION ( partition_name [, ... ] ) ] [ ( col_name [, ... ] ) ] query; 设置指定字段值。 REPLACE [INTO] table_name [ PARTITION ( partition_name [, ... ] ) ] SET col_name = value [, ... ];
  • 参数说明 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 col_name 目标表中的字段名。 字段名可以有子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用NULL填充。例如,向一个复合类型中的某些字段插入数据,那么其他字段将是NULL。 目标字段(col_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果VALUE子句和QUERY中只提供了N个字段,则目标字段为前N个字段。 VALUE子句和QUERY提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 PARTITION ( partition_name [, ... ] ) 指定分区插入操作。其中partition_name为分区名。 如果VALUE子句的值和指定分区不一致,结果会提示异常。 value 待插入的值,value格式为: { expression | DEFAULT } expression表示赋予对应列一个有效表达式或值。 向表中字段插入单引号 " ' "时需要使用单引号自身进行转义。 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。 DEFAULT表示对应字段名的缺省值。如果没有缺省值,则为NULL。 query 一个查询语句(SELECT语句),将查询结果作为插入的数据。
  • 示例 --创建一个新表。 gaussdb=# CREATE TABLE test(f1 int primary key, f2 int, f3 int); --插入数据。 gaussdb=# INSERT INTO test VALUES(1, 1, 1), (2, 2, 2), (3, 3, 3); INSERT 0 3 --值替换插入数据。 gaussdb=# REPLACE INTO test VALUES(1, 11, 11); REPLACE 0 2 --查询值替换插入的结果。 gaussdb=# SELECT * FROM test WHERE f1 = 1; f1 | f2 | f3 ----+----+---- 1 | 11 | 11 (1 row) --查询替换插入数据。 gaussdb=# REPLACE INTO test SELECT 2, 22, 22; REPLACE 0 2 --查询查询替换插入的结果。 gaussdb=# SELECT * FROM test WHERE f1 = 2; f1 | f2 | f3 ----+----+---- 2 | 22 | 22 (1 row) --设置指定字段替换插入数据。 gaussdb=# REPLACE INTO test SET f1 = f1 + 3, f2 = f1 * 10 + 3, f3 = f2; REPLACE 0 2 --查询设置指定字段替换插入数据的结果。 gaussdb=# SELECT * FROM test WHERE f1 = 3; f1 | f2 | f3 ----+----+---- 3 | 33 | 33 (1 row) --删除表格。 gaussdb=# DROP TABLE test;
  • upgrade_mode 参数说明:标示升级模式。该参数属于升级参数,不建议用户自己修改。 该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 取值范围:整型,0~2147483647‬ 0表示不在升级过程中或者就地升级和灰度升级的小版本升级过程中。 1表示在就地升级大版本升级过程中(执行升级命令,过了检查阶段生效)。 2表示在灰度升级大版本升级过程中(执行升级命令,过了检查阶段生效)。 默认值:0 用户执行完新包的前置命令,切回集群用户,source环境变量后,通过gs_upgradectl -t chose-strategy命令查询是大版本升级还是小版本升级。 返回Upgrade strategy: large-binary-upgrade 代表大版本升级。 返回Upgrade strategy: small-binary-upgrade 代表小版本升级。
  • GLOBAL_COMM_STATUS GLOBAL_COMM_STATUS视图展示所有DN的TCP代理通信库状态,如表1所示。 表1 GLOBAL_COMM_STATUS字段 名称 类型 描述 node_name text 节点名称。 rxpck_rate integer 节点通信库接收速率,单位Byte/s。 txpck_rate integer 节点通信库发送速率,单位Byte/s。 rxkbyte_rate bigint bigint节点通信库接收速率,单位KByte/s。 txkbyte_rate bigint bigint节点通信库发送速率,单位KByte/s。 buffer bigint cmailbox的buffer大小。 memkbyte_libcomm bigint libcomm线程通信内存大小,单位Byte。 memkbyte_libpq bigint libpq线程通信内存大小,单位Byte。 used_pm integer postmaster线程实时使用率。 used_sflow integer gs_sender_flow_controller线程实时使用率。 used_rflow integer gs_receiver_flow_controller线程实时使用率。 used_rloop integer 多个gs_receivers_loop线程中高的实时使用率。 stream integer 当前使用的逻辑连接总数。 父主题: Comm
  • 语法格式 对一个表进行聚簇排序。 1 CLUSTER [ VERBOSE ] table_name [ USING index_name ]; 对一个分区进行聚簇排序。 1 CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ]; 对已做过聚簇的表重新进行聚簇。 1 CLUSTER [ VERBOSE ];
  • 示例 对表进行聚簇排序: 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 --建表并向表中插入数据。 gaussdb=# CREATE TABLE test_c1(id int, name varchar(20)); gaussdb=# CREATE INDEX idx_test_c1_id ON test_c1(id); gaussdb=# INSERT INTO test_c1 VALUES (3,'Joe'),(1,'Jack'),(2,'Scott'); --查看。 gaussdb=# SELECT * FROM test_c1; id | name ----+------- 3 | Joe 1 | Jack 2 | Scott (3 rows) --聚簇排序。 gaussdb=# CLUSTER test_c1 USING idx_test_c1_id; --查看。 gaussdb=# SELECT * FROM test_c1; id | name ----+------- 1 | Jack 2 | Scott 3 | Joe (3 rows) --删除。 gaussdb=# DROP TABLE test_c1; 对已做过聚簇的表重新进行聚簇排序: --建表。 gaussdb=# CREATE TABLE test(col1 int,CONSTRAINT pk_test PRIMARY KEY (col1)); --第一次聚簇排序不带USING关键字报错。 gaussdb=# CLUSTER test; ERROR: there is no previously clustered index for table "test" --聚簇排序。 gaussdb=# CLUSTER test USING pk_test; --插入数据。 gaussdb=# INSERT INTO test VALUES (1),(99),(10),(8); --对已做过聚簇的表重新进行聚簇。 gaussdb=# CLUSTER VERBOSE test; INFO: clustering "public.test" using index scan on "pk_test"(dn_6001 pid=3672) INFO: "test": found 0 removable, 4 nonremovable row versions in 1 pages(dn_6001 pid=3672) DETAIL: 0 dead row versions cannot be removed yet. CPU 0.00s/0.00u sec elapsed 0.01 sec. CLUSTER --删除。 gaussdb=# DROP TABLE test; 对分区进行聚簇排序: --建表并向表中插入数据。 gaussdb=# CREATE TABLE test_c2(id int, info varchar(4)) PARTITION BY RANGE (id)( PARTITION p1 VALUES LESS THAN (11), PARTITION p2 VALUES LESS THAN (21) ); gaussdb=# CREATE INDEX idx_test_c2_id1 ON test_c2(id); gaussdb=# INSERT INTO test_c2 VALUES (6,'ABBB'),(2,'ABAB'),(9,'AAAA'); gaussdb=# INSERT INTO test_c2 VALUES (11,'AAAB'),(19,'BBBA'),(16,'BABA'); --查看。 gaussdb=# SELECT * FROM test_c2; id | info ----+------ 6 | ABBB 2 | ABAB 9 | AAAA 11 | AAAB 19 | BBBA 16 | BABA (6 rows) --对分区p2进行聚簇排序。 gaussdb=# CLUSTER test_c2 PARTITION (p2) USING idx_test_c2_id1; --查看。 gaussdb=# SELECT * FROM test_c2; id | info ----+------ 6 | ABBB 2 | ABAB 9 | AAAA 11 | AAAB 16 | BABA 19 | BBBA (6 rows) --删除。 gaussdb=# DROP TABLE test_c2;
  • 参数说明 VERBOSE 可选。启用显示进度信息。 table_name 表名称。 取值范围:已存在的表名称。 [ USING index_name ] 索引名称。 取值范围:已存在的索引名称。 第一次对表进行聚簇排序时必须指定index_name,后续再次对表进行聚簇排序时不指定index_name,将会按照已有记录对表进行聚簇排序。 partition_name 分区名称。 取值范围:已存在的分区名称。
  • 功能描述 根据一个索引对表进行聚簇排序。 CLUSTER指定GaussDB通过索引名指定的索引聚簇由表名指定的表。表名上必须已经定义该索引。 当对一个表聚簇后,该表将基于索引信息进行物理存储。聚簇是一次性操作:当表被更新之后,更改的内容不会被聚簇。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚簇。 在对一个表聚簇之后,GaussDB会记录该表在哪一个索引上建立了聚簇。CLUSTER table_name将在该表之前记录过的聚簇索引上重新聚簇。用户也可以用ALTER TABLE table_name CLUSTER on index_name来设置指定表用于后续聚簇操作的索引,或使用ALTER TABLE table_name SET WITHOUT CLUSTER来清除指定表之前设置的聚簇索引。 不含参数的CLUSTER命令会将当前用户所拥有的数据库中的先前做过聚簇的所有表重新处理。如果系统管理员调用这个命令,则对所有进行过聚簇的表重新聚簇。 在对一个表进行聚簇的时候,会在其上请求一个ACCESS EXCLUSIVE锁,这样就避免了在CLUSTER操作完成之前对该表执行其它的操作(包括读写)。
  • 注意事项 只有行存B-tree索引支持CLUSTER操作。 如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,如果对某些特定数据的访问次数较多,而且有一个索引将这些数据分组,那么使用CLUSTER索引对性能会有所提升。 如果一个请求从表中查找的索引是一个范围,或者是一个索引值对应多行,CLUSTER也会有助于应用,因为如果索引标识出了第一匹配行所在的存储页,所有其它行也可能也已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。 在聚簇过程中,系统会先创建一个按照索引顺序建立的表的临时备份,同时也建立表上的每个索引的临时备份。因此,聚簇过程中需要保证磁盘上有足够的剩余空间,至少是表大小与全部索引大小之和。 因为CLUSTER记录着哪些索引曾被用于聚簇,所以用户可以在第一次手动指定索引,对指定表进行聚簇,然后设置一个周期化执行的维护脚本,只需执行不带参数的CLUSTER命令,就可以实现对想要周期性聚簇的表进行自动更新。 因为优化器记录着有关表的排序的统计,在表上执行聚簇操作后,需运行ANALYZE操作以确保优化器具备最新的排序信息,否则,优化器可能会选择非最优的查询规划。 CLUSTER不允许在事务中执行。 如果没有将GUC参数xc_maintenance_mode设置为on,那么CLUSTER会跳过所有系统表。 对于全局二级索引(GSI),当前在单个分区执行CLUSTER或通过CLUSTER [VERBOSE]对以做过聚簇的表重新进行聚簇后,查询语句走全局二级索引会报错,需要执行REINDEX INDEX重建全局二级索引。
  • GS_MY_ILMRESULTS GS_MY_ILMRESULTS视图反映ADO JOB的执行详情信息,包含Task ID,JOB名称、JOB状态、JOB时间信息等。 表1 GS_MY_ILMRESULTS字段 名称 类型 描述 task_id bigint ADO Task的ID。 job_name character varying(128) ADO Job的任务名称。 job_state character varying(35) ADO Job的状态。 start_time timestamp with time zone JOB开始被调度的时间。 completion_time timestamp with time zone 完成时间。 comments character varying(4000) JOB失败后此处记录失败原因。 statistics clob 统计信息。 node_name name 数据来源节点的名称。 父主题: OLTP表压缩
  • DBE_PLDEBUGGER.finish 执行存储过程中当前的SQL直到下一个断点触发或执行到上层栈的下一行,如表1所示。 表1 finish入参和返回值列表 名称 类型 描述 funcoid OUT oid 函数id。 funcname OUT text 函数名。 lineno OUT integer 当前调试运行的下一行行号。 query OUT text 当前调试的下一行函数源码。 父主题: DBE_PLDEBUGGER Schema
  • PARALLEL_DECODE_THREAD_INFO PARALLEL_DECODE_THREAD_INFO视图用于查看当前节点上进行并行解码的线程信息,如表1所示。该视图需在DN上查询,在CN上查询返回空。 表1 PARALLEL_DECODE_THREAD_INFO字段 名称 类型 描述 thread_id bigint 线程id。 slot_name text 复制槽名。 thread_type text 线程种类(共三种,sender代表发送线程,reader代表读取线程,decoder代表解码线程)。 seq_number integer 当前复制槽中同种线程的序号(从1开始)。 父主题: Utility
  • MY_COL_COMMENTS MY_COL_COMMENTS视图显示当前用户下表的列注释信息。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 MY_COL_COMMENTS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表的名称。 column_name character varying(128) 列名称。 comments text 注释。 origin_con_id numeric 暂不支持,值为0。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • WORKLOAD_TRANSACTION 当前节点上负载的事务信息,如表1所示。 表1 WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name 负载的名称。 commit_counter bigint 用户事务commit数量。 rollback_counter bigint 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total bigint 用户事务总响应时间(单位:微秒)。 bg_commit_counter bigint 后台事务commit数量。 bg_rollback_counter bigint 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total bigint 后台事务总响应时间(单位:微秒)。 父主题: Workload
  • PG_TABLES PG_TABLES视图可用来查询数据库中每个表的有用信息。具体字段信息如表1所示。 表1 PG_TABLES字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 表的模式名。 tablename name PG_CLASS.relname 表名。 tableowner name pg_get_userbyid(PG_CLASS.relowner) 表的所有者。 tablespace name PG_TABLESPACE.spcname 包含表的表空间,默认为NULL。 hasindexes boolean PG_CLASS.relhasindex 如果表上有索引(或者最近拥有)则为TRUE,否则为FALSE。 hasrules boolean PG_CLASS.relhasruls 如果表上有规则,则为TRUE,否则为FALSE。 hastriggers boolean PG_CLASS.RELHASTRIGGERS 如果表上有触发器,则为TRUE,否则为FALSE。 tablecreator name pg_get_userbyid(PG_OBJECT.creator) 表的创建者。 created timestamp with time zone PG_OBJECT.ctime 表的创建时间。 last_ddl_time timestamp with time zone PG_OBJECT.mtime 最后一次对该表执行DDL操作的时间。 父主题: 其他系统视图
  • PV_OS_RUN_INFO PV_OS_RUN_INFO视图显示当前操作系统运行的状态信息。具体字段信息如表1所示。 表1 PV_OS_RUN_INFO字段 名称 类型 描述 id integer 编号。 name text 操作系统运行状态名称。 value numeric 操作系统运行状态值。 comments text 操作系统运行状态注释。 cumulative boolean 操作系统运行状态的值是否为累加值。 父主题: 其他系统视图
  • 模式级字符集和字符序 创建模式并指定默认字符集和字符序。 CREATE SCHEMA schema_name [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ]; 修改模式的默认字符集、字符序属性。 ALTER SCHEMA schema_name [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ]; 参数说明: schema_name 模式名称。 取值范围:字符串,要符合标识符命名规范。 default_charset 指定模式的默认字符集,单独指定时会将模式的默认字符序设置为指定的字符集的默认字符序。 default_collation 指定模式的默认字符序,单独指定时会将模式的默认字符集设置为指定的字符序对应的字符集。 GaussDB通过以下方式选择模式的字符集和字符序: 如果同时指定了default_charset和default_collation,则使用字符集default_charset和字符序default_collation,且default_charset和default_collation需要对应,不对应时会报错。 如果仅指定了default_charset,则使用字符集default_charset及其默认字符序。 如果仅指定了default_collation,则使用default_collation字符序和其对应的字符集。 如果既不指定default_charset也不指定default_collation,则该模式没有默认字符集和默认字符序。 default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。 default_collation仅支持指定为MYSQL模式(即sql_compatibility = 'MYSQL')下的字符序,指定其他字符序报错。 暂不支持新建SCHEMA的字符集、字符序与数据库的server_encoding不同。 示例: 1 2 3 4 5 6 7 8 9 10 11 -- 仅设置字符集,字符序为字符集的默认字符序 gaussdb=# CREATE SCHEMA test CHARSET utf8; -- 仅设置字符序,字符集为字符序关联的字符集 gaussdb=# CREATE SCHEMA test COLLATE utf8_bin; -- 同时设置字符集与字符序,字符集和字符序需对应 gaussdb=# CREATE SCHEMA test CHARSET utf8 COLLATE utf8_bin; -- 将test的默认字符集修改为utf8mb4,默认字符序修改为utf8mb4_bin。 gaussdb=# ALTER SCHEMA test CHARSET utf8mb4 COLLATE utf8mb4_bin; 父主题: 字符集与字符序
  • 示例 声明用于查询的游标示例: EXEC SQL DECLARE C CURSOR FOR SELECT * FROM My_Table; EXEC SQL DECLARE C CURSOR FOR SELECT Item1 FROM T; EXEC SQL DECLARE cur1 CURSOR FOR SELECT version(); 声明用于预备语句的游标示例: EXEC SQL PREPARE stmt1 AS SELECT version(); EXEC SQL DECLARE cur1 CURSOR FOR stmt1;
  • PG_SETTINGS PG_SETTINGS视图显示数据库运行时参数的相关信息。具体字段信息如表1所示。 表1 PG_SETTINGS字段 名称 类型 描述 name text 参数名称。 setting text 参数当前值。 unit text 参数的单位。 category text 参数的逻辑组。 short_desc text 参数的简单描述。 extra_desc text 参数的详细描述。 context text 设置参数值的上下文,包括:internal、postmaster、sighup、backend、superuser和user。 vartype text 参数类型,包括:bool、enum、integer、real或string。 source text 参数的赋值方式。 min_val text 参数最小值。如果参数类型不是数值型,那么该字段值为null。 max_val text 参数最大值。如果参数类型不是数值型,那么该字段值为null。 enumvals text[] enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。 boot_val text 数据库启动时参数默认值。 reset_val text 数据库重置时参数默认值。 sourcefile text 设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。 sourceline integer 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。 父主题: 其他系统视图
  • max_standby_streaming_delay 参数说明:当开启双机热备模式时,如果备机正通过流复制接收WAL日志数据,这时进行查询就会产生冲突,这个参数就是设置备机取消查询之前所等待的时间。当参数值较大,或业务压力大时,概率出现等待事务回放落盘的报错。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型(毫秒),范围:-1~2147483647。‬ -1表示允许备机一直等待冲突的查询完成。在开启串行或并行回放的场景下,当检测到查询线程与回放线程已处于死锁状态时,仍会通过取消查询来避免阻塞回放。 默认值:3s(即3000ms)
  • max_standby_archive_delay 参数说明:当开启双机热备模式时,如果备机正处理归档WAL日志数据,这时进行查询就会产生冲突,此参数就是设置备机取消查询之前所等待的时间。当前版本设置暂不生效,统一由参数max_standby_streaming_delay控制。 参数类型:整型 参数单位:毫秒 取值范围:-1~2147483647,-1表示允许备机一直等待冲突的查询完成。 默认值:3s(即3000ms) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:建议设置为默认值。
  • wal_receiver_status_interval 参数说明:设置WAL日志接收线程的状态通知给主机的最大时间间隔。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0 ~ INT_MAX / 1000,单位为秒。 当该参数设置为0时,表示关闭备机向主机反馈日志接收位置等信息,可能会导致主机事务提交阻塞、switchover操作失败等异常现象。正常业务场景,不建议将该参数设置为0。 默认值:5s
  • standby_force_recycle_ratio 参数说明:开启极致RTO功能后,备机读相关文件的触发强制回收的比例。当base page文件总大小超过max_standby_base_page_size* standby_force_recycle_ratio,或者lsn info文件总大小超过max_standby_lsn_info_size* standby_force_recycle_ratio时,触发强制回收,会有查询被取消。当standby_force_recycle_ratio = 0时,不会启动强制回收,max_standby_base_page_size和max_standby_lsn_info_size也不会生效。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:双精度浮点类型,0.0~1.0。 默认值:0.8
  • standby_max_query_time 参数说明:开启极致RTO功能后,支持的备机上查询的最大时间,超过该时间会被取消。注:何时取消查询受回收线程的时间间隔参数standby_recycle_interval和查询取快照的时间影响,因此备机上查询的实际执行时间要大于该参数。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~86400‬,单位是秒(s)。 默认值:600
  • walrcv_writer_crc_check_level 参数说明:支持流式容灾场景下,主备集群内备机侧的xLog校验,默认仅在灾备集群内开启。 参数类型:整型 参数单位:无 取值范围:0~3 0:关闭校验。 1:灾备集群内校验生效。 2:主集群内备机侧的校验生效。 3:主集群内的备机和灾备集群内节点全部生效。 默认值:1 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
  • hot_standby 参数说明:设置是否允许备机在恢复到minrecovery点后接受连接和查询。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 如果此参数设置为on,wal_level级别必须设置为hot_standby或以上,否则将导致数据库无法启动。 在分布式环境中,因为会对双机其他一些功能产生影响,hot_standby参数不能设置成off。 如果hot_standby参数曾经被关闭,且wal_level参数曾被设置低于hot_standby等级,那么,再次打开hot_standby参数之前,为了确保主备环境下备机上待回放的日志都可以支持备机查询功能,需要进行如下操作: 将主、备的wal_level参数调整到hot_standby等级或以上,并重启实例生效。 在主机上执行checkpoint操作,并通过查询pg_stat_get_wal_senders()系统函数,确认各个备机的receiver_replay_location追上主机当前的sender_flush_location,保证wal_level的调整同步到备机并生效,且备机不需要再回放之前低等级的日志。 将主、备的hot_standby参数打开(设为on),并重启实例生效。 备机读开启后,因备机回放与查询冲突,可能会出现查询被取消的报错,报错信息有: ERROR: canceling statement due to conflict with recovery ERROR: terminating connection due to conflict with recovery 在串行和并行回放备机读下,主机在进行在线重建索引时,备机读可能会报错,备机读请稍后重试。报错信息包含: could not open relation with OID xxx during recovery delete object, please try again later Catalog is missing xxx attribute(s) for relid xxx cache lookup failed for index xxx, refilenode:xxx, name:"xxx" could not find pg_class entry for xxx 在极致RTO备机读的情况下,内存配置较小的虚拟机可能出现内存不足的报错,可通过开启GUC参数exrto_standby_read_opt(默认开启)有效降低内存和IO开销,解决此问题。 备机不支持自治事务功能。 典型场景下的备机读性能:使用sysbench进行测试,主机执行100并发的update类型业务,主备机同时执行200并发的读类型业务,在IO和CPU不受限的条件下,串行回放备机读的性能不低于主机读业务性能的80%,极致RTO备机读的性能和串行回放备机读的性能相比劣化不超过10%。 取值范围:布尔型 on表示允许备机在恢复到minrecovery点后接受连接和查询。 off表示不允许备机在恢复到minrecovery点后接受连接和查询。 默认值:on
  • 敏感数据发现函数 gs_sensitive_data_discovery(scan_target text, scan_classifier text) 描述:扫描目标数据,返回统计的扫描结果。 参数: scan_target:指定扫描对象,取值必须是schema、table或column的名称,但必须指定扫描对象的上级名称,比如扫描某列传入扫描对象为scheme_name.table_name.column_name。 scan_classifier:指定使用的分类器,支持指定email、creditcard、phonenumber、chinesename、encryptedcontent 5种分类器,多选可以用逗号分隔,或者使用all选中所有分类器。 返回值类型:record 示例请参见《特性指南》的“敏感数据发现”章节。 gs_sensitive_data_discovery_detail(scan_target text, scan_classifier text) 描述:扫描目标数据,返回详细的扫描结果。 scan_target:指定扫描对象,取值必须是schema、table或column的名称,但必须指定描对象的上级名称,比如扫描某列传入扫描对象为scheme_name.table_name.column_name。 scan_classifier:指定使用的分类器,支持email、creditcard、phonenumber、chinesename、encryptedcontent 5种分类器,多选可以用逗号分隔,或者使用all选中所有分类器。 返回值类型:record 示例请参见《特性指南》的“敏感数据发现”章节。 父主题: 函数和操作符
  • 语法格式 CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [, ... ] [ filter_group_clause ] [ ENABLE | DISABLE ] }; privilege_audit_clause: 1 PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] access_audit_clause: ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
  • 示例 创建一个对数据库执行CREATE的审计策略。 --创建adt1策略。 gaussdb=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; --查看adt1策略。 gaussdb=# SELECT * FROM GS_AUDITING_POLICY; polname | polcomments | modifydate | polenabled ---------+-------------+----------------------------+------------ adt1 | | 2023-11-06 16:41:40.947417 | t --查看审计策略的存放位置。 gaussdb=# SHOW audit_directory; --删除审计策略adt1。 gaussdb=# DROP AUDIT POLICY adt1; 创建一个审计策略,仅审计用户dev_audit进行CREATE操作 。 --创建dev_audit用户。 gaussdb=# CREATE USER dev_audit PASSWORD '********'; --创建一个表tb_for_audit。 gaussdb=# CREATE TABLE tb_for_audit(col1 text, col2 text, col3 text); --创建基于tb_for_audit表的adt_lb0资源标签。 gaussdb=# CREATE RESOURCE LABEL adt_lb0 add TABLE(public.tb_for_audit); --创建针对adt_lb0资源进行create操作的adt2审计策略。 gaussdb=# CREATE AUDIT POLICY adt2 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit); --删除审计策略adt2。 gaussdb=# DROP AUDIT POLICY adt2; --删除表tb_for_audit。 gaussdb=# DROP TABLE tb_for_audit; --删除dev_audit用户。 gaussdb=# DROP USER dev_audit; 创建一个仅审计记录用户dev_audit,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24',在执行针对adt_lb0资源进行的SELECT、INSERT、DELETE操作数据库的审计策略。 --创建dev_audit用户。 gaussdb=# CREATE USER dev_audit PASSWORD '********'; --创建审计策略adt3。 gaussdb=# CREATE AUDIT POLICY adt3 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit), APP(gsql), IP('10.20.30.40', '127.0.0.0/24'); --删除审计策略adt3。 gaussdb=# DROP AUDIT POLICY adt3; --删除dev_audit用户。 gaussdb=# DROP USER dev_audit;
共100000条