华为云用户手册

  • DB_IND_PARTITIONS DB_IND_PARTITIONS视图显示当前用户所能访问的一级分区表Local索引的索引分区信息(不包含分区表全局索引)。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_IND_PARTITIONS字段 名称 类型 描述 index_owner character varying(64) 索引分区所属分区表索引的所有者的名称。 index_name character varying(64) 索引分区所属分区表索引的名称。 partition_name character varying(64) 索引分区的名称。 def_tablespace_name name 索引分区的表空间名称。 high_value text 索引分区所对应分区的上边界。 index_partition_usable boolean 索引分区是否可用。 t(true):表示可用。 f(false):表示不可用。 schema character varying(64) 索引分区所属分区表索引的模式。 high_value_length integer 索引分区所对应分区的边界的字符长度。 composite character varying(3) 索引是否属于二级分区表上的本地索引,该表不存储二级分区信息,所以该值为NO。 subpartition_count numeric 分区中的二级分区数,该表不存储二级分区信息,所以该值为0。 partition_position numeric 索引分区在索引中的位置。 status character varying(8) 索引分区是否可用。 tablespace_name name 分区所在表空间的名称。 pct_free numeric 块中最小可用空间百分比。 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(13) 分区索引是否启用索引压缩。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 根据索引的值表示表中行的顺序。需要通过执行analyze进行统计。 num_rows numeric 分区中的行数。需要通过执行vacuum进行统计。 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。 user_stats character varying(3) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。 segment_created character varying(3) 索引分区段是否已创建。 orphaned_entries character varying(3) 暂不支持,值为NULL。 父主题: 分区表
  • ADM_INDEXES ADM_INDEXES视图显示数据库中所有索引的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_INDEXES字段 名称 类型 描述 owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名称。 table_name character varying(64) 索引对应的表名。 uniqueness text 该索引是否为唯一索引。 UNIQUE:唯一索引。 NONUNIQUE:非唯一索引。 partitioned character(3) 该索引是否具有分区表的性质。 Yes:索引具有分区表的性质。 No:索引不具有分区表的性质。 generated character varying(1) 该索引的名称是否为系统生成。 y:索引名称为系统生成。 n:索引名称非系统生成。 index_type character varying(27) 索引类型。 NORMAL:索引属性都是简单引用,表达式树为空。 FUNCTION-BASED NORMAL:存在表达式树用于非简单字段引用的索引属性。 table_owner character varying(128) 索引对象的所有者。 table_type character(11) 索引对象的类型。 TABLE:索引对象为表类型。 tablespace_name character varying(30) 包含索引的表空间名称。 status character varying(8) 非分区索引状态。 VALID:非分区索引可以用于查询。 UNUSABLE:非分区索引不可用。 N/A:索引具有分区表性质。 compression character varying(13) 暂不支持,值为NULL。 prefix_length numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 pct_threshold numeric 暂不支持,值为NULL。 include_column numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 logging character varying(3) 暂不支持,值为NULL。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp(0) without time zone 暂不支持,值为NULL。 degree character varying(40) 暂不支持,值为NULL。 instances character varying(40) 暂不支持,值为NULL。 temporary character varying(1) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 duration character varying(15) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 ityp_owner character varying(128) 暂不支持,值为NULL。 ityp_name character varying(128) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_status character varying(12) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 funcidx_status character varying(8) 暂不支持,值为NULL。 join_index character varying(3) 暂不支持,值为NULL。 iot_redundant_pkey_elim character varying(3) 暂不支持,值为NULL。 dropped character varying(3) 暂不支持,值为NULL。 visibility character varying(9) 该索引对优化器是否可见。 VISIBLE:索引对优化器可见。 INVISIBLE:索引对优化器不可见。 domidx_management character varying(14) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 orphaned_entries character varying(3) 暂不支持,值为NULL。 indexing character varying(7) 暂不支持,值为NULL。 auto character varying(3) 暂不支持,值为NULL。 父主题: 其他系统视图
  • PG_STAT_BGWRITER PG_STAT_BGWRITER视图显示后端写进程活动的统计信息。 表1 PG_STAT_BGWRITER字段 名称 类型 描述 checkpoints_timed bigint 定期执行的检查点数。 checkpoints_req bigint 主动执行的检查点数。 checkpoint_write_time double precision 将文件写入到磁盘时,在检查点处理部分花费的时间总量,以毫秒为单位。 checkpoint_sync_time double precision 将文件同步到磁盘时,在检查点处理部分花费的时间总量,以毫秒为单位。 buffers_checkpoint bigint 检查点写入的缓冲区的数量。 buffers_clean bigint 后端写进程写入的缓冲区的数量。 maxwritten_clean bigint 后端写进程因写入的缓冲区过多导致的清理扫描停止的次数。 buffers_backend bigint 后端直接写入的缓冲区的数量。 buffers_backend_fsync bigint 后端自己执行fsync调用的次数 (通常情况下,即使后端自己执行了这些写入动作,后端写进程也会再处理一次)。 buffers_alloc bigint 分配的缓冲区数量。 stats_reset timestamp with time zone 这些统计被重置的时间。 父主题: 其他系统视图
  • DV_SESSION_LONGOPS DV_SESSION_LONGOPS视图显示当前正在执行的操作的进度。该视图需要授权访问。 表1 DV_SESSION_LONGOPS字段 名称 类型 描述 sid bigint 当前正在执行的后台线程的OID。 serial# integer 当前正在执行的后台线程的序号,在GaussDB中为0。 sofar integer 目前完成的工作量,在GaussDB中为空。 totalwork integer 工作总量,在GaussDB中为空。 父主题: 其他系统视图
  • GLOBAL_SESSION_STAT 各节点上以会话线程或AutoVacuum线程为单位,统计会话状态信息,如表1所示。 表1 GLOBAL_SESSION_STAT字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 statid integer 统计编号。 statname text 统计会话名称。 statunit text 统计会话单位。 value bigint 统计会话值。 父主题: Session/Thread
  • 双数据库实例容灾查询函数 gs_get_local_barrier_status() 描述:两地三中心跨Region容灾特性开启后,主数据库实例和灾备数据库实例进行日志同步,通过barrier日志在主数据库实例的落盘,在灾备数据库实例的回放来确定主数据库实例归档日志进度与灾备数据库实例日志回放进度。gs_get_local_barrier_status用于查询灾备数据库实例每个节点当前的日志回放情况。 返回值类型:text barrier_id:灾备数据库实例某节点当前回放到的最新barrier ID。 barrier_lsn:灾备数据库实例某节点当前回放到的最新barrier ID的Log Sequence Number ( LSN )。 archive_lsn:灾备数据库实例某节点当前已获得归档日志的位置,该参数当前未生效。 flush_lsn:灾备数据库实例某节点当前已完成刷盘日志位置。 gs_hadr_in_recovery() 描述:两地三中心跨Region容灾特性开启后,查询当前节点是否处于基于目标barrier的日志恢复中,还在恢复中返回true。只有完成日志恢复,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_streaming_dr_get_switchover_barrier() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询灾备数据库实例的DN实例是否已接收到switchover barrier日志并完成回放,已完成返回true。灾备数据库实例只有在所有DN实例都完成switchover barrier日志回放,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在流式容灾解决方案中容灾数据库实例启动计划内switchover时使用。 gs_streaming_dr_service_truncation_check() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询主数据库实例的DN实例是否已完成switchover barrier日志发送,已完成返回true。只有完成日志发送,才会启动switchover流程中的生产数据库实例降为灾备数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_hadr_local_rto_and_rpo_stat() 描述:显示流式容灾的主数据库实例和备数据库实例日志流控信息(只可在主数据库实例的主DN使用,备DN以及备数据库实例均上不可获取到统计信息)。 返回值类型:record,具体各个字段的类型和含义如表1所示。 表1 gs_hadr_local_rto_and_rpo_stat参数说明 参数 类型 描述 hadr_sender_node_name text 节点的名称,包含主数据库实例和备数据库实例首备。 hadr_receiver_node_name text 备数据库实例首备名称。 source_ip text 主数据库实例主DN IP地址。 source_port int 主数据库实例主DN通信端口。 dest_ip text 备数据库实例首备DN IP地址。 dest_port int 备数据库实例首备DN通信端口。 current_rto int 流控的信息,当前主备数据库实例的日志rto时间(单位:秒)。 target_rto int 流控的信息,目标主备数据库实例间的rto时间(单位:秒)。 current_rpo int 流控的信息,当前主备数据库实例的日志rpo时间(单位:秒)。 target_rpo int 流控的信息,目标主备数据库实例间的rpo时间(单位:秒)。 rto_sleep_time int RTO流控信息,为了达到目标rto,预期主机walsender所需要的睡眠时间(单位:微秒)。 rpo_sleep_time int RPO流控信息,为了达到目标rpo,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。 gs_hadr_remote_rto_and_rpo_stat() 描述:显示流式容灾其它非本地数据分片的主数据库实例和备数据库实例日志流控信,集中式部署场景不支持该函数。 父主题: 系统管理函数
  • 示例 --创建模式ot。 gaussdb=# CREATE SCHEMA ot; --创建表ot.test_tbl1。 gaussdb=# CREATE TABLE ot.test_tbl1(c1 INT, c2 INT); gaussdb=# INSERT INTO ot.test_tbl1 values(1,1); --查看当前search_path。 gaussdb=# SHOW search_path; search_path ---------------- "$user",public (1 row) --因为当前search_path中不包含ot,并且当前用户不是ot,所以直接查看表名会报错。 gaussdb=# SELECT * FROM test_tbl1; ERROR: relation "test_tbl1" does not exist LINE 1: SELECT * FROM test_tbl1; --创建同义词。 gaussdb=# CREATE OR REPLACE SYNONYM test_tbl1 FOR ot.test_tbl1; --使用同义词。 gaussdb=# SELECT * FROM test_tbl1; c1 | c2 ----+---- 1 | 1 (1 row) gaussdb=# INSERT INTO test_tbl1 VALUES (2,2); --删除。 gaussdb=# DROP SYNONYM test_tbl1; gaussdb=# DROP TABLE ot.test_tbl1; gaussdb=# DROP SCHEMA ot CASCADE;
  • 参数说明 OR REPLACE 可选。如果同义词已存在,则重新定义。 PUBLIC 可选参数。创建PUBLIC同义词。 同一数据库下,PUBLIC同义词不能重名。 数据库从不支持PUBLIC同义词的版本升级到支持PUBLIC同义词的版本时,升级提交前不支持创建、删除PUBLIC同义词。 所有用户都可以访问PUBLIC同义词。除初始用户、系统管理员的用户外,创建和删除PUBLIC同义词需要具有对应CREATE PUBLIC SYNONYM和DROP PUBLIC SYNONYM的权限。 PUBLIC同义词在系统表PG_SYNONYM中的synnamespace和synowner对应为0,在系统视图ADM_SYNONYMS和DB_SYNONYMS中的owner为PUBLIC,schema_name为NULL。 未指定同义词SCHEMA情况下,首先检索同名对象,判断同名对象是否存在;然后检索同义词,按照SEARCH_PATH检索;最后检索PUBLIC同义词。指定同义词SCHEMA情况下,不检索PUBLIC同义词。 synonym_name 创建的同义词名称,可以带模式名。 取值范围:字符串,要符合标识符命名规范。 object_name 关联的对象名称,可以带模式名。 取值范围:字符串,要符合标识符命名规范。 object_name可以是不存在的对象名称。 object_name可以是使用DATABASE LINK方式访问远程对象。DATABASE LINK详细使用方式请参见DATABASE LINK。 避免对包含密码等敏感信息的函数,如加解密类函数gs_encrypt、gs_decrypt、gs_encrypt_bytera、gs_decrypt_bytea等创建别名并且使用别名调用,防止敏感信息泄露。
  • 注意事项 创建同义词的用户将成为其所有者。 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式下创建。 支持通过同义词访问的数据库对象包括:表、视图、类型、包、函数和存储过程、序列和其他同义词对象。 使用同义词时,用户需要具有对关联对象的相应权限。 支持使用同义词的DML语句包括:SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。 不支持关联函数或存储过程的CREATE SYNONYM语句出现在存储过程中,建议存储过程中使用系统表pg_synonym中已存在的同义词对象。 不建议对临时表创建同义词。如果需要创建,需要指定同义词的目标临时表的模式名,否则无法正常使用该同义词,并且在当前会话结束前执行DROP SYNONYM命令。 删除原对象后,与之关联同义词不会被级联删除,继续访问该同义词将会报错,对于访问表提示已失效,对于访问函数、存储过程、包等会提示对象不存在。 被授予了CREATE ANY SYNONYM权限的用户能够在用户模式下创建同义词。 不支持针对包含加密列的密态表及基于密态表的视图、函数、存储过程创建同义词。 同义词关联的对象可以是PACKAGE,不支持同义词关联PACKAGE下的函数。可以通过PACKAGE关联的同义词,来访问PACKAGE下的函数和变量。 同义词的SCHEMA是用户所在SCHEMA时,该同义词OWNER为SCHEMA的OWNER,其他场景同义词OWNER默认为同义词的创建者。 设置SEARCH_PATH,未指定同义词SCHEMA情况下,存储过程和函数会优先按照名称检索PG_PROC表,在没有同名函数时,检索同义词,最后按照SEARCH_PATH检索;其他对象优先检索SEARCH_PATH,同SCHEMA下,本名的对象优先于同义词被访问。 不支持通过DDL语句CREATE、DROP、ALTER操作同义词的方式访问同义词所关联的对象。 支持嵌套同义词。搜索同义词时,如果同义词关联的是另一个同义词,则会继续搜索关联的同义词,直到搜索到最后关联的对象。 不支持使用\d、\df、\sf等方式通过同义词访问关联对象的信息。
  • 查看数据 使用系统表pg_tables查询数据库所有表的信息。 1 gaussdb=# SELECT * FROM pg_tables; 使用gsql的\d+命令查询表的属性。 1 gaussdb=# \d+ customer_t1; 执行如下命令查询表customer_t1的数据量。 1 gaussdb=# SELECT count(*) FROM customer_t1; 执行如下命令查询表customer_t1的所有数据。 1 gaussdb=# SELECT * FROM customer_t1; 执行如下命令只查询字段c_customer_sk的数据。 1 gaussdb=# SELECT c_customer_sk FROM customer_t1; 执行如下命令过滤字段c_customer_sk的重复数据。 1 gaussdb=# SELECT DISTINCT( c_customer_sk ) FROM customer_t1; 执行如下命令查询字段c_customer_sk为3869的所有数据。 1 gaussdb=# SELECT * FROM customer_t1 WHERE c_customer_sk = 3869; 执行如下命令按照字段c_customer_sk进行排序。 1 gaussdb=# SELECT * FROM customer_t1 ORDER BY c_customer_sk; 父主题: 创建和管理表
  • PG_GTT_RELSTATS PG_GTT_RELSTATS视图可用来查看当前会话所有全局临时表的基本信息,调用pg_get_gtt_relstats()函数。 表1 PG_GTT_RELSTATS字段 名称 类型 描述 schemaname name schema名称。 tablename name 全局临时表名称。 relfilenode oid 文件对象的ID。 relpages integer 全局临时表的磁盘页面数。 reltuples real 全局临时表的记录数。 relallvisible integer 被标识为全可见的页面数。 relfrozenxid xid 该表中所有在这个之前的事务ID已经被一个固定的(frozen)事务ID替换。 relminmxid xid 预留接口,暂未启用。 父主题: 其他系统视图
  • Information Schema 信息模式本身是一个名为information_schema的模式。这个模式自动存在于所有数据库中。信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。这个模式的拥有者是初始数据库用户,但是所有用户仅有使用权限,没有创建表、函数等对象的权限。 信息模式兼容PG,包括:constraint_table_usage、domain_constraints、domain_udt_usage、domains、enabled_roles、key_column_usage、parameters、referential_constraints、applicable_roles、administrable_role_authorizations、attributes、character_sets、check_constraint_routine_usage、check_constraints、collations、collation_character_set_applicability、column_domain_usage、column_privileges、column_udt_usage、columns、constraint_column_usage、role_column_grants、routine_privileges、role_routine_grants、routines、schemata、sequences、table_constraints、table_privileges、role_table_grants、tables、triggered_update_columns、triggers、udt_privileges、role_udt_grants、usage_privileges、role_usage_grants、user_defined_types、view_column_usage、view_routine_usage、view_table_usage、views、data_type_privileges、element_types、column_options、foreign_data_wrapper_options、foreign_data_wrappers、foreign_server_options、foreign_servers、foreign_table_options、foreign_tables、user_mapping_options、user_mappings、sql_features、sql_implementation_info、sql_languages、sql_packages、sql_parts、sql_sizing、sql_sizing_profiles。 下面章节只显示未在上述描述内的视图信息。 _PG_FOREIGN_DATA_WRAPPERS _PG_FOREIGN_SERVERS _PG_FOREIGN_TABLE_COLUMNS _PG_FOREIGN_TABLES _PG_USER_MAPPINGS INFORMATION_SCHEMA_CATALOG_NAME 父主题: Schema
  • PG_LOCKS PG_LOCKS视图显示各打开事务所持有的锁的信息。 表1 PG_LOCKS字段 名称 类型 引用 描述 locktype text - 被锁定对象的类型:relation、extend,page、tuple、transactionid、virtualxid、object、userlock、advisory。 database oid PG_DATABASE.oid 被锁定对象所在数据库的OID。 如果被锁定的对象是共享对象,则OID为0。 如果被锁定的对象是一个事务,则OID为NULL。 relation oid PG_CLASS.oid 关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。 page integer - 关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。 tuple smallint - 页面里边的行编号,如果对象不是行,则为NULL。 bucket integer - 子表对应的bucket number。如果目标不是表的话,则为NULL。 virtualxid text - 虚拟事务的ID,如果对象不是一个虚拟事务,则为NULL。 transactionid xid - 事务的ID,如果对象不是一个事务,则为NULL。 classid oid PG_CLASS.oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid - 对象在其系统表内的OID,如果对象不是普通的数据库对象,则为NULL。 objsubid smallint - 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为NULL。 virtualtransaction text - 持有此锁或者在等待此锁的虚拟事务的ID。 pid bigint - 持有或者等待这个锁的服务器逻辑线程的ID。如果锁是被一个预备事务持有的,则为NULL。 sessionid bigint - 持有或者等待这个锁的会话的ID。 mode text - 这个线程持有的或者是期望的锁模式。 可能取值为:AccessShareLock、RowShareLock、RowExclusiveLock、ShareLock、ShareRowExclusiveLock、ExclusiveLock、AccessExclusiveLock。 granted boolean - 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean - 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 locktag text - 会话等待锁信息,可通过locktag_decode()函数解析。 global_sessionid text - 全局会话ID。 父主题: 其他系统视图
  • GS_GLC_MEMORY_DETAIL GS_GLC_MEMORY_DETAIL视图显示所有数据库内global plpgsql cache全局缓存的内存使用情况,仅在enable_global_plsqlcache=on时可用。 表1 GS_GLC_MEMORY_DETAIL字段 名称 类型 描述 contextname text 内存对象名。 database text 内存对象所属的数据库,"pkg_bucket" 与"func_bucket"显示为"NULL"。 schema text 内存对象所属的模式,"pkg_bucket" 与"func_bucket"显示为"NULL"。 type text 对象类型: "pkg_bucket":代表该对象为package对象的父节点。 "func_bucket":代表该对象为函数或存储过程的父节点。 "pkg":代表该对象为package对象。 "func":代表该对象为函数或存储过程。 status text 缓存对象当前状态,可用显示为“valid”,不可用显示为'invalid'。"pkg_bucket"与"func_bucket"对象无状态,显示为"NULL"。 location text 缓存对象当前位置,在缓存哈希表内显示为"in_global_hash_table",在失效链表中显示为''in_global_expired_list"。 "pkg_bucket"与"func_bucket"对象显示为"NULL"。 env bigint 创建对象时的环境参数,即behavior_compat_flags的值。"pkg_bucket" 与"func_bucket"对象显示为0。 usedsize bigint 缓存对象大小。 usecount bigint 有多少对象正在引用该全局缓存,当没有对象引用该全局编译产物时,数量为0。 父主题: 其他系统视图
  • ADM_TRIGGERS ADM_TRIGGERS视图显示数据库中的触发器信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TRIGGERS字段 名称 类型 描述 owner character varying(128) 触发器的所有者。 trigger_name character varying(64) 触发器名称。 trigger_type character varying 触发器触发的时机。取值范围:before statement、before each row、after statement、after each row、instead of。 triggering_event character varying 触发触发器的事件。取值范围:update、insert、delete、truncate。 table_owner character varying(64) 定义触发器的表的所有者。 base_object_type character varying(18) 定义触发器的基础对象。取值范围:table、view。 table_name character varying(64) 定义触发器的表或视图名称。 column_name character varying(4000) 暂不支持,值为NULL。 referencing_name character varying(422) 暂不支持,值为referencing new as new old as old。 when_clause character varying(4000) when子句的内容,必须值为true才能执行trigger_body status character varying(64) 触发器触发的状态: O:触发器在“origin”和“local”模式下触发。 D:触发器被禁用。 R:触发器在“replica”模式下触发。 A:触发器始终触发。 description character varying(4000) 触发器描述。用于重新创建触发器创建语句。 action_type character varying(11) 触发器的动作类型,仅支持call。 trigger_body text 触发器触发时执行的语句。 crossedition character varying(7) 暂不支持,值为NULL。 before_statement character varying(3) 暂不支持,值为NULL。 before_row character varying(3) 暂不支持,值为NULL。 after_row character varying(3) 暂不支持,值为NULL。 after_statement character varying(3) 暂不支持,值为NULL。 instead_of_row character varying(3) 暂不支持,值为NULL。 fire_once character varying(3) 暂不支持,值为NULL。 apply_server_only character varying(3) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 语法格式 CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name [ AS { PERMISSIVE | RESTRICTIVE } ] [ FOR { ALL | SELECT | UPDATE | DELETE } ] [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] USING ( using_expression );
  • 功能描述 对表创建行访问控制策略。 当对表创建了行访问控制策略,只有打开该表的行访问控制开关(ALTER TABLE ... ENABLE ROW LEVEL SECURITY),策略才能生效。否则不生效。 当前行访问控制影响数据表的读取操作(SELECT、UPDATE、DELETE),暂不影响数据表的写入操作(INSERT、MERGE INTO)。表所有者或系统管理员可以在USING子句中创建表达式,在客户端执行数据表读取操作时,数据库后台在查询重写阶段会将满足条件的表达式拼接并应用到执行计划中。针对数据表的每一条元组,当USING表达式返回TRUE时,元组对当前用户可见,当USING表达式返回FALSE或NULL时,元组对当前用户不可见。 行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。 行访问控制策略可以应用到指定的操作(SELECT、UPDATE、DELETE、ALL),ALL表示会影响SELECT、UPDATE、DELETE三种操作;定义行访问控制策略时,若未指定受影响的相关操作,默认为ALL。 行访问控制策略可以应用到指定的用户(角色),也可应用到全部用户(PUBLIC);定义行访问控制策略时,若未指定受影响的用户,默认为PUBLIC。
  • 注意事项 支持对行存表、行存分区表、unlogged表、hash表定义行访问控制策略。 不支持外表、本地临时表定义行访问控制策略。 不支持对视图定义行访问控制策略。 同一张表上可以创建多个行访问控制策略,一张表最多创建100个行访问控制策略。 系统管理员不受行访问控制影响,可以查看表的全量数据。 通过SQL语句、视图、函数、存储过程查询包含行访问控制策略的表,都会受影响。 不支持对添加了行级访问控制策略的表字段进行修改数据类型操作。
  • 参数说明 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表示影响所有数据库用户,可以指定多个受影响的数据库用户。 系统管理员不受行访问控制特性影响。
  • GS_SPM_PARAM GS_SPM_PARAM系统表是用于存储SQL参数相关信息的系统表,每个SQL只存储一组参数,具备sysadmin权限的用户可以对该系统表进行读操作,但只有初始用户才可以对该系统表进行写的操作。 表1 GS_SPM_PARAM字段 名称 类型 描述 sql_namespace oid schema oid。 sql_hash bigint SPM中SQL的唯一标识。 position integer 参数在SQL中的位置索引,从0开始。 datatype integer 参数类型的oid。 datatype_string text 参数类型的字符串形式。 value_string text 参数值的字符串形式。 is_null boolean 参数值是否是NULL。 hash_value bigint 参数值的hash value。 user oid 本记录的创建用户。 creation_time timestamp with time zone 本记录的创建时间。 父主题: SPM计划管理
  • ROLE_ROLE_PRIVS ROLE_ROLE_PRIVS视图显示授予其他角色的角色,仅提供用户有权访问的角色的信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ROLE_ROLE_PRIVS字段 名称 类型 描述 role character varying(128) 角色名称。 granted_role character varying(128) 被授予的角色。 admin_option character varying(3) 该授权是否包含ADMIN选项。 YES:包含ADMIN选项。 NO:不包含ADMIN选项。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • 概述 在嵌入式SQL中进行C语言程序和SQL语句之间的数据传递不需要把数据粘贴到语句中,只需要在SQL语句里写上C语言变量的名称,前缀加一个冒号即可。示例如下: EXEC SQL INSERT INTO sometable VALUES (:v1, 'foo', :v2); 这个语句引用了两个C语言变量:v1和v2,并且使用一个普通的SQL字串文本,这表明一条SQL语句内并不限制只使用某一种数据。 父主题: 宿主变量
  • 参数说明 IF EXISTS 如果指定的模式不存在,发出一个notice而不是抛出一个错误。 schema_name 模式的名称。 取值范围:已存在模式名。 CASCADE | RESTRICT CASCADE:自动删除包含在模式中的对象。 RESTRICT:如果模式包含任何对象,则删除失败(缺省行为)。 不要随意删除pg_temp或pg_toast_temp开头的模式,这些模式是系统内部使用的,如果删除,可能导致无法预知的结果。 无法删除当前模式。如果要删除当前模式,须切换到其他模式下。
  • SESSION_STAT_ACTIVITY 显示当前节点上正在运行的线程相关的信息,如表1所示。 表1 SESSION_STAT_ACTIVITY字段 名称 类型 描述 datid oid 用户会话在后台连接到的数据库OID。 datname name 用户会话在后台连接到的数据库名称。 pid bigint 后台线程ID。 usesysid oid 登录该后台的用户OID。 usename name 登录该后台的用户名。 application_name text 连接到该后台的应用名。 client_addr inet 连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部线程,如线程autovacuum会显示autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。 backend_start timestamp with time zone 该过程开始的时间,即当客户端连接服务器时间。 xact_start timestamp with time zone 启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 query_start timestamp with time zone 开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。如果是存储过程、函数、package,则查询的是第一个查询时间,不会随着存储过程内语句运行而改变。 state_change timestamp with time zone 上次状态改变的时间。 waiting boolean 如果后台当前正等待锁则为true。 enqueue text 该字段不支持。 state text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但是目前无法执行查询。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 说明: 普通用户只能查看到自己账户所对应的会话状态。即其他账户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空。 gaussdb=# SELECT datname, usename, usesysid,state,pid FROM pg_stat_activity; datname | usename | usesysid | state | pid ----------+---------+----------+--------+-----------------testdb | omm | 10 | |139968752121616 testdb | omm | 10 | |139968903116560 db_tpcds | judy | 16398 | active |139968391403280 testdb | omm | 10 | |139968643069712 testdb | omm | 10 | |139968680818448 testdb | joe | 16390 | |139968563377936 (6 rows) resource_pool name 用户使用的资源池。 query_id bigint 查询语句的ID。 query text 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 unique_sql_id bigint 语句的unique sql id。 trace_id text 驱动传入的trace id,用于标识应用的一次请求。 父主题: Session/Thread
  • MY_RECYCLEBIN MY_RECYCLEBIN显示当前用户拥有的回收站信息。所有用户都可以访问,该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_RECYCLEBIN字段 名称 类型 描述 object_name character varying(128) 对象的新名称。 original_name character varying(128) 对象的原始名称。 operation character varying(18) 对对象执行的操作: DROP:对象已删除(对象不再需要)。 TRUNCATE:对象被清空。 type character varying(25) 对象的类型。 ts_name character varying(30) 对象所属的表空间名称。 createtime character varying(19) 创建对象的时间戳。 droptime character varying(19) 删除对象的时间戳。 dropscn numeric 将对象移动到回收站的事务的系统更改编号(SCN)。 partition_name character varying(128) 已删除的分区的名称。 can_undrop character varying(3) 指示对象是否可以闪回。 can_purge character varying(3) 指示对象是否可以清除。 related numeric 父对象的对象编号。 base_object oid 基对象的对象编号。 purge_object oid 被清除的对象的对象编号。 space numeric 对象使用的块数。 父主题: 其他系统视图
  • GS_SEG_SPC_EXTENTS GS_SEG_SPC_EXTENTS获取所有表空间已使用的扩展信息。输出包含segment head、fork head、level1 page、data extent。只支持管理员权限用户查询。 表1 GS_SEG_SPC_EXTENTS 名称 类型 描述 node_name text 节点名称。 tablespace_name name 表空间名称。 file_id integer 数据文件标识。 bucketnode integer 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum integer 段对象的分支类型,取值范围: 0表示main fork。 1表示fsm fork。 2表示vm fork。 block_id bigint 数据扩展的起始页面号。 blocks integer 数据扩展大小,取值:1,8,128,1024,4096。 contents text 数据文件的存储内容,取值范围: permanent:永久。 unlogged:不记录日志。 temporary:全局临时。 temporary2:本地临时。 in_used text 是否已分配,取值Y/N。 mapblock_location text 扩展在map block中的位置,格式:(page_id, offset)。 head_file_id integer 段头文件标识。 head_block_id bigint 段头页面号。 usage_type text 扩展的使用类型,取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 remain_flag text 是否为shrink残留扩展,取值Y/N。 special_data integer 扩展对应反向指针的特殊数据区。 ipblock_location text 扩展反向指针位置,格式:(block_id, offset)。 父主题: 段页式存储
  • 时间段输入 reltime的输入方式可以采用任何合法的时间段文本格式,包括数字形式(含负数和小数)及时间形式,其中时间形式的输入支持SQL标准格式、ISO-8601格式等。另外,文本输入需要加单引号。 时间段输入的详细信息请参考表6。 表6 时间段输入 输入示例 输出结果 描述 60 2 mons 采用数字表示时间段,默认单位是day,可以是小数或负数。特别的,负数时间段,在语义上,可以理解为“早于多久”。 31.25 1 mons 1 days 06:00:00 -365 -12 mons -5 days 1 years 1 mons 8 days 12:00:00 1 years 1 mons 8 days 12:00:00 采用POSTGRES格式表示时间段,可以正负混用,不区分大小写,输出结果为将输入时间段计算并转换得到的简化POSTGRES格式时间段。 -13 months -10 hours -1 years -25 days -04:00:00 -2 YEARS +5 MONTHS 10 DAYS -1 years -6 mons -25 days -06:00:00 P-1.1Y10M -3 mons -5 days -06:00:00 采用ISO-8601格式表示时间段,可以正负混用,不区分大小写,输出结果为将输入时间段计算并转换得到的简化POSTGRES格式时间段。 -12H -12:00:00 示例: 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 --创建表。 gaussdb=# CREATE TABLE reltime_type_tab(col1 character(30), col2 reltime); --插入数据。 gaussdb=# INSERT INTO reltime_type_tab VALUES ('90', '90'); gaussdb=# INSERT INTO reltime_type_tab VALUES ('-366', '-366'); gaussdb=# INSERT INTO reltime_type_tab VALUES ('1975.25', '1975.25'); gaussdb=# INSERT INTO reltime_type_tab VALUES ('-2 YEARS +5 MONTHS 10 DAYS', '-2 YEARS +5 MONTHS 10 DAYS'); gaussdb=# INSERT INTO reltime_type_tab VALUES ('30 DAYS 12:00:00', '30 DAYS 12:00:00'); gaussdb=# INSERT INTO reltime_type_tab VALUES ('P-1.1Y10M', 'P-1.1Y10M'); --查看数据。 gaussdb=# SELECT * FROM reltime_type_tab; col1 | col2 --------------------------------+------------------------------------- 90 | 3 mons -366 | -1 years -18:00:00 1975.25 | 5 years 4 mons 29 days -2 YEARS +5 MONTHS 10 DAYS | -1 years -6 mons -25 days -06:00:00 30 DAYS 12:00:00 | 1 mon 12:00:00 P-1.1Y10M | -3 mons -5 days -06:00:00 (6 rows) --删除表。 gaussdb=# DROP TABLE reltime_type_tab;
  • 日期输入 日期和时间的输入几乎可以是任何合理的格式,包括ISO-8601格式、SQL-兼容格式或者其它的格式。系统支持按照日、月、年的顺序自定义日期输入。如果把DateStyle参数设置为MDY就按照“月-日-年”解析,设置为DMY就按照“日-月-年”解析,设置为YMD就按照“年-月-日”解析。 日期的文本输入需要加单引号包围,语法如下: type [ ( p ) ] 'value' 可选的精度声明中的p是一个整数,表示在秒域中小数部分的位数。表2显示了date类型的输入格式。 表2 日期输入格式 例子 描述 1999-01-08 ISO 8601格式(建议格式),任何方式下都是1999年1月8日。 January 8, 1999 在任何datestyle输入模式下都无歧义。 1/8/1999 有歧义,在MDY模式下是1月8日,在DMY模式下是8月1日。 1/18/1999 MDY模式下是1月18日,其它模式下被拒绝。 01/02/03 MDY模式下的2003年1月2日。 DMY模式下的2003年2月1日。 YMD模式下的2001年2月3日。 1999-Jan-08 任何模式下都是1月8日。 Jan-08-1999 任何模式下都是1月8日。 08-Jan-1999 任何模式下都是1月8日。 99-Jan-08 YMD模式下是1月8日,否则错误。 08-Jan-99 1月8日,除了在YMD模式下是错误的之外。 Jan-08-99 1月8日,除了在YMD模式下是错误的之外。 19990108 ISO 8601格式,任何模式下都是1999年1月8日。 990108 ISO 8601格式,任何模式下都是1999年1月8日。 1999.008 年和年里的第几天。 J2451187 儒略日。 January 8, 99 BC 公元前99年。 示例: 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 --创建表。 gaussdb=# CREATE TABLE date_type_tab(coll date); --插入数据。 gaussdb=# INSERT INTO date_type_tab VALUES (date '12-10-2010'); --查看数据。 gaussdb=# SELECT * FROM date_type_tab; coll --------------------- 2010-12-10 (1 row) --查看日期格式。 gaussdb=# SHOW datestyle; DateStyle ----------- ISO, MDY (1 row) --设置日期格式。 gaussdb=# SET datestyle='YMD'; SET --插入数据。 gaussdb=# INSERT INTO date_type_tab VALUES(date '2010-12-11'); --查看数据。 gaussdb=# SELECT * FROM date_type_tab; coll --------------------- 2010-12-10 2010-12-11 (2 rows) --删除表。 gaussdb=# DROP TABLE date_type_tab;
  • SUMMARY_STAT_XACT_SYS_TABLES 显示数据库各节点的Schema中系统表的事务状态信息的汇总求和结果,如表1所示。 表1 SUMMARY_STAT_XACT_SYS_TABLES字段 名称 类型 描述 schemaname name 此表所在的Schema名。 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
  • 服务器信号函数 服务器信号函数向其他服务器线程发送控制信号。只有系统管理员有权执行以下函数。 pg_cancel_backend(pid int) 描述:取消一个后端线程正在执行的语句。 返回值类型:Boolean 备注:pg_cancel_backend向由pid标识的后端线程发送一个查询取消(SIGINT)信号。一个活动的后端线程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库线程。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_cancel_session(pid bigint, sessionid bigint) 描述:线程池模式下,取消一个活跃状态会话正在执行的语句。 返回值类型:Boolean 备注:pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询,可以取消线程池模式下,活跃状态会话正在执行的语句。当入参pid和sessionid相同,且均为线程id时,功能和pg_cancel_backend相同。 pg_reload_conf() 描述:导致所有服务器线程重新装载它们的配置文件。 返回值类型:Boolean 备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器线程重新装载配置文件。 pg_rotate_logfile() 描述:滚动服务器的日志文件。 返回值类型:Boolean 备注:pg_rotate_logfile给日志文件管理器发送信号,使之立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则不会产生日志文件管理器子线程。 pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 该函数可终止非线程池的线程、活跃状态的线程池线程,但无法终止非活跃状态的线程池线程。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816 (1 rows) gaussdb=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row) pg_terminate_session(pid int64, sessionid int64) 描述:线程池模式下,终止一个后台session。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主、或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 当入参pid和sessionid相同,且均为线程id时,该函数可终止非线程池的线程、活跃状态的线程池线程。 当入参pid和sessionid不同时,该函数可终止活跃状态的会话,或关闭非活跃状态会话和客户端的socket连接。 pg_terminate_active_session_socket(pid int64, sessionid int64) 描述:关闭一个活跃session和客户端的socket连接。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。仅限初始化用户才可使用该函数。 父主题: 系统管理函数
共100000条