云服务器内容精选

  • 系统表和系统视图概述 系统表是 GaussDB (DWS)存放结构元数据,是GaussDB(DWS)数据库系统运行控制信息的来源,也是数据库系统的核心组成部分。系统表包含集群安装信息以及GaussDB(DWS)上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。 系统视图提供了查询系统表和访问数据库内部状态的方法。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图来解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。 三权分立下,非管理员无权查看系统表和视图。非三权分立下,系统表和系统视图要么只对管理员可见,要么对所有用户可见。下面的系统表和视图有些标识了需要管理员权限,这些系统表和视图只有管理员可以查询。 禁止对系统表或系统视图进行增删改等操作,手动对系统表或系统视图的修改或破坏可能会导致系统信息不一致,造成系统控制异常甚至出现集群不可用的情况。 系统表不支持toast,无法跨页存储,一个页面大小为8K,系统表各个字段长度需小于8K。 父主题: 系统表和系统视图
  • MPP_TABLES MPP_TABLES视图显示PGXC_CLASS中的表信息。 表1 MPP_TABLES字段 名称 类型 描述 schemaname name 包含表的模式名。 tablename name 表名。 tableowner name 表的所有者。 tablespace name 表所在的表空间。 pgroup name 节点群的名称。 nodeoids oidvector_extend 表分布的节点OID列表。 父主题: 系统视图
  • PGXC_GET_STAT_ALL_PARTITIONS PGXC_GET_STAT_ALL_PARTITIONS视图获取各分区表分区的插入、更新、删除以及脏页率信息。 该视图的统计信息依赖于ANALYZE,为获取最准确的信息请先对分区表进行ANALYZE。 8.2.0.100及以上集群版本,查询脏页率推荐使用PGXC_STAT_TABLE_DIRTY。 表1 PGXC_GET_STAT_ALL_PARTITIONS字段 名称 类型 描述 relid oid 表的OID。 partid oid 分区的OID。 schename name 表schemaname。 relname name 表名。 partname name 分区名。 n_tup_ins numeric 插入的元组条数。 n_tup_upd numeric 更新的元组条数。 n_tup_del numeric 删除的元组条数。 n_live_tup numeric 存活元组的条数。 n_dead_tup numeric 死亡元组的条数。 page_dirty_rate numeric(5,2) 表的脏页率信息(%)。 父主题: 系统视图
  • ALL_CONSTRAINTS ALL_CONSTRAINTS视图存储当前用户可访问的约束的信息。 表1 ALL_CONSTRAINTS字段 名称 类型 描述 constraint_name vcharacter varying(64) 约束名。 constraint_type text 约束类型。 c表示检查约束。 f表示外键约束。 p表示主键约束。 u表示唯一约束。 table_name character varying(64) 约束相关的表名。 index_owner character varying(64) 约束相关的索引的所有者(只针对唯一约束和主键约束)。 index_name character varying(64) 约束相关的索引名(只针对唯一约束和主键约束)。 父主题: 系统视图
  • 系统表和系统视图概述 系统表是GaussDB(DWS)存放结构元数据,是GaussDB(DWS)数据库系统运行控制信息的来源,也是数据库系统的核心组成部分。系统表包含集群安装信息以及GaussDB(DWS)上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。 系统视图提供了查询系统表和访问数据库内部状态的方法。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图来解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。 三权分立下,非管理员无权查看系统表和视图。非三权分立下,系统表和系统视图要么只对管理员可见,要么对所有用户可见。若标识了需要系统管理员权限的系统表和视图,只有系统管理员可以查询。 禁止对系统表或系统视图进行增删改等操作,手动对系统表或系统视图的修改或破坏可能会导致系统信息不一致,造成系统控制异常甚至出现集群不可用。 系统表不支持toast,无法跨页存储,一个页面大小为8K,系统表各个字段长度需小于8K。 表1 常见系统表举例 系统表名 描述 PG_AM 存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 PG_ATTRIBUTE 存储关于表字段的信息。 PG_AUTHID 存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。 在一个集群中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 PG_CONSTRAINT 存储表上的检查约束、主键、唯一约束和外键约束。 PG_CLASS 存储数据库对象信息及其之间的关系。 PG_DATABASE 存储关于可用数据库的信息。 PG_DEPEND 记录数据库对象之间的依赖关系。这些信息允许DROP命令找出哪些其它对象必须由DROP CASCADE删除,或者是在DROP RESTRICT的情况下避免删除。 PG_PARTITION 存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上toast表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。 PG_FOREIGN_TABLE 存储外部表的辅助信息。 PG_INDEX 存储索引的一部分信息,其他的信息大多数在PG_CLASS中。 PG_JOBS 存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg_jobs系统表中的时间,当任务到期会触发任务的执行。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。 PG_LARGEOBJECT 保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。需要有系统管理员权限才可以访问此系统表。 PG_NAMESPACE 存储命名空间,即存储schema相关的信息。 PG_PROC 存储函数或过程的信息。 表2 常见系统视图举例 系统视图名 描述 GS_CLUSTER_RESOURCE_INFO 显示所有DN资源的汇总信息。 GS_SQL_COUNT 显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)统计信息,包括执行次数和响应时间(除MERGE INTO语句外,统计其他四类语句的最大、最小、平均和总响应时间,单位为微秒),以及DDL、DML、DCL类型语句的执行次数。 PG_LOCKS 存储各打开事务所持有的锁信息。 PG_ROLES 提供访问数据库角色的相关信息。 PG_RULES 提供对查询重写规则的有用信息访问的接口。 PG_TOTAL_USER_RESOURCE_INFO 显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在参数se_workload_manager为on时才有效。 PG_USER 提供了访问数据库用户的信息。 PG_VIEWS 提供访问数据库中每个视图的有用信息。 PG_STAT_ACTIVITY 显示和当前用户查询相关的信息。若有管理员权限或预置角色权限可以显示和所有用户查询相关的信息。 PG_TABLES 提供了对数据库中每个表访问的有用信息。 PLAN_TABLE 显示用户通过执行EXPLAIN PLAN收集到的计划信息。计划信息的生命周期是session级别,session退出后相应的数据将被清除。同时不同session和不同user间的数据是相互隔离的。 父主题: 系统表和系统视图
  • 应用示例 查询当前数据库中(库中表个数少于1W的场景)所有表的数据倾斜情况: 1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT * FROM pgxc_get_table_skewness ORDER BY totalsize DESC; schemaname | tablename | totalsize | avgsize | maxratio | minratio | skewsize | skewratio | skewstddev ------------+-------------------------+-----------+---------+----------+----------+----------+-----------+------------ dbadmin | reason | 147456 | 49152 | .333 | .333 | 0 | 0.000 | 0 tpcds | reason_t2 | 73728 | 24576 | .556 | 0.000 | 40960 | .556 | 21674 dbadmin | reason_bk | 65536 | 21845 | .500 | 0.000 | 32768 | .500 | 18919 tsearch | pgweb | 49152 | 16384 | .333 | .333 | 0 | 0.000 | 0 dbadmin | student | 40960 | 13653 | .400 | .200 | 8192 | .200 | 4730 tsearch | ts_zhparser | 40960 | 13653 | .400 | .200 | 8192 | .200 | 4730 dbms_om | gs_wlm_session_info | 24576 | 8192 | .333 | .333 | 0 | 0.000 | 0 dbms_om | gs_wlm_ec_operator_info | 24576 | 8192 | .333 | .333 | 0 | 0.000 | 0 dbms_om | gs_wlm_operator_info | 24576 | 8192 | .333 | .333 | 0 | 0.000 | 0 (9 rows) 若数据库中表个数非常多(至少大于1W的场景),因PGXC_GET_TABLE_SKEWNESS涉及全库查并计算非常全面的倾斜字段,所以可能会花费比较长的时间(小时级),建议参考PGXC_GET_TABLE_SKEWNESS视图定义,直接使用table_distribution()函数自定义输出,减少输出列进行计算优化,例如: 1 2 3 4 5 6 SELECT schemaname,tablename,max(dnsize) AS maxsize, min(dnsize) AS minsize FROM pg_catalog.pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace INNER JOIN pg_catalog.table_distribution() s ON s.schemaname = n.nspname AND s.tablename = c.relname INNER JOIN pg_catalog.pgxc_class x ON c.oid = x.pcrelid AND x.pclocatortype = 'H' GROUP BY schemaname,tablename;
  • PG_USER PG_USER视图提供了访问数据库用户的信息,默认只有初始化用户和具有sysadmin属性的用户可以查看,其余用户需要赋权后才可以查看。 表1 PG_USER字段 名称 类型 描述 usename name 用户名。 usesysid oid 此用户的ID。 usecreatedb boolean 用户是否可以创建数据库。 t(true):表示是。 f(false):表示否。 usesuper boolean 用户是否是拥有最高权限的初始系统管理员。 t(true):表示是。 f(false):表示否。 usecatupd boolean 用户是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 t(true):表示是。 f(false):表示否。 userepl boolean 用户是否可以复制数据流。 t(true):表示是。 f(false):表示否。 passwd text 密文存储后的用户口令,始终为********。 valbegin timestamp with time zone 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 valuntil timestamp with time zone 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 respool name 用户所在的资源池。 parent oid 父用户OID。 spacelimit text 永久表存储空间限额。 useconfig text[] 运行时配置参数的会话缺省。 nodegroup name 用户关联的逻辑集群(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)名称,如果该用户没有管理逻辑集群,则该字段为空。 tempspacelimit text 临时表存储空间限额。 spillspacelimit text 算子落盘空间限额。 usemonitoradmin boolean 用户是否是监控管理员。 t(true):表示是。 f(false):表示否。 useoperatoradmin boolean 用户是否是运维管理员。 t(true):表示是。 f(false):表示否。 usepolicyadmin boolean 用户是否是安全策略管理员。 t(true):表示是。 f(false):表示否。 父主题: 系统视图
  • PG_USER PG_USER视图提供了访问数据库用户的信息,默认只有初始化用户和具有sysadmin属性的用户可以查看,其余用户需要赋权后才可以查看。 表1 PG_USER字段 名称 类型 描述 usename name 用户名。 usesysid oid 此用户的ID。 usecreatedb boolean 用户是否可以创建数据库。 usesuper boolean 用户是否是拥有最高权限的初始系统管理员。 usecatupd boolean 用户是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 userepl boolean 用户是否可以复制数据流。 passwd text 密文存储后的用户口令,始终为********。 valbegin timestamp with time zone 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 valuntil timestamp with time zone 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 respool name 用户所在的资源池。 parent oid 父用户OID。 spacelimit text 永久表存储空间限额。 tempspacelimit text 临时表存储空间限额。 spillspacelimit text 算子落盘空间限额。 useconfig text[] 运行时配置参数的会话缺省。 nodegroup name 用户关联的逻辑数据库名称,如果该用户没有管理逻辑数据库,则该字段为空。 usemonitoradmin boolean 用户是否是监控管理员。 t(true):表示是。 f(false):表示否。 useoperatoradmin boolean 用户是否是运维管理员。 t(true):表示是。 f(false):表示否。 usepolicyadmin boolean 用户是否是安全策略管理员。 t(true):表示是。 f(false):表示否。 父主题: 系统视图
  • 应用示例 查询指定schema下的所有表字段信息: 1 2 3 4 5 6 7 8 9 10 11 12 SELECt * FROM DBA_TAB_COLUMNS WHERE schema = 'public'; owner | table_name | column_name | data_type | column_id | data_length | comments | avg_col_len | nullable | data_precision | data_scale | char_length | schema | kind ---------+------------+-------------+-----------+-----------+-------------+----------+-------------+----------+----------------+------------+-------------+--------+------- dbadmin | t_customer | id | int4 | 1 | 4 | 主键 | | n | | 0 | 0 | public | table dbadmin | student | sschool | varchar | 4 | 10 | | | n | | 0 | 10 | public | table dbadmin | student | ssex | varchar | 3 | 10 | | | n | | 0 | 10 | public | table dbadmin | student | sname | varchar | 2 | 10 | | | n | | 0 | 10 | public | table dbadmin | student | sid | varchar | 1 | 10 | | | n | | 0 | 10 | public | table dbadmin | t_customer | email | varchar | 4 | 32 | email | | n | | 0 | 32 | public | table dbadmin | t_customer | gender | varchar | 3 | 10 | 性别 | | n | | 0 | 10 | public | table dbadmin | t_customer | cust_name | varchar | 2 | 32 | 名字 | | n | | 0 | 32 | public | table (8 rows)
  • 示例 查询OBS IO Scheduler在每个节点读请求相关的统计信息。 1 2 3 4 5 6 SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name; node_name | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+----------------- dn_6001_6002 | r | 26990 | 26990 | 0 | 215 | 18 | 16 | 12 | 10 dn_6003_6004 | r | 21475 | 21475 | 10 | 190 | 30 | 30 | 20 | 20 dn_6005_6006 | r | 12384 | 12384 | 36 | 133 | 30 | 27 | 20 | 17 查询结果显示,这是当前IO Scheduler在进行读取IO操作时的某个时刻统计信息的快照(snapshot),此时带宽处于上升阶段,current_bps与best_bps相等。以dn_6003_6004为例,可以观察到该DN当前队列中存在排队的请求,total_token_num与available_token_num相等,说明查询视图的时刻IO Scheduler还未开始处理这些请求。 等待一段时间后,再次发起查询。 SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name; node_name | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+----------------- dn_6001_6002 | r | 13228 | 26990 | 0 | 609 | 18 | 18 | 12 | 12 dn_6003_6004 | r | 15717 | 21475 | 0 | 622 | 30 | 30 | 20 | 20 dn_6005_6006 | r | 18041 | 21767 | 0 | 609 | 30 | 30 | 20 | 20 此时队列中已经没有了排队的请求,且available_token_num等于total_token_num,说明IO Scheduler已经处理完所有请求,且没有新的请求需要被处理;但观察到current_bps不为零,是因为统计bps的周期为3秒,此时显示的是3秒前的结果。 短暂间隔后再次查询结果如下,current_bps更新为0。 SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name; node_name | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+----------------- dn_6001_6002 | r | 0 | 26990 | 0 | 609 | 18 | 18 | 12 | 12 dn_6003_6004 | r | 0 | 21475 | 0 | 622 | 30 | 30 | 20 | 20 dn_6005_6006 | r | 0 | 21767 | 0 | 609 | 30 | 30 | 20 | 20
  • 工具函数示例 pg_get_tabledef获取分区表的定义,入参可以为表的OID或者表名。 SELECT pg_get_tabledef('test_range_pt'); pg_get_tabledef ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SET search_path = public; + CREATE TABLE test_range_pt ( + a integer, + b integer, + c integer + ) + WITH (orientation=row, compression=no, storage_type=USTORE, segment=off) + PARTITION BY RANGE (a) + ( + PARTITION p1 VALUES LESS THAN (2000) TABLESPACE pg_default, + PARTITION p2 VALUES LESS THAN (3000) TABLESPACE pg_default, + PARTITION p3 VALUES LESS THAN (4000) TABLESPACE pg_default, + PARTITION p4 VALUES LESS THAN (5000) TABLESPACE pg_default, + PARTITION p5 VALUES LESS THAN (MAXVALUE) TABLESPACE pg_default + ) + ENABLE ROW MOVEMENT; + CREATE INDEX idx_range_a ON test_range_pt USING ubtree (a) LOCAL(PARTITION p1_a_idx, PARTITION p2_a_idx, PARTITION p3_a_idx, PARTITION p4_a_idx, PARTITION p5_a_idx) WITH (storage_type=USTORE) TABLESPACE pg_default; (1 row) pg_stat_get_partition_tuples_hot_updated返回给定分区id的分区热更新元组数的统计。 在分区p1中插入10条数据并更新,统计分区p1的热更新元组数。 INSERT INTO test_range_pt VALUES(generate_series(1,10),1,1); INSERT 0 10 SELECT pg_stat_get_partition_tuples_hot_updated(49294); pg_stat_get_partition_tuples_hot_updated ------------------------------------------ 0 (1 row) UPDATE test_range_pt SET b = 2; UPDATE 10 SELECT pg_stat_get_partition_tuples_hot_updated(49294); pg_stat_get_partition_tuples_hot_updated ------------------------------------------ 10 (1 row)
  • 前置建表相关信息 前置建表: CREATE TABLE test_range_pt (a INT, b INT, c INT) PARTITION BY RANGE (a) ( PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN (3000), partition p3 VALUES LESS THAN (4000), partition p4 VALUES LESS THAN (5000), partition p5 VALUES LESS THAN (MAXVALUE) )ENABLE ROW MOVEMENT; 查看分区表OID: SELECT oid FROM pg_class WHERE relname = 'test_range_pt'; oid ------- 49290 (1 row) 查看分区信息: SELECT oid,relname,parttype,parentid,boundaries FROM pg_partition WHERE parentid = 49290; oid | relname | parttype | parentid | boundaries -------+---------------+----------+----------+------------ 49293 | test_range_pt | r | 49290 | 49294 | p1 | p | 49290 | {2000} 49295 | p2 | p | 49290 | {3000} 49296 | p3 | p | 49290 | {4000} 49297 | p4 | p | 49290 | {5000} 49298 | p5 | p | 49290 | {NULL} (6 rows) 创建索引: CREATE INDEX idx_range_a ON test_range_pt(a) LOCAL; CREATE INDEX --查看分区索引oid SELECT oid FROM pg_class WHERE relname = 'idx_range_a'; oid ------- 90250 (1 row) 查看索引分区信息: SELECT oid,relname,parttype,parentid,boundaries,indextblid FROM pg_partition WHERE parentid = 90250; oid | relname | parttype | parentid | boundaries | indextblid -------+----------+----------+----------+------------+------------ 90255 | p5_a_idx | x | 90250 | | 49298 90254 | p4_a_idx | x | 90250 | | 49297 90253 | p3_a_idx | x | 90250 | | 49296 90252 | p2_a_idx | x | 90250 | | 49295 90251 | p1_a_idx | x | 90250 | | 49294 (5 rows)
  • 工具函数示例 pg_get_tabledef获取分区表的定义,入参可以为表的OID或者表名。 SELECT pg_get_tabledef('test_range_pt'); pg_get_tabledef ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SET search_path = public; + CREATE TABLE test_range_pt ( + a integer, + b integer, + c integer + ) + WITH (orientation=row, compression=no, storage_type=USTORE, segment=off) + PARTITION BY RANGE (a) + ( + PARTITION p1 VALUES LESS THAN (2000) TABLESPACE pg_default, + PARTITION p2 VALUES LESS THAN (3000) TABLESPACE pg_default, + PARTITION p3 VALUES LESS THAN (4000) TABLESPACE pg_default, + PARTITION p4 VALUES LESS THAN (5000) TABLESPACE pg_default, + PARTITION p5 VALUES LESS THAN (MAXVALUE) TABLESPACE pg_default + ) + ENABLE ROW MOVEMENT; + CREATE INDEX idx_range_a ON test_range_pt USING ubtree (a) LOCAL(PARTITION p1_a_idx, PARTITION p2_a_idx, PARTITION p3_a_idx, PARTITION p4_a_idx, PARTITION p5_a_idx) WITH (storage_type=USTORE) TABLESPACE pg_default; (1 row) pg_stat_get_partition_tuples_hot_updated返回给定分区id的分区热更新元组数的统计。 在分区p1中插入10条数据并更新,统计分区p1的热更新元组数。 INSERT INTO test_range_pt VALUES(generate_series(1,10),1,1); INSERT 0 10 SELECT pg_stat_get_partition_tuples_hot_updated(49294); pg_stat_get_partition_tuples_hot_updated ------------------------------------------ 0 (1 row) UPDATE test_range_pt SET b = 2; UPDATE 10 SELECT pg_stat_get_partition_tuples_hot_updated(49294); pg_stat_get_partition_tuples_hot_updated ------------------------------------------ 10 (1 row)
  • 前置建表相关信息 前置建表: CREATE TABLE test_range_pt (a INT, b INT, c INT) PARTITION BY RANGE (a) ( PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN (3000), PARTITION p3 VALUES LESS THAN (4000), PARTITION p4 VALUES LESS THAN (5000), PARTITION p5 VALUES LESS THAN (MAXVALUE) )ENABLE ROW MOVEMENT; 查看分区表OID: SELECT oid FROM pg_class WHERE relname = 'test_range_pt'; oid ------- 49290 (1 row) 查看分区信息: SELECT oid,relname,parttype,parentid,boundaries FROM pg_partition WHERE parentid = 49290; oid | relname | parttype | parentid | boundaries -------+---------------+----------+----------+------------ 49293 | test_range_pt | r | 49290 | 49294 | p1 | p | 49290 | {2000} 49295 | p2 | p | 49290 | {3000} 49296 | p3 | p | 49290 | {4000} 49297 | p4 | p | 49290 | {5000} 49298 | p5 | p | 49290 | {NULL} (6 rows) 创建索引: CREATE INDEX idx_range_a ON test_range_pt(a) LOCAL; CREATE INDEX --查看分区索引oid SELECT oid FROM pg_class WHERE relname = 'idx_range_a'; oid ------- 90250 (1 row) 查看索引分区信息: SELECT oid,relname,parttype,parentid,boundaries,indextblid FROM pg_partition WHERE parentid = 90250; oid | relname | parttype | parentid | boundaries | indextblid -------+----------+----------+----------+------------+------------ 90255 | p5_a_idx | x | 90250 | | 49298 90254 | p4_a_idx | x | 90250 | | 49297 90253 | p3_a_idx | x | 90250 | | 49296 90252 | p2_a_idx | x | 90250 | | 49295 90251 | p1_a_idx | x | 90250 | | 49294 (5 rows)
  • 系统表和系统视图概述 系统表是GaussDB存放结构元数据的地方,它是 GaussDB数据库 系统运行控制信息的来源,是数据库系统的核心组成部分。 系统视图提供了查询系统表和访问数据库内部状态的方法。 系统表和系统视图要么只对管理员可见,要么对所有用户可见。下面的系统表和视图有些标识了需要管理员权限,这些系统表和视图只有管理员可以查询。 用户可以删除后重新创建这些表、增加列、插入和更新数值,但是用户修改系统表会导致系统信息的不一致,从而导致系统控制紊乱。正常情况下不应该由用户手工修改系统表或系统视图,或者手工重命名系统表或系统视图所在的模式,而是由SQL语句关联的系统表操作自动维护系统表信息。 不建议用户修改系统表和系统视图的权限。 用户应该禁止对系统表进行增删改等操作,人为对系统表的修改或破坏可能会导致系统各种异常情况甚至数据库不可用。 系统表和系统视图中的字段类型详见数据类型章节介绍。 对于ADM类视图,由于访问到的对象是数据库下所有的该类型的对象,考虑对ADM类视图进行统一权限管理,默认只有系统管理员有权限访问该类型视图,部分ADM类的视图数据来自基表中公开、非敏感的字段;对于DB类视图,查询到的是数据库内当前用户有权限访问的对象,普通用户即可访问该类视图;对于MY类视图,查询到的是当前用户所属的对象,普通用户即可访问该类视图。 父主题: 系统表和系统视图