华为云用户手册

  • PG_SHDEPEND PG_SHDEPEND系统表记录数据库对象和共享对象(比如角色)之间的依赖关系。记录的这些信息使 GaussDB (DWS)可以确保对象在被删除时没有被其他对象引用。 PG_DEPEND的作用类似,只是它是针对单个数据库中对象之间的依赖。 和大多数其他系统表不同,PG_SHDEPEND在集群的所有数据库之间共享:每个数据库集群只有一个PG_SHDEPEND,并非每个数据库一个。 表1 PG_SHDEPEND字段 名字 类型 引用 描述 dbid oid PG_DATABASE.oid 依赖对象所在的数据库的OID ,如果是共享对象,则为0。 classid oid PG_CLASS.oid 依赖对象所在的系统表的OID。 objid oid 任意OID属性 指定的依赖对象的OID。 objsubid integer - 对于一个表字段,为字段号(objid和classid参考表本身)。对于所有其他对象类型,该字段为0。 refclassid oid PG_CLASS.oid 被引用对象所在的系统表的OID(必须是一个共享表)。 refobjid oid 任意OID属性 指定的被引用对象的OID。 deptype "char" - 定义该依赖关系的特定语义的代码见表后说明。 objfile text - 用户定义C函数库文件路径。 在任何情况下,一条PG_SHDEPEND记录就表明被引用的对象不能在未删除依赖对象的前提下被删除。但是其中也有几种依赖类型由deptype定义的情况: SHARED_DEPENDENCY_OWNER (o) 被引用的对象(必须是一个角色)是依赖对象的所有者。 SHARED_DEPENDENCY_ACL (a) 在依赖对象的ACL(访问控制列表,也就是权限列表)中提到被引用的对象(必须是一个角色)。不会为对象的所有者创建SHARED_DEPENDENCY_ACL,因为所有者将具有SHARED_DEPENDENCY_OWNER记录。 SHARED_DEPENDENCY_PIN (p) 没有依赖对象。这类记录标识系统自身依赖于被依赖对象,因此这种对象绝对不能被删除。此类型的记录只能被initdb创建,依赖对象的字段都为0。 父主题: 系统表
  • PG_SHADOW PG_SHADOW视图显示了所有在PG_AUTHID中标记了rolcanlogin的角色的属性。 此系统视图的名称源于它不是所有用户可读的,因为包含口令。PG_USER是一个在PG_SHADOW上全局可读的视图,只是把口令域填充成了空白。 表1 PG_SHADOW字段 名字 类型 引用 描述 usename name PG_AUTHID.rolname 用户名。 usesysid oid PG_AUTHID.oid 用户的ID。 usecreatedb boolean - 用户可以创建数据库。 usesuper boolean - 用户是系统管理员。 usecatupd boolean - 用户可以更新系统表。即使是系统管理员,如果此字段不为真,也不能更新系统表。 userepl boolean - 用户可以初始化流复制和使系统处于或不处于备份模式。 passwd text - 口令(可能是加密的);如果没有则为null。参阅PG_AUTHID获取加密的口令是如何存储的信息。 valbegin timestamp with time zone - 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 valuntil timestamp with time zone - 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 respool name - 用户使用的资源池。 parent oid - 父资源池。 spacelimit text - 永久表存储空间限额。 tempspacelimit text - 临时表存储空间限额。 spillspacelimit text - 算子落盘空间限额。 useconfig text[ ] - 运行时配置变量的会话缺省。 父主题: 系统视图
  • GLOBAL_TABLE_CHANGE_STAT GLOBAL_TABLE_CHANGE_STAT视图显示当前数据库中所有表格(不包括外表)变更情况。表示次数的各字段为实例启动以来的累计值。 表1 GLOBAL_TABLE_CHANGE_STAT字段 名称 类型 描述 schemaname name 表的命名空间。 relname name 表的名称。 last_vacuum timestamp with time zone 最后一次手动Vacuum的时间。 vacuum_count bigint 手动Vacuum的次数。为各CN节点上次数之和。 last_autovacuum timestamp with time zone 最后一次自动Vacuum的时间。 autovacuum_count bigint 自动Vacuum的次数。为各CN节点上次数之和。 last_analyze timestamp with time zone 最后一次分析(包括手动和自动)的时间。 analyze_count bigint 分析(包括手动和自动)的次数。由于analyze会同时在所有节点上进行,该字段为所有CN节点上的最大值。 last_autoanalyze timestamp with time zone 最后一次自动分析的时间。 autoanalyze_count bigint 自动分析的次数。为各CN节点上次数之和。 last_change bigint 最后一次修改(INSERT,UPDATE或DELETE)的时间。 父主题: 系统视图
  • 内存监控 GaussDB(DWS)提供了监控整个集群内存使用状态的视图: 查询pgxc_total_memory_detail视图,必须具有sysadmin权限。 1 SELECT * FROM pgxc_total_memory_detail; 如果查询该视图时出现以下错误,请开启内存管理功能。 1 2 3 SELECT * FROM pgxc_total_memory_detail; ERROR: unsupported view for memory protection feature is disabled. CONTEXT: PL/pgSQL function pgxc_total_memory_detail() line 12 at FOR over EXECUTE statement 用户可通过GaussDB(DWS) 控制台设置enable_memory_limit和max_process_memory参数来开启内存管理功能,方法如下: 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。 单击“参数修改”页签,修改参数“enable_memory_limit”的值为on,然后单击“保存”。 修改参数“max_process_memory”的值为合适的值,修改建议请参见max_process_memory,然后单击“保存”。 在“修改预览”窗口,确认修改无误后,单击“保存”。修改完成后需要重启集群,参数才会生效。
  • java.sql.Driver java.sql.Driver是数据库驱动接口。 表1 对java.sql.Driver的支持情况 方法名 返回值类型 支持JDBC 4 acceptsURL(String url) boolean Yes connect(String url, Properties info) Connection Yes jdbcCompliant() boolean Yes getMajorVersion() int Yes getMinorVersion() int Yes 父主题: JDBC接口参考
  • DDL 【建议】在GaussDB(DWS)中,建议DDL(建表、comments等)操作统一执行,在批处理作业中尽量避免DDL操作。避免大量并发事务对性能的影响。 【建议】在非日志表(unlogged table)使用完后,立即执行数据清理(truncate)操作。因为在异常场景下,GaussDB(DWS)不保证非日志表(unlogged table)数据的安全性。 【建议】临时表和非日志表的存储方式建议和基表相同。当基表为行存(列存)表时,临时表和非日志表也推荐创建为行存(列存)表,可以避免行列混合关联带来的高计算代价。 【建议】索引字段的总长度不超过50字节。否则,索引大小会膨胀比较严重,带来较大的存储开销,同时索引性能也会下降。 【建议】不要使用DROP…CASCADE方式删除对象,除非已经明确对象间的依赖关系,以免误删。
  • 数据加载和卸载 【建议】在insert语句中显式给出插入的字段列表。例如: 1 INSERT INTO task(name,id,comment) VALUES ('task1','100','第100个任务'); 【建议】在批量数据入库之后,或者数据增量达到一定阈值后,建议对表进行analyze操作,防止统计信息不准确而导致的执行计划劣化。 【建议】如果要清理表中的所有数据,建议使用truncate table方式,不要使用delete table方式。delete table方式删除性能差,且不会释放那些已经删除了的数据占用的磁盘空间。
  • PG_STATIO_SYS_TABLES PG_STATIO_SYS_TABLES视图显示命名空间中所有系统表的IO状态信息。 表1 PG_STATIO_SYS_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 表的模式名。 relname name 表名。 heap_blks_read bigint 从表中读取的磁盘块数。 heap_blks_hit bigint 此表缓冲区命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓冲区数。 toast_blks_read bigint 此表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 此表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 此表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 此表的TOAST表索引命中缓冲区数(如果存在)。 父主题: 系统视图
  • PV_OS_RUN_INFO PV_OS_RUN_INFO视图显示当前操作系统运行的状态信息。 表1 PV_OS_RUN_INFO字段 名称 类型 描述 id integer 编号。 name text 操作系统运行状态名称。 value numeric 操作系统运行状态值。 comments text 操作系统运行状态注释。 cumulative boolean 操作系统运行状态的值是否为累加值。 父主题: 系统视图
  • max_files_per_node 参数说明:限制单个节点上单个SQL打开的文件最大数量。通常情况下,不需要设置此参数。该参数仅8.1.3及以上集群版本支持。 参数类型:SUSET 取值范围:整型,-1~INT_MAX,其中-1表示不做最大数量限制。 默认值:50000 执行语句报错“The last file name is [%s] and %d files have already been opened on data node [%s] with a maximum of %d files.”时,请尝试增大max_files_per_node值。
  • instr_unique_sql_count 参数说明:控制是否收集整个集群的Unique SQL以及收集数量限制。 参数类型:SIGHUP 取值范围:整型,0~ INT_MAX 值为0时,表示不收集Unique SQL统计信息。 值大于0时,在CN节点上,将会控制收集的Unique SQL数量不超过该设置值。当收集数量达到限制时,不再收集新的Unique SQL,此时可通过reload调大设置值,继续收集新的Unique SQL。 默认值:0 如果新设置值小于原设置值,将会清空对应CN节点已收集的Unique SQL统计信息。需特别注意该清理操作将由资源管理后台线程完成,若GUC参数use_workload_manager为off时清理操作可能失败,可直接使用函数reset_instr_unique_sql进行清理。
  • track_sql_count 参数说明:控制对每个会话中当前正在执行的SELECT、INSERT、UPDATE、DELETE、MERGE INTO语句是否进行计数统计,对SELECT、INSERT、UPDATE、DELETE语句的响应时间进行统计,以及对DDL、DML、DCL语句进行计数的统计。 参数类型:SUSET 取值范围:布尔型 on表示开启统计功能。 off表示关闭统计功能。 默认值:on track_sql_count参数受track_activities约束: track_activities开启而track_sql_count关闭时,如果查询了gs_sql_count、pgxc_sql_count、gs_workload_sql_count、pgxc_workload_sql_count、global_workload_sql_count、gs_workload_sql_elapse_time、pgxc_workload_sql_elapse_time、或global_workload_sql_elapse_time视图,将会有 LOG 提示track_sql_count是关闭的。 track_activities和track_sql_count同时关闭,那么此时将会有两条LOG,分别提示track_activities是关闭的和track_sql_count是关闭的。 track_activities关闭而track_sql_count开启,此时将仅有LOG提示track_activities是关闭。 当参数关闭时,查询视图的结果为0行。
  • instr_unique_sql_timeout 参数说明:控制Unique SQL的存在时间。StatCollector后台线程每小时对所有的Unique SQL做一次检查,如果发现某个Unique SQL超过instr_unique_sql_timeout小时未被执行,则将其删除。(该参数在8.1.2及以上版本支持。) 参数类型:SIGHUP 取值范围:整型,0~ INT_MAX,单位为小时。 值为0时,表示不删除过期的Unique SQL。 值大于0时,发现超过instr_unique_sql_timeout小时未执行Unique SQL则删除。 默认值:24
  • enable_track_wait_event 参数说明:控制是否对各类等待事件的发生次数、失败次数、持续时间、最大、最小和平均等待时间等信息进行统计。 参数类型:SIGHUP 取值范围:布尔型 on表示开启统计功能。 off表示关闭统计功能。 默认值:off enable_track_wait_event参数受track_activities约束,如果track_activities关闭,即使开启enable_track_wait_event也不启用相关功能。 track_activities或enable_track_wait_event关闭时,如果查询get_instr_wait_event函数、gs_wait_events视图或pgxc_wait_events视图将会提示GUC参数关闭,查询结果为0行。 在集群运行过程中关闭track_activities或enable_track_wait_event,GaussDB(DWS)不再对等待事件相关信息进行统计,但已统计记录的数据不受影响。
  • enable_wdr_snapshot 参数说明:控制是否启用性能视图快照功能。开启后,GaussDB(DWS)会定期对部分系统性能视图创建快照并持久化保存,并接受手动创建快照请求。 参数类型:SIGHUP 取值范围:布尔型 on表示开启快照功能。 off表示关闭快照功能。 默认值:off 如果enable_wdr_snapshot参数关闭,执行create_wdr_snapshot函数手动创建视图会提示GUC参数未打开。 如果在快照的过程中修改enable_wdr_snapshot参数,正在创建的快照不受影响,下次定期或手动创建快照时生效。
  • wdr_snapshot_retention_days 参数说明:设置性能快照数据保留的最大天数。 参数类型:SIGHUP 取值范围:整型,1~15,单位为天。 默认值:8 开启enable_wdr_snapshot的情况下,保存wdr_snapshot_retention_days天数的快照数据会被自动清除。 该参数取值应与可用磁盘空间相对应,取值越大,需要的磁盘空间越大。 对该参数的修改不会立即生效,等到下一次自动创建快照时才会清除过期快照数据。
  • DBA_TRIGGERS DBA_TRIGGERS视图存储关于数据库内的触发器信息。需要有系统管理员权限才可以访问。 名称 类型 描述 trigger_name character varying(64) 触发器名称。 table_name character varying(64) 定义触发器的表的名称。 table_owner character varying(64) 定义触发器的表的所有者。 父主题: 系统视图
  • PG_EXCEPT_RULE PG_EXCEPT_RULE系统表存储关于异常规则的信息。一个异常规则集合由多个名称相同的异常规则组成。 表1 PG_EXCEPT_RULE 名称 类型 描述 name name 异常规则集合的名称。 rule name 该异常规则集中某一个具体规则类型或者触发当前异常规则集时采取的操作。(如blocktime/elapsedtime/spillsize等类型或者触发异常规则后的操作) value name 该异常规则对应的规则阈值。如果是触发异常规则后的操作,那么该字段为abort。 父主题: 系统表
  • 示例 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 --获取字符串的长度 SELECT DBMS_LOB.GETLENGTH('12345678'); DECLARE myraw RAW(100); amount INTEGER :=2; buffer INTEGER :=1; begin DBMS_LOB.READ('123456789012345',amount,buffer,myraw); dbms_output.put_line(myraw); end; / CREATE TABLE blob_Table (t1 blob) DISTRIBUTE BY REPLICATION; CREATE TABLE blob_Table_bak (t2 blob) DISTRIBUTE BY REPLICATION; INSERT INTO blob_Table VALUES('abcdef'); INSERT INTO blob_Table_bak VALUES('22222'); DECLARE str varchar2(100) := 'abcdef'; source raw(100); dest blob; copyto blob; amount int; PSV_SQL varchar2(100); PSV_SQL1 varchar2(100); a int :=1; len int; BEGIN source := utl_raw.cast_to_raw(str); amount := utl_raw.length(source); PSV_SQL :='select * from blob_Table for update'; PSV_SQL1 := 'select * from blob_Table_bak for update'; EXECUTE IMMEDIATE PSV_SQL into dest; EXECUTE IMMEDIATE PSV_SQL1 into copyto; DBMS_LOB.WRITE(dest, amount, 1, source); DBMS_LOB.WRITEAPPEND(dest, amount, source); DBMS_LOB.ERASE(dest, a, 1); DBMS_OUTPUT.PUT_LINE(a); DBMS_LOB.COPY(copyto, dest, amount, 10, 1); DBMS_LOB.CLOSE(dest); RETURN; END; / --删除表 DROP TABLE blob_Table; DROP TABLE blob_Table_bak;
  • PG_JOBS PG_JOBS系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg_jobs系统表中的时间,当任务到期会触发任务的执行。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。 表1 PG_JOBS字段 名字 类型 描述 job_id integer 作业ID,主键,是唯一的(有唯一索引)。 what text 作业内容。 log_user oid 创建者的UserID。 priv_user oid 作业执行者的UserID。 job_db oid 标识作业执行的数据库OID。 job_nsp oid 标识作业运行时所在的命名空间OID。 job_node oid 标识当前作业是在哪个CN上创建和执行。 is_broken boolean 标识当前作业是否为失效状态。 start_date timestamp without time zone 作业第一次开始执行时间,时间精确到毫秒。 next_run_date timestamp without time zone 下次定时执行任务的时间,时间精确到毫秒。 failure_count smallint 连续失败计数。 interval text 作业执行的重复时间间隔。 last_start_date timestamp without time zone 上次运行开始时间,时间精确到毫秒。 last_end_date timestamp without time zone 上次运行的结束时间,时间精确到毫秒。 last_suc_date timestamp without time zone 上次成功运行的开始时间,时间精确到毫秒。 this_run_date timestamp without time zone 正在运行任务的开始时间,时间精确到毫秒。 父主题: 系统表
  • 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) 表的脏页率信息(%)。 父主题: 系统视图
  • PG_STATIO_USER_TABLES PG_STATIO_USER_TABLES视图显示命名空间中所有用户关系表的IO状态信息。 表1 PG_STATIO_USER_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 表的模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 此表缓冲区命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引缓冲区命中数。 toast_blks_read bigint 此表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 此表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 此表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 此表的TOAST表索引命中缓冲区数(如果存在)。 父主题: 系统视图
  • PV_TOTAL_MEMORY_DETAIL PV_TOTAL_MEMORY_DETAIL视图统计当前数据库节点使用内存的信息,单位为MB。 表1 PV_TOTAL_MEMORY_DETAIL字段 名称 类型 描述 nodename text 节点名称。 memorytype text 内存类型,包括以下几种: max_process_memory:GaussDB(DWS)集群实例所占用的内存大小。 process_used_memory:GaussDB(DWS)进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:最大动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 max_shared_memory:最大共享内存。 shared_used_memory:已使用的共享内存。 max_cstore_memory:列存所允许使用的最大内存。 cstore_used_memory:列存已使用的内存大小。 max_sctpcomm_memory:通信库所允许使用的最大内存。 sctpcomm_used_memory:通信库已使用的内存大小。 sctpcomm_peak_memory:通信库的内存峰值。 other_used_memory:其他已使用的内存大小。 gpu_max_dynamic_memory:GPU内存最大值。 gpu_dynamic_used_memory:当前GPU可用内存和当前临时GPU内存之和。 gpu_dynamic_peak_memory:GPU内存使用的最大内存。 pooler_conn_memory:pooler连接占用内存大小。 pooler_freeconn_memory:pooler空闲连接占用的内存大小。 storage_compress_memory:列存压缩和解压缩使用的内存大小。 udf_reserved_memory:为UDF Worker进程预留的内存大小。 mmap_used_memory:mmap使用的内存大小。 memorymbytes integer 内存类型分配内存的大小。 父主题: 系统视图
  • java.sql.ResultSet java.sql.ResultSet是执行结果集接口。 表1 对java.sql.ResultSet的支持情况 方法名 返回值类型 支持JDBC 4 findColumn(String columnLabel) int Yes getBigDecimal(int columnIndex) BigDecimal Yes getBigDecimal(String columnLabel) BigDecimal Yes getBoolean(int columnIndex) boolean Yes getBoolean(String columnLabel) boolean Yes getByte(int columnIndex) byte Yes getBytes(int columnIndex) byte[] Yes getByte(String columnLabel) byte Yes getBytes(String columnLabel) byte[] Yes getDate(int columnIndex) Date Yes getDate(String columnLabel) Date Yes getDouble(int columnIndex) double Yes getDouble(String columnLabel) double Yes getFloat(int columnIndex) float Yes getFloat(String columnLabel) float Yes getInt(int columnIndex) int Yes getInt(String columnLabel) int Yes getLong(int columnIndex) long Yes getLong(String columnLabel) long Yes getShort(int columnIndex) short Yes getShort(String columnLabel) short Yes getString(int columnIndex) String Yes getString(String columnLabel) String Yes getTime(int columnIndex) Time Yes getTime(String columnLabel) Time Yes getTimestamp(int columnIndex) Timestamp Yes getTimestamp(String columnLabel) Timestamp Yes isAfterLast() boolean Yes isBeforeFirst() boolean Yes isFirst() boolean Yes next() boolean Yes 一个Statement不能有多个处于“open”状态的ResultSet。 用于遍历结果集(ResultSet)的游标(Cursor)在被提交后不能保持“open”的状态。 父主题: JDBC接口参考
  • PG_INDEX PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。 表1 PG_INDEX字段 名称 类型 描述 indexrelid oid 此索引的pg_class项的OID。 indrelid oid 使用该索引的表在pg_class项的OID。 indnatts smallint 索引中的字段数目。 indisunique boolean 如果为真,为唯一索引。 indisprimary boolean 如果为真,该索引为该表的主键。该字段为真时,indisunique也总是为真。 indisexclusion boolean 如果为真,该索引支持排他约束。 indimmediate boolean 如果为真,在插入数据时会立即执行唯一性检查。 indisclustered boolean 如果为真,则该表最后以此索引进行了聚簇。 indisusable boolean 如果为真,此索引对INSERT/SELECT可用。 indisvalid boolean 如果为真,则此索引可以用于查询。如果为假,则该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,但不能安全的被用于查询。如果是唯一索引,则唯一属性也不为真。 indcheckxmin boolean 如果为真,查询不能使用此索引,直到pg_index此行的xmin低于其快照的TransactionXmin,因为该表可能包含它们可见的不兼容行断开的HOT链。 indisready boolean 如果为真,表示此索引对插入数据可用。如果为假,在插入或修改数据时忽略此索引。 indkey int2vector 这是一个包含indnatts值的数组,这些数组值表示此索引所建立的表字段。比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键。数组中的0表示对应的索引属性是一个表字段上的表达式,而不是一个简单的字段引用。 indcollation oidvector 索引用到的各列的ID。 indclass oidvector 对于索引键中的每个字段,该字段都包含要使用的操作符类的OID,详见PG_OPCLASS。 indoption int2vector 存储列前标识位,该标识位是由索引的访问方法定义。 indexprs pg_node_tree 表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与INDKEY中的零值个数相同。如果所有索引属性都是简单的引用,则为空。 indpred pg_node_tree 部分索引谓词的表达式树(以nodeToString()的形式表现)。如果不是部分索引,则为空。 indnullstreatment tinyint 表示唯一索引中NULL值的处理方式,该字段只有当indisunique为真时才起作用。 取值范围: 0 表示NULLS DISTINCT,NULL互不相等,NULL值可重复插入。 1 表示NULLS NOT DISTINCT,NULL严格相等,NULL值不可重复插入。 2 表示NULLS IGNORE,在等值比较时忽略NULL值列。若索引列全为NULL,则NULL值可重复插入;若部分索引列为NULL,只有非NULL列不相等,才可插入。 默认值:0 说明: 若当前集群为低版本升级到8.2.0.100版本,对于之前已存在索引,该字段值均为NULL;对于新创建的索引,则根据[ NULLS [NOT] DISTINCT | NULLS IGNORE ]字段的指定情况确定该字段值,默认值为0。 若当前集群为新装的8.2.0.100版本,对于新创建的索引,则根据[ NULLS [NOT] DISTINCT | NULLS IGNORE ]字段的指定情况确定该字段值,默认值为0。 父主题: 系统表
  • Schema的权限控制 默认情况下,用户只能访问属于自己的Schema中的数据库对象。如需要访问其他Schema的对象,则需赋予对应Schema的usage权限。 通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象。 将myschema的usage权限赋给用户jack。 1 GRANT USAGE ON schema myschema TO jack; 将用户jack对于myschema的usage权限收回。 1 REVOKE USAGE ON schema myschema FROM jack;
  • 系统Schema 每个数据库都包含一个pg_catalog schema,它包含系统表和所有内置数据类型、函数、操作符。pg_catalog是搜索路径中的一部分,始终在临时表所属的模式后面,并在search_path中所有模式的前面,即具有第二搜索优先级。这样确保可以搜索到数据库内置对象。如果用户需要使用和系统内置对象重名的自定义对象时,可以在操作自定义对象时带上自己的模式。 information_schema由一个包含数据库中对象信息的视图集合组成。 这些视图以一种标准化的方式从系统目录表中得到系统信息。
  • 查看Schema 使用current_schema()函数查看当前Schema: 1 2 3 4 5 SELECT current_schema(); current_schema ---------------- myschema (1 row) 要查看Schema所有者,请对系统表PG_NAMESPACE和PG_USER执行如下关联查询。语句中的schema_name请替换为实际要查找的Schema名称。 1 SELECT s.nspname,u.usename AS nspowner FROM PG_NAMESPACE s, PG_USER u WHERE nspname='schema_name' AND s.nspowner = u.usesysid; 要查看所有Schema的列表,请查询PG_NAMESPACE系统表。 1 SELECT * FROM PG_NAMESPACE; 使用PGXC_TOTAL_SCHEMA_INFO视图查询整个集群的Schema空间使用情况。 1 SELECT * FROM PGXC_TOTAL_SCHEMA_INFO; 要查看属于某Schema下表的列表,请查询系统视图PG_TABLES。例如,以下查询会返回Schema PG_CATALOG中的表列表。 1 SELECT distinct(tablename),schemaname FROM PG_TABLES where schemaname = 'pg_catalog';
  • 使用Schema 在特定Schema下创建对象或者访问特定Schema下的对象,需要使用有Schema修饰的对象名。名称包含Schema名以及对象名,之间用“.”号分开。 在myschema下创建mytable表。以schema_name.table_name格式创建表。 1 CREATE TABLE myschema.mytable(id int, name varchar(20)); 查询myschema下mytable表的所有数据。 1 2 3 4 SELECT * FROM myschema.mytable; id | name ----+------ (0 rows)
  • 创建Schema 使用CREATE SCHEMA命令来创建一个新的Schema。 1 CREATE SCHEMA myschema; 如果需要在模式中创建或者访问对象,其完整的对象名称由模式名称和具体的对象名称组成。中间由符号“.”隔开。例如:myschema.table。 用户可以创建一个由他人拥有的schema。例如,创建名为myschema的Schema,并指定Schema的所有者为用户jack。 1 CREATE SCHEMA myschema AUTHORIZATION jack; 若不指定authorization username,则其所有者为执行该命令的用户。
共100000条