华为云用户手册

  • gds_debug_mod 参数说明:为了增强对Gauss Data Service (以下简称GDS)相关问题的分析定位能力,可以通过此参数选择是否开启GDS的debug功能。参数开启后,将在集群节点对应的日志中输出GDS每次收发的包裹类型、命令交互的对端以及其他交互相关的细节信息,方便记录Gaussdb端状态机的状态跳转,以及目前所处的状态信息。此参数打开会输出额外日志,增加日志IO开销,进而影响性能和日志的信息有效性,因此请仅在定位GDS问题时开启。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围: on表示开启GDS debug功能。 off表示不开启GDS debug功能。 默认值:off
  • safe_data_path 参数说明:设置初始用户以外的路径前缀限制,目前包括copy和高级包路径限制。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串(小于4096个字符) 默认值:NULL 如果safe_data_path目录下存在软链接文件,则会按软链接实际指向的文件路径进行处理,实际路径如果不在safe_data_path下会报错处理。 如果safe_data_path目录下存在硬链接文件,则可以正常使用。为安全起见,请谨慎使用硬链接文件,切勿在safe_data_path目录下创建指向目录以外的硬链接文件,并确保safe_data_path目录权限最小化。
  • enable_copy_server_files 参数说明:是否开启copy服务器端文件的权限。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启copy服务端文件的权限。 off表示不开启copy服务端文件的权限。 默认值:off 当参数enable_copy_server_files关闭时,只允许初始用户执行COPY FROM FILENAME或COPY TO FILENAME命令,当参数enable_copy_server_files打开,允许具有SYSADMIN权限的用户或继承了内置角色gs_role_copy_files权限的用户执行。
  • raise_errors_if_no_files 参数说明:导入时是否区分“导入文件记录数为空”和“导入文件不存在”。raise_errors_if_no_files=TRUE,则“导入文件不存在”的时候,GaussDB将抛出“文件不存在的”错误。 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 TRUE表示导入时区分“导入文件记录数为空”和“导入文件不存在”。 FALSE表示导入时不区分“导入文件记录数为空”和“导入文件不存在”。 默认值:FALSE
  • support_binary_copy_version 参数说明:COPY FROM的BINARY模式下导出数据时,是否包含当前数据库服务端的编码信息。 参数类型:字符串 参数单位:无 取值范围:''、header_encoding。 默认值:header_encoding 设置方式:该参数属于USERSET类型参数,请参见表1对应设置方法进行设置。 设置建议:无特殊情况时建议配置为默认取值,仅做前向兼容时需另行配置为空。 表1 兼容性配置项 兼容性配置项 兼容性行为控制 header_encoding 使用COPY FROM的BINARY模式进行导出时,二进制文件头中包含当前数据库服务端的编码信息。 空值 做前向兼容处理时配置,以原二进制格式进行导出。
  • 示例 --创建表。 gaussdb=# CREATE TABLE test1_index (id INT, name VARCHAR(20)); --创建索引。 gaussdb=# CREATE INDEX idx_test1 (id); --删除索引。 gaussdb=# DROP INDEX IF EXISTS idx_test1 CASCADE; --删除表。 gaussdb=# DROP TABLE test1_index;
  • 注意事项 使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。 保存点只能在一个事务块里面建立。在一个事务里面可以定义多个保存点。 由于节点故障或者通信故障引起的分布式节点线程或进程退出导致的报错,以及由于COPY FROM操作中源数据与目标表的表结构不一致导致的报错,均不能正常回滚到保存点之前,而是整个事务回滚。 SQL标准要求,使用SAVEPOINT建立一个同名保存点时,需要自动删除前面同名保存点。在GaussDB数据库里,将保留旧的保存点,但是在回滚或者释放的时候,只使用最近的保存点。释放了新的保存点将导致旧的再次成为ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT可以访问的保存点。除此之外,SAVEPOINT是完全符合SQL标准的。
  • 示例 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 --创建一个新表。 gaussdb=# CREATE TABLE table1(a int); --开启事务。 gaussdb=# START TRANSACTION; --插入数据。 gaussdb=# INSERT INTO table1 VALUES (1); --建立保存点。 gaussdb=# SAVEPOINT my_savepoint; --插入数据。 gaussdb=# INSERT INTO table1 VALUES (2); --回滚保存点。 gaussdb=# ROLLBACK TO SAVEPOINT my_savepoint; --插入数据。 gaussdb=# INSERT INTO table1 VALUES (3); --提交事务。 gaussdb=# COMMIT; --查询表的内容,会同时看到1和3,不能看到2,因为2被回滚。 gaussdb=# SELECT * FROM table1; --删除表。 gaussdb=# DROP TABLE table1; --创建一个新表。 gaussdb=# CREATE TABLE table2(a int); --开启事务。 gaussdb=# START TRANSACTION; --插入数据。 gaussdb=# INSERT INTO table2 VALUES (3); --建立保存点。 gaussdb=# SAVEPOINT my_savepoint; --插入数据。 gaussdb=# INSERT INTO table2 VALUES (4); --回滚保存点。 gaussdb=# RELEASE SAVEPOINT my_savepoint; --提交事务。 gaussdb=# COMMIT; --查询表的内容,会同时看到3和4。 gaussdb=# SELECT * FROM table2; --删除表。 gaussdb=# DROP TABLE table2;
  • WLM_USER_RESOURCE_CONFIG WLM_USER_RESOURCE_CONFIG视图显示用户的资源配置信息,如表1所示。 表1 WLM_USER_RESOURCE_CONFIG字段 名称 类型 描述 userid oid 用户oid。 username name 用户名称。 sysadmin boolean 是否是sysadmin。 rpoid oid 资源池的oid。 respool name 资源池的名称。 parentid oid 父用户的oid。 totalspace bigint 占用总空间大小。 spacelimit bigint 空间大上限。 childcount integer 子用户数量。 childlist texto 子用户的列表。 父主题: Workload Manager
  • enable_ledger 参数说明:控制是否启用账本数据库功能。若此参数设置为打开(on)状态,则启用账本数据库功能,允许创建新的防篡改模式和修改普通模式为防篡改模式。 参数类型:布尔型 参数单位:无 取值范围: on表示启用账本数据库功能。 off表示不启用账本数据库功能。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:该参数默认关闭,需要开启账本数据库功能时,将enable_ledger设置为on。
  • PG_CONVERSION PG_CONVERSION系统表描述编码转换信息。 表1 PG_CONVERSION字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 conname name - 转换名称(在一个名称空间里是唯一的)。 connamespace oid PG_NAMESPACE.oid 包含这个转换的名称空间的OID。 conowner oid PG_AUTHID.oid 编码转换的属主。 conforencoding integer - 源编码ID。 contoencoding integer - 目的编码ID。 conproc regproc PG_PROC.proname 转换过程。 condefault boolean - 如果这是缺省转换则为真,否则为假。 父主题: 其他系统表
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --创建用户webuser。 gaussdb=# CREATE USER webuser PASSWORD '********'; --授予用户webuser对模式tpcds下视图的所有操作权限。 gaussdb=# DO $$DECLARE r record; BEGIN FOR r IN SELECT c.relname,n.nspname FROM pg_class c,pg_namespace n WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$; --删除用户webuser。 gaussdb=# DROP USER webuser CASCADE;
  • 示例 重命名用户组。 1 2 3 4 5 --创建用户test。 gaussdb=# CREATE ROLE test PASSWORD '********'; --修改用户名,等效于ALTER ROLE RENAME。 gaussdb=# ALTER GROUP test RENAME TO tu_a1; 向用户组中添加或者删除用户。 --创建用户tu_a2、tu_a3。 gaussdb=# CREATE ROLE tu_a2 PASSWORD '********'; gaussdb=# CREATE ROLE tu_a3 PASSWORD '********'; --向用户组tu_a1中添加用户tu_a2。 gaussdb=# ALTER GROUP tu_a1 ADD USER tu_a2; --如上SQL等效于GRANT语句。 gaussdb=# GRANT tu_a1 TO tu_a3; --查询。 gaussdb=# SELECT groname, grolist FROM pg_group WHERE groname = 'tu_a1'; groname | grolist ---------+--------------- tu_a1 | {25590,25593} (1 row) gaussdb=# SELECT rolname, oid FROM pg_roles WHERE oid IN (25590,25593); rolname | oid ---------+------- tu_a2 | 25590 tu_a3 | 25593 (2 rows) --删除。 gaussdb=# DROP ROLE tu_a1,tu_a2,tu_a3;
  • 参数说明 user_name 现有角色名。 取值范围:已存在的角色名,如果角色名中包含大写字母则需要使用双引号括起来。 group_name 现有用户组名。 取值范围:已存在的角色名,如果角色名中包含大写字母则需要使用双引号括起来。 new_name 新角色名称。 取值范围:字符串,要符合标识符的命名规范,且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做角色名称。当角色名中包含大写字母时,数据库会自动转换为小写字母,如果需要创建包含大写字母的角色名,则需要使用双引号括起来。
  • 语法格式 向用户组中添加用户。 1 2 ALTER GROUP group_name ADD USER user_name [, ... ]; 从用户组中删除用户。 1 2 ALTER GROUP group_name DROP USER user_name [, ... ]; 修改用户组的名称。 1 2 ALTER GROUP group_name RENAME TO new_name;
  • 数据库逻辑结构图 集群的每个DN负责存储数据,其存储介质是磁盘,本节主要从逻辑视角介绍每个DN上有哪些对象,以及这些对象之间的关系。另外介绍数据在不同节点的分布方式。数据库逻辑结构如图1所示。 图1 数据库逻辑结构图 Tablespace,即表空间,表空间是一个目录,数据库中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。 Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace上。 Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。 Block,即数据块,是数据库管理的基本单位,默认大小为8KB。 数据在不同的DN上有四种分布方式,可以在建表的时候指定:REPLICATION、HASH、RANGE、LIST。 父主题: 数据库系统概述
  • 操作步骤 收集SQL中涉及到的所有表的统计信息。在数据库中,统计信息是优化器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左右性能问题是因为没有收集统计信息。具体请参见更新统计信息。 通过查看执行计划来查找原因。如果SQL长时间运行未结束,通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出结果,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精确地定位问题原因。有关执行计划的详细介绍请参见SQL执行计划介绍。 审视和修改表定义。 针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体请参见典型SQL调优点。 通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。经验总结:SQL语句改写规则介绍了几种常用的通过改写SQL进行调优的方法。
  • OPERATOR_HISTORY_TABLE OPERATOR_HISTORY_TABLE系统视图显示执行作业结束后的算子相关的记录。此数据是从内核中转储到视图中的数据,如表1所示。 表1 OPERATOR_HISTORY_TABLE的字段 名称 类型 描述 queryid bigint 语句执行使用的内部query_id。 pid bigint 后端线程id。 plan_node_id integer 查询对应的执行计划的plan node id。 plan_node_name text 对应于plan_node_id的算子的名称。 start_time timestamp with time zone 该算子处理第一条数据的开始时间。 duration bigint 该算子到结束时候总的执行时间(ms)。 query_dop integer 当前算子执行时的并行度。 estimated_rows bigint 优化器估算的行数信息。 tuple_processed bigint 当前算子返回的元素个数。 min_peak_memory integer 当前算子在所有DN上的最小内存峰值(MB)。 max_peak_memory integer 当前算子在所有DN上的最大内存峰值(MB)。 average_peak_memory integer 当前算子在所有DN上的平均内存峰值(MB)。 memory_skew_percent integer 当前算子在各DN间的内存使用倾斜率。 min_spill_size integer 若发生下盘,所有DN上下盘的最小数据量(MB),默认为0。 max_spill_size integer 若发生下盘,所有DN上下盘的最大数据量(MB),默认为0。 average_spill_size integer 若发生下盘,所有DN上下盘的平均数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,DN间下盘倾斜率。 min_cpu_time bigint 该算子在所有DN上的最小执行时间(ms)。 max_cpu_time bigint 该算子在所有DN上的最大执行时间(ms)。 total_cpu_time bigint 该算子在所有DN上的总执行时间(ms)。 cpu_skew_percent integer DN间执行时间的倾斜率。 warning text 主要显示如下几类告警信息: Sort/SetOp/HashAgg/HashJoin spill Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict 父主题: Operator
  • ADM_OBJECTS ADM_OBJECTS视图显示数据库中所有数据库对象的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_OBJECTS字段 名称 类型 描述 owner name 对象的所有者。 object_name name 对象的名称。 object_id oid 对象的OID。 object_type name 对象的类型。例如table,schema,index等。 namespace oid 对象所在的命名空间。 temporary character(1) 对象是否为临时对象。 status character varying(7) 对象的状态。 valid:有效。 invalid:已失效。 subobject_name name 对象的子对象名称。 generated character(1) 对象名称是否是系统生成。 created timestamp with time zone 对象的创建时间。 last_ddl_time timestamp with time zone 对象的最后修改时间。 default_collation character varying(100) 对象的默认排序规则。 data_object_id numeric 暂不支持,值为NULL。 timestamp character varying(19) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 edition_name character varying(128) 暂不支持,值为NULL。 sharing character varying(18) 暂不支持,值为NULL。 editionable character varying(1) 暂不支持,值为NULL。 oracle_maintained character varying(1) 暂不支持,值为NULL。 application character varying(1) 暂不支持,值为NULL。 duplicated character varying(1) 暂不支持,值为NULL。 sharded character varying(1) 暂不支持,值为NULL。 created_appid numeric 暂不支持,值为NULL。 modified_appid numeric 暂不支持,值为NULL。 created_vsnid numeric 暂不支持,值为NULL。 modified_vsnid numeric 暂不支持,值为NULL。 created和last_ddl_time支持的范围请参见PG_OBJECT中的记录范围。 父主题: 其他系统视图
  • PV_FILE_STAT PV_FILE_STAT视图通过对数据文件I/O的统计,反映数据的I/O性能,用以发现I/O操作异常等性能问题。具体字段信息如表1所示。 表1 PV_FILE_STAT字段 名称 类型 描述 filenum oid 文件标识。 dbid oid 数据库标识。 spcid oid 表空间标识。 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件块的数目。 phyblkwrt bigint 写物理文件块的数目。 readtim bigint 读文件的总时长,单位微秒。 writetim bigint 写文件的总时长,单位微秒。 avgiotim bigint 读写文件的平均时长,单位微秒。 lstiotim bigint 最后一次读文件时长,单位微秒。 miniotim bigint 读写文件的最小时长,单位微秒。 maxiowtm bigint 读写文件的最大时长,单位微秒。 父主题: 其他系统视图
  • GLOBAL_TRANSACTIONS_RUNNING_XACTS 显示集群中各个CN和DN节点运行事务的信息,如表1所示。 表1 GLOBAL_TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务(lazy vacuum是一种vacuum机制,在需要时进行vacuum)。 true:表示是。 false:表示否。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id号。 父主题: Transaction
  • MY_TYPES MY_TYPES视图用于描述当前用户所拥有的所有对象类型。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 MY_TYPES字段 名称 类型 描述 type_name character varying(128) 类型名称。 type_oid raw 类型的标识符(OID)。 typecode character varying(128) 类型的类型代码。 attributes numeric 类型中的属性数。 methods numeric 暂不支持,值为0。 predefined character varying(3) 表示该类型是否是内置类型。 incomplete character varying(3) 表示类型是否为不完整类型。 final character varying(3) 暂不支持,值为NULL。 instantiable character varying(3) 暂不支持,值为NULL。 persistable character varying(3) 暂不支持,值为NULL。 supertype_owner character varying(128) 暂不支持,值为NULL。 supertype_name character varying(128) 暂不支持,值为NULL。 local_attributes numeric 暂不支持,值为NULL。 local_methods numeric 暂不支持,值为NULL。 typeid raw 暂不支持,值为NULL。 父主题: 其他系统视图
  • SUMMARY_STAT_DATABASE_CONFLICTS 显示集群内所有数据库冲突状态的统计信息(在CN节点使用,按数据库名对每个节点的冲突状态的统计信息汇总求和),如表1所示。 表1 SUMMARY_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • MY_TAB_PARTITIONS MY_TAB_PARTITIONS视图显示当前用户下所有一级分区信息(包括二级分区表)。当前用户下每个分区表的一级分区都会在MY_TAB_PARTITIONS中有一条记录。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。分布式暂不支持二级分区,所以该视图中暂不存储二级分区表的一级分区信息。 表1 MY_TAB_PARTITIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 table_name character varying(64) 表的名称。 partition_name character varying(64) 分区名称。 high_value text 分区的边界值。 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 tablespace_name name 分区表的表空间名称。 schema character varying(64) 名称空间的名称。 composite character varying(3) 表是否为二级分区表。 subpartition_count numeric 暂不支持,值为NULL。 high_value_length integer 分区边界值表达式的长度。 partition_position numeric 分区在表中的位置。 pct_free numeric 块中可用空间的最小百分比。 pct_used numeric 暂不支持,值为NULL。 ini_trans numeric 初始事务数,默认值为4,非USTORE分区表时为NULL。 max_trans numeric 最大事务数,默认值为128,非USTORE分区表时为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 是否记录对表的更改。 compression character varying(8) 表分区的实际压缩属性。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此分区的日期。 buffer_pool character varying(7) 用于分区块的缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 is_nested character varying(3) 指示这是否是嵌套表分区。 parent_table_partition character varying(128) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。分布式暂不支持间隔分区,该字段值为NO。 segment_created character varying(4) 表分区是否创建了段。 indexing character varying(4) 暂不支持,值为NULL。 read_only character varying(4) 暂不支持,值为NULL。 inmemory character varying(8) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(100) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 父主题: 分区表
  • MY_JOBS MY_JOBS视图显示当前用户拥有的定时任务的详细信息。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 MY_JOBS字段 名称 类型 描述 job bigint 作业id。 log_user name 创建者的UserName。 priv_user name 作业执行者的UserName。 dbname name 创建作业的数据库名称。 schema_user name 定时任务的默认模式名。 start_date timestamp without time zone 作业第一次开始执行的时间。 start_suc text 作业第一次成功执行对应的开始时间。 last_date timestamp without time zone 上次运行的开始时间。 last_suc text 上次成功运行的开始时间。 last_sec text 上次成功运行的开始时间,提供兼容性支持。 this_date timestamp without time zone 正在运行任务的开始时间。 this_suc text 正在运行任务的开始时间。 this_sec text 正在运行任务的开始时间,提供兼容性支持。 next_date timestamp without time zone 任务下次执行时间。 next_suc text 任务下次执行时间。 next_sec text 任务下次执行时间,提供兼容性支持。 total_time numeric 任务最近一次的执行时长。 broken text 如果status字段取值为d,broken则为'y',否则broken为n。 status "char" 本步骤的执行状态,取值范围:(r、s、f、d),默认为r,取值含义: r:运行中。 s:执行成功。 f:执行失败。 d:取消执行。 interval text 用来计算下次运行时间的时间表达式,如果为null则表示定时任务只执行一次。 failures smallint 失败计数,若作业连续执行失败16次,则不再继续执行。 what text 可执行的作业。 nls_env character varying(4000) 暂不支持,值为NULL。 misc_env raw 暂不支持,值为NULL。 instance numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • 事务ID和快照 内部事务ID类型(xid)是64位。这些函数使用的数据类型txid_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述如表14所示。 表14 快照组件 名称 描述 xmin 最早的事务ID(txid)仍然活动。所有较早事务将是已经提交可见的,或者是直接回滚。 xmax 作为尚未分配的txid。所有大于或等于此txids的都是尚未开始的快照时间,因此不可见。 xip_list 当前快照中活动的txids。这个列表只包含在xmin和xmax之间活动的txids,有可能活动的txids高于xmax。介于大于等于xmin、小于xmax,并且不在这个列表中的txid,在这个时间快照已经完成的,因此按照提交状态查看他是可见还是回滚。这个列表不包含子事务的txids。 txid_snapshot的文本表示为:xmin:xmax:xip_list。 示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip_list=10, 14, 15。 以下的函数在一个输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪一个事务提交。 pgxc_is_committed(transaction_id) 描述:如果普通表提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行、准备、冻结等)。如果在维护模式(GUC参数xc_maintenance_mode为on时)下,会遍历所有bucketid和普通表对应的xid状态,如果有状态冲突,例如同一个xid,在bucket1状态为提交,在bucket2为回滚则报错。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。 返回类型:Boolean pgxc_is_committed(transaction_id, bucketid) 描述:如果指定bucketid提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行、准备、冻结等), bucketid是hashbucket表的物理bucketid,普通表为-1。如果在维护模式(GUC参数xc_maintenance_mode为on时)下,指定bucketid为-1,会遍历所有bucketid和普通表对应的xid状态,如果有状态冲突,例如同一个xid,在bucket1状态为提交,在bucket2为回滚则报错。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。 返回类型:Boolean txid_current() 描述:获取当前事务ID。 返回类型:bigint gs_txid_oldestxmin() 描述:获取当前最小事务id的值oldesxmin。 返回类型:bigint txid_current_snapshot() 描述:获取当前快照。 返回类型:txid_snapshot txid_snapshot_xip(txid_snapshot) 描述:在快照中获取正在进行的事务ID。 返回类型:setof bigint txid_snapshot_xmax(txid_snapshot) 描述:获取快照的xmax。 返回类型:bigint txid_snapshot_xmin(txid_snapshot) 描述:获取快照的xmin。 返回类型:bigint txid_visible_in_snapshot(bigint, txid_snapshot) 描述:在快照中事务ID是否可见(不使用子事务ID)。 返回类型:Boolean get_local_prepared_xact() 描述:获取当前节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的oid,database的oid及当前节点的node_name。 返回类型:xid, text, timestamptz, oid, text get_remote_prepared_xacts() 描述:获取所有远程节点两阶段残留事务信息,包括事务id,两阶段gid名称,prepared的时间,owner的名称,database的名称及node_name。 返回类型:xid, text, timestamptz, name, text global_clean_prepared_xacts(text, text) 描述:并发清理两阶段残留事务,仅gs_clean工具调用该函数进行清理,其他情况下调用均返回false。 返回类型:Boolean pgxc_stat_get_wal_senders() 描述:返回集群中所有主DN的发送日志的信息和其对应的备DN的接收日志的信息。仅支持system admin或monitor admin权限用户使用。 返回值如表15所示。 表15 pgxc_stat_get_wal_senders返回参数说明 字段名 描述 nodename 实例名。 sender_pid 发送日志的线程pid。 local_role 实例角色。 peer_role 接收端的实例的角色。 peer_state 接收端的实例的状态。 state 实例间同步的状态。 sender_sent_location 发送端发送日志的位置。 sender_write_location 发送端写日志的位置。 sender_flush_location 发送端刷盘日志的位置。 sender_replay_location 当前实例的日志位置。如果是主DN,则该位置和 sender_flush_location相同;否则该位置为当前实例日志回放到的位置。 receiver_received_location 接收端日志接收到的位置。 receiver_write_location 接收端日志写的位置。 receiver_flush_location 接收端日志刷盘的位置。 receiver_replay_location 接收端日志回放的位置。 pgxc_stat_get_wal_senders_status() 描述:返回所有节点事务日志接收状态。仅支持system admin或monitor admin权限用户使用。 返回值如表16所示。 表16 pgxc_stat_get_wal_senders_status返回参数说明 字段名 描述 nodename 主节点名。 source_ip 主节点IP。 source_port 主节点端口。 dest_ip 备节点IP。 dest_port 备节点端口。 sender_pid 发送线程PID。 local_role 主节点类型。 peer_role 备节点类型。 peer_state 备节点状态。 state wal sender状态。 sender_sent_location 主节点发送位置。 sender_write_location 主节点落盘位置。 sender_replay_location 主节点redo位置。 receiver_received_location 备节点接收位置。 receiver_write_location 备节点落盘位置。 receiver_flush_location 备节点flush磁盘位置。 receiver_replay_location 备节点redo位置。 gs_get_next_xid_csn() 描述:返回全局所有节点上的next_xid和next_csn值。 返回值如表17所示。 表17 gs_get_next_xid_csn返回参数说明 字段名 描述 nodename 节点名称。 next_xid 当前节点下一个事务id号。 next_csn 当前节点下一个csn号。 pg_control_system() 描述:返回系统控制文件状态。 返回类型:SETOF record pg_control_checkpoint() 描述:返回系统检查点状态。 返回类型:SETOF record get_prepared_pending_xid() 描述:当恢复完成时,返回nextxid。 参数:nan 返回值类型:text pg_clean_region_info() 描述:清理regionmap。 参数:nan 返回值类型:character varying pg_get_replication_slot_name() 描述:获取slot name。 参数:nan 返回值类型:text pg_get_running_xacts() 描述:获取运行中的xact。 参数:nan 返回值类型:handle integer, gxid xid, state tinyint, node text, xmin xid, vacuum boolean, timeline bigint, prepare_xid xid, pid bigint, next_xid xid pg_get_variable_info() 描述:获取共享内存变量cache。 参数:nan 返回值类型:node_name text, nextOid oid, nextXid xid, oldestXid xid, xidVacLimit xid, oldestXidDB oid, lastExtendCSNLogpage xid, startExtendCSNLogpage xid, nextCommitSeqNo xid, latestCompletedXid xid, startupMaxXid xid pg_get_xidlimit() 描述:从共享内存获取事物id信息。 参数:nan 返回值类型:nextXid xid, oldestXid xid, xidVacLimit xid, xidWarnLimit xid, xidStopLimit xid, xidWrapLimit xid, oldestXidDB oid pg_relation_compression_ratio() 描述:查询表压缩率,默认返回1.0。 参数:text 返回值类型:real pg_relation_with_compression() 描述:查询表是否压缩。 参数:text 返回值类型:boolean pg_stat_file_recursive() 描述:列出路径下所有文件。 参数:location text 返回值类型:path text, filename text, size bigint, isdir boolean pg_stat_get_activity_for_temptable() 描述:返回临时表相关的后台线程的记录。 参数:nan 返回值类型:datid oid, timelineid integer, tempid integer, sessionid bigint pg_stat_get_activity_ng() 描述:返回nodegroup相关的后台线程的记录。 参数:pid bigint 返回值类型:datid oid, pid bigint, sessionid bigint, node_group text pg_stat_get_cgroup_info() 描述:返回cgroup信息。 参数:nan 返回值类型:cgroup_name text, percent integer, usage_percent integer, shares bigint, usage bigint, cpuset text, relpath text, valid text, node_group text pg_stat_get_realtime_info_internal() 描述:返回实时信息,当前该接口已不可用,返回FailedToGetSessionInfo。 参数:oid, oid, bigint, cstring, oid 返回值类型:text pg_stat_get_wlm_session_iostat_info() 描述:返回会话负载I/O信息。 参数:nan 返回值类型:threadid bigint, maxcurr_iops integer, mincurr_iops integer, maxpeak_iops integer, minpeak_iops integer, iops_limits integer, io_priority integer, curr_io_limits integer pg_test_err_contain_err() 描述:测试错误类型和返回信息。 参数:integer 返回值类型:void pv_session_memory_detail_tp() 描述:返回会话的内存使用情况,参考pv_session_memory_detail。 参数:nan 返回值类型:sessid text, sesstype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint gs_get_table_distribution() 描述:返回表数据在各个数据节点的分布情况。 参数:table_name text, schema_name text 返回值类型:text pv_builtin_functions() 描述:查看所有内置系统函数信息。 参数:nan 返回值类型:proname name, pronamespace oid, proowner oid, prolang oid, procost real, prorows real, provariadic oid, protransform regproc, proisagg boolean, proiswindow boolean, prosecdef boolean, proleakproof boolean, proisstrict boolean, proretset boolean, provolatile "char", pronargs smallint, pronargdefaults smallint, prorettype oid, proargtypes oidvector, proallargtypes integer[], proargmodes "char"[], proargnames text[], proargdefaults pg_node_tree, prosrc text, probin text, proconfig text[], proacl aclitem[], prodefaultargpos int2vector, fencedmode boolean, proshippable boolean, propackage boolean, oid oid pv_thread_memory_detail() 描述:返回各线程的内存信息。 参数:nan 返回值类型:threadid text, tid bigint, thrdtype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint pg_shared_memory_detail() 描述:返回所有已产生的共享内存上下文的使用信息,各列描述请参考SHARED_MEMORY_DETAIL。 参数:nan 返回值类型:contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint pgxc_get_running_xacts() 描述:返回集群中各个节点运行事务的信息,字段内容和PGXC_RUNNING_XACTS相同。只有system admin和monitor admin用户有权限查看。 参数:nan 返回值类型:setof record pgxc_snapshot_status() 描述:在GTM模式下,返回GTM中关键内存信息状态,用来支持问题定位,GTM-Free、GTM-Lite不支持本函数。 参数:nan 返回值类型:xmin xid, xmax xid, xcnt int, oldestxmin xid, next_xid xid, timeline int, active_thread_num int, max_active_thread_num int, snapshot_num int, snapshot_totalsize bigint 返回值描述如表18所示。 表18 get_gtm_lite_status返回参数说明 字段名 描述 xmin GTM上当前最小的活跃事务id。 xmax GTM上当前提交的最大的事务id + 1,大于等于该值的事务id是活跃的。 xcnt GTM上当前活跃事务个数。 oldestxmin GTM上最老被访问的事务id号。 next_xid GTM上下一个分配的事务id号。 timeline GTM上当前的时间线。 active_thread_num GTM上当前活跃的工作线程数。 max_active_thread_num GTM上1分钟内工作线程数峰值。 snapshot_num GTM上1分钟内下发的快照个数。 snapshot_totalsize GTM上1分钟内下发快照总大小。 get_gtm_lite_status() 描述:返回GTM上的backupXid和csn号,用来支持问题定位,GTM-FREE模式下不支持使用本系统函数。 返回值如表19所示。 表19 get_gtm_lite_status返回参数说明 字段名 描述 backup_xid GTM上的备份Xid值。 csn GTM当前下发的最新的csn号。 adm_hist_snapshot_func() 描述:返回快照执行时间相关信息,访问该函数需要打开enable_wdr_snapshot参数,并且需要snapshot schema, snapshot表和tables_snap_timestamp表的访问权限。 参数:nan 返回值类型:snap_id bigint, dbid oid, begin_interval_time timestamp(3), end_interval_time timestamp(3), flush_elapsed interval day(5) to second(1), begin_interval_time_tz timestamp(3) with time zone, end_interval_time_tz timestamp(3) with time zone global_sql_patch_func() 描述:全局各个节点上的SQL PATCH信息,用于返回global_sql_patch视图的结果。 返回值如表20所示。 表20 global_sql_patch_func返回参数说明 名称 类型 描述 node_name text SQLpatch所在节点名。 patch_name name PATCH名称。 unique_sql_id bigint 查询全局唯一ID。 owner oid PATCH的创建用户ID。 enable boolean PATCH是否生效。 status "char" PATCH的状态(预留字段)。 abort boolean 是否是AbortHint。 hint_string text Hint文本。 description text PATCH的备注。 parent_unique_sql_id bigint PATCH生效的SQL语句的外层语句的全局唯一ID,存储过程外的语句该值为0,存储过程内的语句该值为调用该存储过程语句的全局唯一ID。 gs_get_current_version() 描述:依据当前编译宏返回当前编译模式,返回'M'。 参数:nan 返回值类型:char gs_get_kernel_info() 描述:全局各个CN、DN主节点上的事务相关的信息。 返回值如表21所示。 表21 gs_get_kernel_info返回参数说明 名称 类型 描述 node_name text 节点名。 module text 模块名。包括: XACT(事务模块)。 STANDBY(备机模块)。 UNDO(undo模块)。 HOTPATH(热补丁模块)。 name text 探查内存态关键数据名字。包括: startup_max_xid(线程启动时最大的xid值)。 recent_local_xmin(本地活跃事务最小xid值)recent_global_xmin(全局活跃事务最小xid值)。 standby_xmin(备机活跃事务最小xid值)。 standby_redo_cleanup_xmin(备机redo时cleanup日志最小xid值)。 standby_redo_cleanup_xmin_lsn(备机redo时cleanup日志最小xid的LSN值)。 local_csn_min(本地活跃事务最小CSN值)。 replication_slot_xmin(复制槽的最小xid值)。 replication_slot_catalog_xmin(catalog复制槽最小xid值)。 global_recycle_xid(全局undo回收事务的最小xid值)。 global_frozen_xid(全局冻结事务的最小的xid值)。 recent_xmin(当前会话活跃事务最小xid值)。 next_csn(下一个事务的CSN值)。 hotpatch_additional_info(热补丁预留字段)。 stmt_session_discard_records(内核支持全量SQL因slot满丢弃数据量)。 stmt_shm_flush_discard_records(内核支持全量SQL因ringbuf满丢弃数据量)。 value text 探查内存态关键数据值。 示例: gaussdb=# SELECT * FROM gs_get_kernel_info(); node_name | module | name | value --------------+---------+-------------------------------+--------- coordinator1 | XACT | startup_max_xid | 16488 coordinator1 | XACT | recent_local_xmin | 16504 coordinator1 | XACT | recent_global_xmin | 16503 coordinator1 | STANDBY | standby_xmin | 0 coordinator1 | STANDBY | standby_redo_cleanup_xmin | 0 coordinator1 | STANDBY | standby_redo_cleanup_xmin_lsn | 0/0 coordinator1 | XACT | local_csn_min | 6014225 coordinator1 | XACT | replication_slot_xmin | 0 coordinator1 | XACT | replication_slot_catalog_xmin | 0 coordinator1 | UNDO | global_recycle_xid | 16501 coordinator1 | XACT | global_frozen_xid | 0 coordinator1 | XACT | recent_xmin | 16504 coordinator1 | XACT | next_csn | 6014226 coordinator1 | HOTPATH | hotpatch_additional_info | coordinator1 | FULL_SQL| stmt_session_discard_records | 0 coordinator1 | FULL_SQL| stmt_shm_flush_discard_records| 0 datanode1 | XACT | startup_max_xid | 16488 datanode1 | XACT | recent_local_xmin | 15805 datanode1 | XACT | recent_global_xmin | 15805 datanode1 | STANDBY | standby_xmin | 0 datanode1 | STANDBY | standby_redo_cleanup_xmin | 0 datanode1 | STANDBY | standby_redo_cleanup_xmin_lsn | 0/0 datanode1 | XACT | local_csn_min | 6014225 datanode1 | XACT | replication_slot_xmin | 0 datanode1 | XACT | replication_slot_catalog_xmin | 0 datanode1 | UNDO | global_recycle_xid | 15805 datanode1 | XACT | global_frozen_xid | 0 datanode1 | XACT | recent_xmin | 15805 datanode1 | XACT | next_csn | 6014226 datanode1 | HOTPATH | hotpatch_additional_info | datanode1 | FULL_SQL| stmt_session_discard_records | 0 datanode1 | FULL_SQL| stmt_shm_flush_discard_records| 0 (32 row)
  • 注释信息函数 col_description(table_oid, column_number) 描述:获取一个表字段的注释。 返回类型:text 备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。 obj_description(object_oid, catalog_name) 描述:获取一个数据库对象的注释。 返回类型:text 备注:带有两个参数的obj_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名称声明。比如,obj_description(123456,'pg_class')将返回OID为123456的表的注释。只带一个参数的obj_description只要求对象OID。 obj_description不能用于表字段,因为字段没有自己的OID。 obj_description(object_oid) 描述:获取一个数据库对象的注释。 返回类型:text shobj_description(object_oid, catalog_name) 描述:获取一个共享数据库对象的注释。 返回类型:text 备注:shobj_description和obj_description差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于集群中所有数据库的全局表,因此这些表的注释也是全局存储的。
  • 模式可见性查询函数 每个函数执行检查数据库对象类型的可见性。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名称和相关索引的访问方法。 所有这些函数都需要使用OID来标识需要检查的对象。如果用户想通过名称测试对象,则使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)将会很方便。 比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,则这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名称: 1 gaussdb=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); pg_collation_is_visible(collation_oid) 描述:该排序是否在搜索路径中可见。 返回类型:Boolean pg_conversion_is_visible(conversion_oid) 描述:该转换是否在搜索路径中可见。 返回类型:Boolean pg_function_is_visible(function_oid) 描述:该函数是否在搜索路径中可见。 返回类型:Boolean pg_opclass_is_visible(opclass_oid) 描述:该操作符类是否在搜索路径中可见。 返回类型:Boolean pg_operator_is_visible(operator_oid) 描述:该操作符是否在搜索路径中可见。 返回类型:Boolean pg_opfamily_is_visible(opclass_oid) 描述:该操作符族是否在搜索路径中可见。 返回类型:Boolean pg_table_is_visible(table_oid) 描述:该表是否在搜索路径中可见。 返回类型:Boolean pg_ts_config_is_visible(config_oid) 描述:该文本检索配置是否在搜索路径中可见。 返回类型:Boolean pg_ts_dict_is_visible(dict_oid) 描述:该文本检索词典是否在搜索路径中可见。 返回类型:Boolean pg_ts_parser_is_visible(parser_oid) 描述:该文本搜索解析是否在搜索路径中可见。 返回类型:Boolean pg_ts_template_is_visible(template_oid) 描述:该文本检索模板是否在搜索路径中可见。 返回类型:Boolean pg_type_is_visible(type_oid) 描述:该类型(或域)是否在搜索路径中可见。 返回类型:Boolean
  • 系统表信息函数 format_type(type_oid, typemod) 描述:获取数据类型的SQL名称。 返回类型:text 备注:format_type通过某个数据类型的OID以及可能的修饰词,返回其SQL名称。如果不知道具体的修饰词,则在修饰词的位置传入NULL。修饰词一般只对有长度限制的数据类型有意义。format_type所返回的SQL名称中包含数据类型的长度值,其大小是:实际存储长度len - sizeof(int32),单位字节。原因是数据存储时需要32位的空间来存储用户对数据类型的自定义长度信息,即实际存储长度要比用户定义长度多4个字节。在下例中,format_type返回的SQL名称为“character varying(6)”,6表示varchar类型的长度值是6字节,因此该类型的实际存储长度为10字节。 1 2 3 4 5 gaussdb=# SELECT format_type((SELECT oid FROM pg_type WHERE typname='varchar'), 10); format_type ---------------------- character varying(6) (1 row) pg_check_authid(role_oid) 描述:检查是否存在给定oid的角色名。 返回类型:Boolean gaussdb=# select pg_check_authid(1); pg_check_authid ----------------- f (1 row) pg_describe_object(catalog_id, object_id, object_sub_id) 描述:获取数据库对象的描述。 返回类型:text 备注:pg_describe_object返回由目录OID,对象OID和一个(或许0个)子对象ID指定的数据库对象的描述。这有助于确认存储在pg_depend系统表中对象的身份。 pg_get_constraintdef(constraint_oid) 描述:获取约束的定义。 返回类型:text pg_get_constraintdef(constraint_oid, pretty_bool) 描述:获取约束的定义。 返回类型:text 备注:pg_get_constraintdef和pg_get_indexdef分别从约束或索引上使用创建命令进行重构。 pg_get_expr(pg_node_tree, relation_oid) 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 返回类型:text pg_get_expr(pg_node_tree, relation_oid, pretty_bool) 描述:反编译表达式的内部形式,假设其中的任何Vars都引用第二个参数指定的关系。 返回类型:text 备注:pg_get_expr反编译一个独立表达式的内部形式,比如一个字段的缺省值。便于检查系统表的内容。如果表达式可能包含关键字,则指定关键字引用相关的OID作为第二个参数;如果没有关键字,用零表示即可。 pg_get_functiondef(func_oid) 描述:获取函数的定义。 返回类型:text 示例: gaussdb=# SELECT * FROM pg_get_functiondef(598); headerlines | definition -------------+---------------------------------------------------- 4 | CREATE OR REPLACE FUNCTION pg_catalog.abbrev(inet)+ | RETURNS text + | LANGUAGE internal + | IMMUTABLE STRICT NOT FENCED NOT SHIPPABLE + | AS $function$inet_abbrev$function$ + | (1 row) pg_get_function_arguments(func_oid) 描述:获取函数定义的参数列表(带默认值)。 返回类型:text 备注:pg_get_function_arguments返回一个函数的参数列表,需要在CREATE FUNCTION中使用这种格式。 pg_get_function_identity_arguments(func_oid) 描述:获取参数列表来确定一个函数 (不带默认值)。 返回类型:text 备注:pg_get_function_identity_arguments返回需要的参数列表用来标识函数,这种形式需要在ALTER FUNCTION中使用,并且这种形式省略了默认值。 pg_get_function_result(func_oid) 描述:获取函数的RETURNS子句。 返回类型:text 备注:pg_get_function_result为函数返回适当的RETURNS子句。 pg_get_indexdef(index_oid) 描述:获取索引的CREATE INDEX命令。 返回类型:text 示例: gaussdb=# SELECT * FROM pg_get_indexdef(16416); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default (1 row) pg_get_indexdef(index_oid, dump_schema_only) 描述:获取索引的CREATE INDEX命令,仅用于dump场景。当前版本dump_schema_only参数取值对函数输出结果无影响。 返回类型:text 示例: gaussdb=# SELECT * FROM pg_get_indexdef(16416, true); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default (1 row) pg_get_indexdef(index_oid, column_no, pretty_bool) 描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。 返回类型:text 示例: gaussdb=# SELECT * FROM pg_get_indexdef(16416, 0, false); pg_get_indexdef ------------------------------------------------------------------------- CREATE INDEX test3_b_idx ON test3 USING btree (b) TABLESPACE pg_default (1 row) gaussdb=# SELECT * FROM pg_get_indexdef(16416, 1, false); pg_get_indexdef ----------------- b (1 row) 备注:pg_get_functiondef为函数返回一个完整的CREATE OR REPLACE FUNCTION语句。 pg_get_keywords() 描述:获取SQL关键字和类别列表。 返回类型:setof record 备注:pg_get_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的、C表示列名、T表示类型或函数名、R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 pg_get_ruledef(rule_oid) 描述:获取规则的CREATE RULE命令。 返回类型:text pg_get_ruledef(rule_oid, pretty_bool) 描述:获取规则的CREATE RULE命令。 返回类型:text pg_get_userbyid(role_oid) 描述:获取给定OID的角色名。 返回类型:name 备注:pg_get_userbyid通过角色的OID抽取对应的用户名。 pg_check_authid(role_id) 描述:通过role_id检查用户是否存在。 返回类型:text gaussdb=# SELECT pg_check_authid(20); pg_check_authid ----------------- f (1 row) pg_get_viewdef(view_name) 描述:为视图获取底层的SELECT命令。 返回类型:text pg_get_viewdef(view_name, pretty_bool) 描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。 返回类型:text 备注:pg_get_viewdef重构出定义视图的SELECT查询。这些函数通常都有两种形式,其中带有pretty_bool参数且参数为true时,是“适合打印”的结果,这种格式更容易读。另一种是缺省的格式,更有可能被将来的不同版本用同样的方法解释。如果是用于转储,那么尽可能避免使用适合打印的格式。给pretty-print参数传递false生成的结果和没有这个参数的变种生成的结果完全一样。 pg_get_viewdef(view_oid) 描述:为视图获取底层的SELECT命令 返回类型:text pg_get_viewdef(view_oid, pretty_bool) 描述:为视图获取底层的SELECT命令,如果pretty_bool为true,行字段可以包含80列。 返回类型:text pg_get_viewdef(view_oid, wrap_column_int) 描述:为视图获取底层的SELECT命令;行字段被换到指定的列数,打印是隐含的。 返回类型:text pg_get_tabledef(table_oid) 描述:根据table_oid获取表定义。 返回类型:text 示例: gaussdb=# SELECT * FROM pg_get_tabledef(16384); pg_get_tabledef ------------------------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass) + ) + WITH (orientation=row, compression=no) + DISTRIBUTE BY HASH(c1) + TO GROUP group1; + ILM Security Policies: + POLICY "p4" TABLE + ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION + STATUS: ENABLED DELETED: NO + (1 row) pg_get_tabledef(table_name) 描述:根据table_name获取表定义。 返回类型:text 示例: gaussdb=# SELECT * FROM pg_get_tabledef('t1'); pg_get_tabledef ------------------------------------------------------------------------- SET search_path = public; + CREATE TABLE t1 ( + c1 bigint DEFAULT nextval('serial'::regclass) + ) + WITH (orientation=row, compression=no) + DISTRIBUTE BY HASH(c1) + TO GROUP group1; + ILM Security Policies: + POLICY "p4" TABLE + ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION + STATUS: ENABLED DELETED: NO + (1 row) 备注:pg_get_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments和ilm策略信息。对于表对象依赖的group、schema、tablespace、server等信息,需要用户自己创建。 pg_options_to_table(reloptions) 描述:获取存储选项名称/值对的集合 返回类型:setof record 备注:pg_options_to_table当通过pg_class.reloptions或pg_attribute.attoptions时返回存储选项名称/值对(option_name/option_value)的集合。 pg_tablespace_databases(tablespace_oid) 描述:获取在指定的表空间中有对象的数据库OID集合 返回类型:setof oid 备注:pg_tablespace_databases允许检查表空间的状况,返回在该表空间中保存了对象的数据库OID集合。如果这个函数返回数据行,则该表空间就是非空的,因此不能删除。要显示该表空间中的特定对象,用户需要连接pg_tablespace_databases标识的数据库与查询pg_class系统表。 pg_tablespace_location(tablespace_oid) 描述:获取表空间所在的文件系统的路径 返回类型:text pg_typeof(any) 描述:获取任何值的数据类型 返回类型:regtype 备注:pg_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考对象标识符类型);这意味着它是一个为了比较而显示类型名称的OID。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pg_typeof(33); pg_typeof ----------- integer (1 row) gaussdb=# SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4 (1 row) collation for (any) 描述:获取参数的排序。 返回类型:text 备注:表达式collation for返回传递给他的值的排序。示例: 1 2 3 4 5 gaussdb=# SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default" (1 row) 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则提示一个错误。 getdistributekey(table_name) 描述:获取一个hash表的分布列。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT getdistributekey('item'); getdistributekey ------------------ i_item_sk (1 row)
  • 访问权限查询函数 DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权限,隐式拥有。 以下访问权限查询函数仅表示用户是否具有某对象上的某种对象权限,即返回记录在系统表acl字段中的对象权限拥有情况。 has_any_column_privilege(user, table, privilege) 描述:指定用户是否有访问表任何列的权限。 表2 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 table text,oid 表 表名称或表id。 privilege text 权限 SELECT:允许对指定表任何列执行SELECT语句。 INSERT:允许对指定表任何列执行INSERT语句。 UPDATE:允许对指定表任何列任意字段执行UPDATE语句。 REFERENCES:允许创建一个外键约束(分布式场景暂不支持)。 COMMENT:允许对指定表任何列执行COMMENT语句。 返回类型:Boolean has_any_column_privilege(table, privilege) 描述:当前用户是否有访问表任何列的权限,合法参数类型见表2。 返回类型:Boolean 备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。 has_column_privilege(user, table, column, privilege) 描述:指定用户是否有访问列的权限。 表3 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或者id。 table text,oid 表名 表的名字或id。 column text,smallint 列名 列的名字或属性号。 privilege text 权限 SELECT:允许对表的指定列执行SELECT语句。 INSERT:允许对表的指定列执行INSERT语句。 UPDATE:允许对表的指定列执行UPDATE语句。 REFERENCES:允许创建一个外键约束(分布式场景暂不支持)。 COMMENT:允许对表的指定列执行COMMENT语句。 返回类型:Boolean has_column_privilege(table, column, privilege) 描述:当前用户是否有访问列的权限,合法参数类型见表3。 返回类型:Boolean 备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限。 has_cek_privilege(user, cek, privilege) 描述:指定用户是否有访问列加密密钥CEK的权限。 表4 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cek text,oid 列加密密钥 列加密密钥名称或id。 privilege text 权限 USAGE:允许使用指定列加密密钥。 DROP:允许删除指定列加密密钥。 返回类型:Boolean has_cmk_privilege(user, cmk, privilege) 描述:指定用户是否有访问客户端加密主密钥CMK的权限。 表5 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 cmk text,oid 客户端加密主密钥 客户端加密主密钥名称或id。 privilege text 权限 USAGE:允许使用指定客户端加密主密钥。 DROP:允许删除指定客户端加密主密钥。 返回类型:Boolean has_database_privilege(user, database, privilege) 描述:指定用户是否有访问数据库的权限。 表6 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 database text,oid 数据库 数据库名字或id。 privilege text 权限 CREATE:对于数据库,允许在数据库里创建新的模式。 TEMPORARY:允许在使用数据库的时候创建临时表。 TEMP:允许在使用数据库的时候创建临时表。 CONNECT:允许用户连接到指定的数据库。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 COMMENT:允许用户定义或修改指定对象的注释。 返回类型:Boolean has_database_privilege(database, privilege) 描述:当前用户是否有访问数据库的权限,合法参数类型见表6。 返回类型:Boolean 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。 has_directory_privilege(user, directory, privilege) 表7 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 directory text,oid 目录 目录名字或者oid。 privilege text 权限 READ:允许对该目录进行读操作。 WRITE:允许对该目录进行写操作。 描述:指定用户是否有访问directory的权限。 返回类型:Boolean has_directory_privilege(directory, privilege) 描述:当前用户是否有访问directory的权限,合法参数类型见表7。 返回类型:Boolean has_foreign_data_wrapper_privilege(user, fdw, privilege) 表8 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或者id。 fdw text,oid 外部数据封装器 外部数据封装器名字或id。 privilege text 权限 USAGE:允许访问外部数据封装器。 描述:指定用户是否有访问外部数据封装器的权限。 返回类型:Boolean has_foreign_data_wrapper_privilege(fdw, privilege) 描述:当前用户是否有访问外部数据封装器的权限,合法参数类型见表8。 返回类型:Boolean 备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_function_privilege(user, function, privilege) 表9 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或者id function text,oid 函数 函数名称或id privilege text 权限 EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 COMMENT:允许用户定义或修改指定对象的注释。 描述:指定用户是否有访问函数的权限。 返回类型:Boolean has_function_privilege(function, privilege) 描述:当前用户是否有访问函数的权限。合法参数类型见表9。 返回类型:Boolean 备注:has_function_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE。 has_language_privilege(user, language, privilege) 表10 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 用户名字或id。 language text,oid 语言 语言名称或id。 privilege text 权限 USAG:对于过程语言,允许用户在创建函数的时候指定过程语言。 描述:指定用户是否有访问语言的权限。 返回类型:Boolean has_language_privilege(language, privilege) 描述:当前用户是否有访问语言的权限。合法参数类型见表10。 返回类型:Boolean 备注:has_language_privilege检查用户是否能以特定方式访问一个过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。 has_nodegroup_privilege(user, nodegroup, privilege) 描述:检查用户是否有集群节点访问权限。 返回类型:Boolean 表11 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 已存在用户名称或id。 nodegroup text,oid 集群节点 已存在的集群节点。 privilege text 权限 USAGE:对于子集群,对包含在指定模式中的对象有访问权限时,USAGE允许访问指定子集群下的表对象。 CREATE:对于子集群,允许在子集群中创建表对象。 COMPUTE:针对计算子集群,允许用户在具有compute权限的计算子集群上进行弹性计算。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 has_nodegroup_privilege(nodegroup, privilege) 描述:检查用户是否有集群节点访问权限。 返回类型:Boolean has_schema_privilege(user, schema, privilege) 描述:指定用户是否有访问模式的权限。 返回类型:Boolean has_schema_privilege(schema, privilege) 描述:当前用户是否有访问模式的权限。 返回类型:Boolean 备注:has_schema_privilege检查用户是否能以特定方式访问一个模式。其参数类似has_table_privilege。访问权限类型必须是CREATE、USAGE、ALTER、DROP或COMMENT的一些组合。当检查类型里包含CREATE权限且被检查的Schema是用户同名的Schema时,由于同名Schema的特殊约束,必须拥有Schema的OWNER权限,该函数才会返回TRUE。 has_sequence_privilege(user, sequence, privilege) 描述:指定用户是否有访问序列的权限。 返回类型:Boolean 表12 参数类型说明 参数名 合法入参类型 描述 取值范围 user name,oid 用户 已存在用户名称或id。 sequence text,oid 序列 已存在序列名称或id。 privilege text 权限 USAGE:对于序列,USAGE允许使用nextval函数。 SELECT:允许创建序列。 UPDATE:允许执行UPDATE语句。 ALTER:允许用户修改指定对象的属性。 DROP:允许用户删除指定的对象。 COMMENT:允许用户定义或修改指定对象的注释。 has_sequence_privilege(sequence, privilege) 描述:指定当前用户是否有访问序列的权限。 返回类型:Boolean has_server_privilege(user, server, privilege) 描述:指定用户是否有访问外部服务的权限。 返回类型:Boolean has_server_privilege(server, privilege) 描述:当前用户是否有访问外部服务的权限。 返回类型:Boolean 备注:has_server_privilege检查用户是否能以指定方式访问一个外部服务器。其参数类似has_table_privilege。访问权限类型必须是USAGE、ALTER、DROP或COMMENT之一的值。 has_table_privilege(user, table, privilege) 描述:指定用户是否有访问表的权限。 返回类型:Boolean has_table_privilege(table, privilege) 描述:当前用户是否有访问表的权限。 返回类型:Boolean 备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名称或OID(pg_authid.oid)来指定,public表明PUBLIC伪角色,或如果缺省该参数,则使用current_user。该表可以通过名称或者OID声明。如果用名称声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明所希望的权限类型,这个文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCESTRIGGER、ALTER、DROP、COMMENT、INDEX或VACUUM之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果为true。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT has_table_privilege('tpcds.web_site', 'select'); has_table_privilege --------------------- t (1 row) gaussdb=# SELECT has_table_privilege('omm', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); has_table_privilege --------------------- t (1 row) has_tablespace_privilege(user, tablespace, privilege) 描述:指定用户是否有访问表空间的权限。 返回类型:Boolean has_tablespace_privilege(tablespace, privilege) 描述:当前用户是否有访问表空间的权限。 返回类型:Boolean 备注:has_tablespace_privilege检查用户是否能以特定方式访问一个表空间。其参数类似has_table_privilege。访问权限类型必须是CREATE、ALTER、DROP或COMMENT之一的值。 pg_has_role(user, role, privilege) 描述:指定用户是否有角色的权限。 返回类型:Boolean pg_has_role(role, privilege) 描述:当前用户是否有角色的权限。 返回类型:Boolean 备注:pg_has_role检查用户是否能以特定方式访问一个角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。 has_any_privilege(user, privilege) 描述:指定用户是否有某项ANY权限,若同时查询多个权限,只要具有其中一个则返回true。 返回类型:Boolean 表13 参数类型说明 参数名 合法入参类型 描述 取值范围 user name 用户 已存在的用户名。 privilege text ANY权限 可选取值: CREATE ANY TABLE [WITH ADMIN OPTION] ALTER ANY TABLE [WITH ADMIN OPTION] DROP ANY TABLE [WITH ADMIN OPTION] SELECT ANY TABLE [WITH ADMIN OPTION] INSERT ANY TABLE [WITH ADMIN OPTION] UPDATE ANY TABLE [WITH ADMIN OPTION] DELETE ANY TABLE [WITH ADMIN OPTION] CREATE ANY SEQUENCE [WITH ADMIN OPTION] CREATE ANY INDEX [WITH ADMIN OPTION] CREATE ANY FUNCTION [WITH ADMIN OPTION] EXECUTE ANY FUNCTION [WITH ADMIN OPTION] CREATE ANY TYPE [WITH ADMIN OPTION]
共100000条