华为云用户手册

  • 语法格式 设置视图列的默认值。 ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name SET DEFAULT expression; 取消列视图列的默认值。 ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name DROP DEFAULT; 修改视图的所有者。 ALTER VIEW [ IF EXISTS ] view_name OWNER TO new_owner; 重命名视图。 ALTER VIEW [ IF EXISTS ] view_name RENAME TO new_name; 设置视图的所属模式。 ALTER VIEW [ IF EXISTS ] view_name SET SCHEMA new_schema; 设置视图的选项。 ALTER VIEW [ IF EXISTS ] view_name SET ( { view_option_name [ = view_option_value ] } [, ... ] ); 重置视图的选项。 ALTER VIEW [ IF EXISTS ] view_name RESET ( view_option_name [, ... ] );
  • 参数说明 IF EXISTS 使用这个选项,如果视图不存在时不会产生错误,仅会有一个提示信息。 view_name 视图名称,可以用模式修饰。 取值范围:字符串,已经存在的视图名。 column_name 字段名称。 取值范围:字符串,已经存在的视图字段名。 SET/DROP DEFAULT 设置或删除一个列的缺省值,该参数暂无实际意义。 new_owner 视图新所有者的用户名称。 new_name 视图的新名称。 new_schema 视图的新模式。 view_option_name [ = view_option_value ] 该子句为视图指定一个可选的参数。 security_barrier:设置视图是否提供行级安全。取值范围为Boolean类型。缺省值为true。 check_option:控制更新视图的行为。支持参数值为CASCADED或LOCAL。该参数取值不可缺省。 expression 常量、函数或SQL表达式。
  • 示例 --创建一个名为serial的递增序列,从101开始。 gaussdb=# CREATE SEQUENCE serial START 101; --创建一个表,定义默认值。 gaussdb=# CREATE TABLE t1(c1 bigint default nextval('serial')); --将序列serial的归属列变为t1.c1。 gaussdb=# ALTER SEQUENCE serial OWNED BY t1.c1; --删除序列和表。 gaussdb=# DROP SEQUENCE serial CASCADE; gaussdb=# DROP TABLE t1;
  • pgxc_node_name 参数说明:指定节点名称。 该参数属于POSTMASTER类型参数,请参考表2进行设置。 在备机请求主机进行日志复制时,如果application_name参数没有被设置,那么pgxc_node_name参数会被用来作为备机在主机上的流复制槽名字。该流复制槽的命名方式为 "该参数值_备机ip_备机port"。其中,备机ip和备机port取自replconninfo参数中指定的备机ip和端口号。该流复制槽最大长度为61个字符,如果拼接后的字符串超过该长度,则会使用截断后的pgxc_node_name进行拼接,以保证流复制槽名字长度小于等于61个字符。 此参数修改后会导致连接数据库实例失败,不建议进行修改。 取值范围:字符串 默认值:当前节点名称
  • transaction_isolation 参数说明:设置当前事务的隔离级别。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串,只识别以下字符串,大小写空格敏感: serializable: GaussDB 中等价于REPEATABLE READ。 read committed:只能读取已提交的事务的数据(缺省),不能读取到未提交的数据。 repeatable read:仅能读取事务开始之前提交的数据,不能读取未提交的数据以及在事务执行期间由其它并发事务提交的修改。 default:设置为default_transaction_isolation所设隔离级别。 默认值:read committed
  • enable_show_any_tuples 参数说明:该参数只有在只读事务中可用,用于分析。当这个参数被置为on/true时,表中元组的所有版本都会可见。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on/true表示表中元组的所有版本都会可见。 off/false表示表中元组的所有版本都不可见。 默认值:off 在toast场景下,如果reindex前后均有dml操作(主要是insert+update或insert+delete),在reindex操作后,开启只读事务并打开该GUC参数,release版本下单独查询toast表或toast索引表历史数据正常,但是通过主表查询toast列历史数据会报错“missing chunk number xxx”。
  • transaction_deferrable 参数说明:指定是否允许一个只读串行事务延迟执行,使其不会执行失败。该参数设置为on时,当一个只读事务发现读取的元组正在被其他事务修改,则延迟该只读事务直到其他事务修改完成。该参数为预留参数,该版本不生效。与该参数类似的还有一个default_transaction_deferrable,设置它来指定一个事务是否允许延迟。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示允许执行。 off表示不允许执行。 默认值:off
  • enable_defer_calculate_snapshot 参数说明:延迟计算快照的xmin和oldestxmin,执行1000个事务或者间隔1s才触发计算,设置为on时可以在高负载场景下减少计算快照的开销,但是会导致oldestxmin推进较慢,影响垃圾元组回收,设置为off时xmin和oldestxmin可以实时推进,但是会增加计算快照时的开销。 参数类型:布尔型 参数单位:无 取值范围: on:表示延迟计算快照xmin和oldestxmin。 off:表示实时计算快照xmin和oldestxmin。 默认值:on 设置方式:该参数属于SIGHUP类型参数,改请参考表2进行设置。
  • 参数说明 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子句为该列(必须是一种可排序数据类型)赋予一个排序规则。 如果没有指定,将使用该列数据类型的默认排序规则。
  • 示例 对复合类型的修改。 --创建复合类型。 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, pg_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;
  • 语法格式 修改类型。 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;
  • enable_save_datachanged_timestamp 参数说明:确定是否收集insert/update/delete, exchange/truncate/drop partition操作对表数据改动的时间。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示允许收集相关操作对表数据改动的时间。 off表示禁止收集相关操作对表数据改动的时间。 默认值:on
  • track_sql_count 参数说明:控制对每个会话中当前正在执行的SELECT、INSERT、UPDATE、DELETE、MERGE INTO语句进行计数的统计数据。 在x86架构集中式部署下,硬件配置规格为32核CPU/256GB内存,使用Benchmark SQL 5.0工具测试性能,开关此参数性能影响约0.8%。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启计数功能。 off表示关闭计数功能。 默认值:on track_sql_count参数受track_activities约束: track_activities开启而track_sql_count关闭时,如果查询了gs_sql_count视图,日志中将会有WARNING提示track_sql_count是关闭的; track_activities和track_sql_count同时关闭,那么此时日志中将会有两条WARNING,分别提示track_activities是关闭的和track_sql_count是关闭的; track_activities关闭而track_sql_count开启,此时日志中将仅有WARNING提示track_activities是关闭。 当参数关闭时,查询视图的结果为0行。
  • track_activities 参数说明:控制收集每个会话中当前正在执行命令的统计数据。对于存储过程,打开该参数后,可以通过pg_stat_activity视图看到存储过程内正在执行的perform语句、调用存储过程语句、存储过程内的SQL语句、OPEN CURSOR语句。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启收集功能。 off表示关闭收集功能。 默认值:on 该参数设置为off影响存储引擎空间回收能力,会导致空间膨胀。
  • track_procedure_sql 参数说明:该参数控制pg_stat_activity系统表中的query列是否同时打印该存储过程中正在执行的SQL语句。 参数类型:布尔型 参数单位:无 取值范围:on、off on表示调用存储过程时,pg_stat_activity的query列会同时打印存储过程正在执行的语句。 off表示调用存储过程时,pg_stat_activity的query列只打印存储过程调用语句。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:无
  • track_io_timing 参数说明:控制收集数据库I/O调用时序的统计数据。I/O时序统计数据可以在pg_stat_database中查询。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启收集功能,开启时,收集器会在重复地去查询当前时间的操作系统,这可能会引起某些平台的重大开销,故默认值设置为off。 off表示关闭收集功能。 默认值:off
  • 语法格式 CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ] [ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ] AS query [ WITH [ CASCADED | LOCAL ] CHECK OPTION | WITH READ ONLY ]; 创建视图时使用WITH(security_barrier)可以创建一个相对安全的视图,避免攻击者利用低成本函数的RAISE语句打印出隐藏的基表数据。 当视图创建后,不允许使用REPLACE修改本视图当中的列名,也不允许删除列。
  • 参数说明 OR REPLACE 可选。如果视图已存在,则重新定义。 TEMP | TEMPORARY 可选。创建一个临时视图。在当前会话结束时会自动删除掉视图。如果视图引用的任何表是临时表,视图将被创建为临时视图(不管SQL中有没有指定TEMP|TEMPORARY)。 view_name 要创建的视图名称。可以用模式修饰。 取值范围:字符串,符合标识符命名规范。 column_name 可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。 取值范围:字符串,符合标识符命名规范。 view_option_name [= view_option_value] 该子句为视图指定一个可选的参数。 目前view_option_name支持的参数仅有security_barrier和check_option。 security_barrier:当VIEW视图提供行级安全时,应使用该参数。取值范围:Boolean类型(true、false)。 check_option:控制更新视图的行为。取值范围:CASCADED、LOCAL。 query 为视图提供行和列的SELECT或VALUES语句。 若query包含指定分区表分区的子句,创建视图会将所指定分区的OID固化到系统表中。如果使用导致指定分区的OID发生变更的分区DDL语法,如DROP/SPLIT/MERGE该分区,则会导致视图不可用。需要重新创建视图。
  • num_internal_lock_partitions 参数说明:控制内部轻量级锁分区的个数。主要用于各类场景的性能调优。内容以关键字和数字的KV方式组织,各个不同类型锁之间以逗号隔开。先后顺序对设置结果不影响,例如“C LOG _PART=256, CS NLOG_PART=512”等同于“CSNLOG_PART=512,CLOG_PART=256”。重复设置同一关键字时,以最后一次设置为准,例如“CLOG_PART=256,CLOG_PART=2”,设置的结果为CLOG_PART=2。当没有设置关键字时,则为默认值,各类锁的使用描述和最大、最小、默认值如下。 CLOG_PART:CLOG文件控制器的个数,增大该值可以提高CLOG日志写入效率,提升事务提交性能,但是会增大内存使用;减小该值会减少相应内存使用,但可能使得CLOG日志写入冲突变大,影响性能。最小值为1,最大值为256。 CSNLOG_PART:CSNLOG文件控制器的个数,增大该值可以提高CSNLOG日志写入效率,提升事务提交性能,但是会增大内存使用;减小该值会减少相应内存使用,但可能使得CSNLOG日志写入冲突变大,影响性能。最小值为1,最大值为512。 LOG2_LOCKTABLE_PART:常规锁表锁分区个数的2对数,增大该值可以提升正常流程常规锁获取锁的并行度,但是可能增加锁转移和锁消除时的耗时,对于等待事件在LockMgrLock时,可以调大该锁增加性能。最小值4,即锁分区数为16;最大值为16,即锁分区数为65536。 TWOPHASE_PART:两阶段事务锁的分区数,调大该值可以提高两阶段事务提交的并发数。最小值为1,最大值为64。 FASTPATH_PART:每个线程可以不通过主锁表拿锁的最大锁个数,对于分区表读取、更新、插入、删除操作且等待事件在LockMgrLock时,可以通过调大该值避免获取LockMgrLock提升性能,建议调整数量大于等于分区数*(1+本地索引数量)+全局索引数量+10,调大该值会额外增加内存。最小值为20,最大值为10000。 该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 取值范围:字符串 默认值: 'CLOG_PART=256,CSNLOG_PART=512,LOG2_LOCKTABLE_PART=4,TWOPHASE_PART=1,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,TWOPHASE_PART=1,FASTPATH_PART=20'(4核CPU/16G内存)。
  • lockwait_timeout 参数说明:控制单个锁的最长等待时间。当申请的锁等待时间超过设定值时,系统会报错。该参数仅针对常规锁生效。 参数类型:整型 参数单位:毫秒(ms) 取值范围:0 ~ INT_MAX 默认值:20min 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值900,表示lockwait_timeout为900ms;带单位取值20min,表示lockwait_timeout为20min。取值如果要带单位,必须为ms、s、min、h、d。 设置建议:一般设置为默认值。根据业务需要,如果业务需要锁冲突超过多久,该参数就设置多少。
  • update_lockwait_timeout 参数说明:允许并发更新参数开启情况下,该参数控制并发更新同一行时单个锁的最长等待时间。当申请的锁等待时间超过设定值时,系统会报错。该参数仅针对常规锁生效。 参数类型:整型 参数单位:毫秒(ms) 取值范围:0 ~ 2147483647 默认值:2min(120000ms) 设置方式:该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值900,表示update_lockwait_timeout为900ms;带单位取值2min,表示update_lockwait_timeout为2min。取值如果要带单位,必须为ms、s、min、h、d。 设置建议:主要观测并发更新同一行的事务的workload。一般TP业务,执行时间较短小于两分钟,此时默认值误报概率较小;如果业务出现大量并发更新同一行事务,执行时间超过两分钟,可以调大该参数避免等锁超时误报。
  • partition_lock_upgrade_timeout 参数说明:在执行某些查询语句的过程中,会需要将分区表上的锁级别由允许读的ExclusiveLock级别升级到读写阻塞的AccessExclusiveLock级别。如果此时已经存在并发的读事务,那么该锁升级操作将阻塞等待。partition_lock_upgrade_timeout为尝试锁升级的等待超时时间。 在分区表上进行MERGE PARTITION和CLUSTER PARTITION操作时,都利用了临时表进行数据重排和文件交换,为了尽可能提高分区上的操作并发度,在数据重排阶段给相关分区加锁ExclusiveLock,在文件交换阶段加锁AccessExclusiveLock。 常规加锁方式是等待加锁,直到加锁成功,或者等待时间超过lockwait_timeout发生超时失败。 在分区表上进行MERGE PARTITION或CLUSTER PARTITION操作时,进入文件交换阶段需要申请加锁AccessExclusiveLock,加锁方式是尝试性加锁,加锁成功了则立即返回,不成功则等待50ms后继续下次尝试,加锁超时时间使用会话级设置参数partition_lock_upgrade_timeout。 特殊值:若partition_lock_upgrade_timeout取值-1,表示无限等待,即不停的尝试锁升级,直到加锁成功。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:整型,最小值-1,最大值3000,单位为秒(s)。 默认值:1800
  • max_pred_locks_per_transaction 参数说明:控制每个事务允许断定锁的最大数量,是一个平均值。 共享的断定锁表的大小是以假设任意时刻最多只有max_pred_locks_per_transaction*(max_connections+max_prepared_transactions) 个独立的对象需要被锁住为基础进行计算的。不超过设定数量的多个对象可以在任一时刻同时被锁定。当在一个事务里面修改很多不同的表时,可能需要提高这个默认数值。只能在服务器启动的时候设置。 增大这个参数可能导致GaussDB请求更多的System V共享内存,有可能超过操作系统的缺省配置。 该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 取值范围:整型,10 ~ INT_MAX。 默认值:64
  • xloginsert_locks 参数说明:控制用于并发写预写式日志锁的个数。主要用于提高写预写式日志的效率。 参数类型:整型 参数单位:无 取值范围:最小值1,最大值1000。若CPU为NUMA架构,数值必须为NUMA节点数量的整数倍。 默认值:16 设置方式:该参数属于POSTMASTER类型参数,参考表1中对应设置方法进行设置。 设置建议:ARM CPU架构在并发压力大的场景下,可能因为原子操作的竞争而导致概率性的性能抖动,可以适当降低该参数值而获取相对稳定的运行性能。
  • 示例 --创建用户jim,登录密码为********。 gaussdb=# CREATE USER jim PASSWORD '********'; --创建用户kim,登录密码为********。 gaussdb=# CREATE USER kim IDENTIFIED BY '********'; --创建用户tom,登录密码为********。 gaussdb=# CREATE USER TOM PASSWORD '**********'; --创建用户TOM,登录密码为********。 gaussdb=# CREATE USER "TOM" PASSWORD '**********'; --如果需要创建具有“创建数据库”权限的用户,则需要加CREATEDB关键字。 gaussdb=# CREATE USER dim CREATEDB PASSWORD '********'; --查看用户dim的权限。 gaussdb=# \du dim List of roles Role name | Attributes | Member of -----------+------------+----------- dim | Create DB | {} (可以看到用户dim具有CREATEDB的权限) --修改用户jim的登录密码。 gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********'; --为用户jim追加CREATEROLE权限。 gaussdb=# ALTER USER jim CREATEROLE; --查看用户jim追加的CREATEROLE权限。 gaussdb=# \du jim List of roles Role name | Attributes | Member of -----------+-------------+----------- jim | Create role | {} --将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。 gaussdb=# ALTER USER jim SET enable_seqscan TO on; --重置jim的enable_seqscan参数。 gaussdb=# ALTER USER jim RESET enable_seqscan; --锁定jim账户。 gaussdb=# ALTER USER jim ACCOUNT LOCK; --解锁jim账户。 gaussdb=# ALTER USER jim ACCOUNT UNLOCK; --修改用户密码。 gaussdb=# ALTER USER dim WITH PASSWORD '********'; --修改用户名。 gaussdb=# ALTER USER dim RENAME TO lisa; --删除用户。 gaussdb=# DROP USER kim CASCADE; gaussdb=# DROP USER jim CASCADE; gaussdb=# DROP USER lisa CASCADE; gaussdb=# DROP USER TOM CASCADE; gaussdb=# DROP USER "TOM" CASCADE;
  • 参数说明 policy_name 行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。 table_name 行访问控制策略的表名。 PERMISSIVE | RESTRICTIVE PERMISSIVE指定行访问控制策略为宽容性策略,宽容性策略的条件用OR表达式拼接。 RESTRICTIVE指定行访问控制策略为限制性策略,限制性策略的条件用AND表达式拼接。拼接方式如下: (using_expression_permissive_1 OR using_expression_permissive_2 ...) AND (using_expression_restrictive_1 AND using_expression_restrictive_2 ...) 缺省值为PERMISSIVE。 command 当前行访问控制影响的SQL操作,可指定操作包括:ALL、SELECT、UPDATE、DELETE。当未指定时,ALL为默认值,涵盖SELECT、UPDATE、DELETE操作。 当command为SELECT时,SELECT类操作受行访问控制的影响,只能查看到满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括SELECT,SELECT FOR UPDATE/SHARE,UPDATE ... RETURNING,DELETE ... RETURNING。 当command为UPDATE时,UPDATE类操作受行访问控制的影响,只能更新满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括UPDATE, UPDATE ... RETURNING, SELECT ... FOR UPDATE/SHARE。 当command为DELETE时,DELETE类操作受行访问控制的影响,只能删除满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括DELETE, DELETE ... RETURNING。 行访问控制策略与适配的SQL语法关系参见下表: 表1 ROW LEVEL SECURITY策略与适配SQL语法关系 Command SELECT/ALL policy UPDATE/ALL policy DELETE/ALL policy SELECT Existing row No No SELECT FOR UPDATE/SHARE Existing row Existing row No UPDATE No Existing row No UPDATE RETURNING Existing row Existing row No DELETE No No Existing row DELETE RETURNING Existing row No Existing row role_name 行访问控制影响的数据库用户。 CURRENT_USER表示当前执行环境的用户名;SESSION_USER则表示会话用户名;当未指定时,PUBLIC为默认值,PUBLIC表示影响所有数据库用户,可以指定多个受影响的数据库用户。 系统管理员不受行访问控制特性影响。
  • log_file_mode 参数说明:logging_collector设置为on时,log_file_mode设置服务器日志文件的权限。通常log_file_mode的取值是能够被chmod和umask系统调用接受的数字。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 使用此选项前请设置log_directory,将日志存储到数据目录之外的地方。 因日志文件可能含有敏感数据,故不能将其设为对外可读。 取值范围:整型,0000~0777 (8进制计数,转化为十进制 0 ~ 511)。 0600表示只允许服务器管理员读写日志文件。 0640表示允许管理员所在用户组成员只能读日志文件。 默认值:0600
  • log_truncate_on_rotation 参数说明:logging_collector设置为on时,log_truncate_on_rotation设置日志消息的写入方式。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 示例如下: 假设日志需要保留7天,每天生成一个日志文件,日志文件名设置为server_log.Mon、server_log.Tue等。第二周的周二生成的日志消息会覆盖写入到server_log.Tue。设置方法:将log_filename设置为server_log.%a ,log_truncate_on_rotation设置为on,log_rotation_age设置为1440,即日志有效时间为1天。 取值范围: 布尔型 on表示GaussDB以覆盖写入的方式写服务器日志消息。 off表示GaussDB将日志消息附加到同名的现有日志文件上。 默认值:off
  • log_rotation_age 参数说明:logging_collector设置为on时,log_rotation_age决定创建一个新日志文件的时间间隔。当现在的时间减去上次创建一个服务器日志的时间超过了log_rotation_age的值时,将生成一个新的日志文件。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0 ~ 35791394,单位为min。其中0表示关闭基于时间的新日志文件的创建。 默认值:1440(min)
  • log_directory 参数说明:logging_collector设置为on时,log_directory决定存放服务器日志文件的目录。它可以是绝对路径,或者是相对路径(相对于数据目录的路径)。log_directory支持动态修改,可以通过gs_guc reload实现,仅sysadmin用户可以访问。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 当配置文件中log_directory的值为非法路径时,会导致数据库无法重新启动。 通过gs_guc reload动态修改log_directory时,当指定路径为合法路径时,日志输出到新的路径下。当指定路径为非法路径时,日志输出到上一次合法的日志输出路径下而不影响数据库正常运行。此时即使指定的log_directory的值非法,也会写入到配置文件中。 在沙箱环境,路径中不可以包含/var/chroot,例如log的绝对路径是/var/chroot/var/lib/log/Ruby/gs_log/cn_log,则只需要设置为/var/lib/log/Ruby/gs_log/cn_log。 合法路径:用户对此路径有读写权限。 非法路径:用户对此路径无读写权限。 取值范围:字符串 默认值:安装时指定。
共100000条