关键内容介绍
PG_STATS视图提供对存储在pg_statistic表里面的单列统计信息的访问。
该视图记录的统计信息更新时间间隔由参数autovacuum_naptime设置。
关于自动清理参数autovacuum_naptime的说明
参数说明:设置两次自动清理操作的时间间隔。
该参数属于SIGHUP类型参数。
取值范围:整型,单位为s,最小值为1,最大值为2147483。
默认值:10min(即600s)
1、PG_STATS
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
schemaname | name | PG_NAMESPACE.nspname | 包含表的模式名。 |
tablename | name | PG_CLASS.relname | 表名。 |
attname | name | PG_ATTRIBUTE.attname | 字段的名称。 |
inherited | - | 如果为真,则包含继承的子列,否则只是指定表的字段。 | |
null_frac | real | - | 记录中字段为空的百分比。 |
avg_width | integer | - | 字段记录以字节记的平均宽度。 |
n_distinct | real | - |
|
n_dndistinct | real | - | 标识dn1上字段中非NULL数据的唯一值的数目。
|
most_common_vals | anyarray | - | 一个字段里最常用数值的列表。如果里面的字段数值是最常见的,则为NULL。 |
most_common_freqs | real[] | - | 一个最常用数值的频率的列表,也就是说,每个出现的次数除以行数。如果most_common_vals是NULL,则为NULL。 |
histogram_bounds | anyarray | - | 一个数值的列表,它把字段的数值分成几组大致相同热门的组。如果在most_common_vals里有数值,则在这个饼图的计算中省略。如果字段数据类型没有<操作符或者most_common_vals列表代表了整个分布性,则这个字段为NULL。 |
correlation | real | - | 统计与字段值的物理行序和逻辑行序有关。它的范围从-1到+1。在数值接近-1或者+1的时候,在字段上的索引扫描将被认为比它接近零的时候开销更少,因为减少了对磁盘的随机访问。如果字段数据类型没有<操作符,则这个字段为NULL。 |
most_common_elems | anyarray | - | 一个最常用的非空元素的列表。 |
most_common_elem_freqs | real[] | - | 一个最常用元素的频率的列表。 |
elem_count_histogram | real[] | - | 对于独立的非空元素的统计直方图。 |
2、PG_NAMESPACE
PG_NAMESPACE系统表存储名称空间,即存储schema相关的信息。
名称 | 类型 | 描述 |
---|---|---|
oid | oid | 行标识符(隐藏属性,必须明确选择)。 |
nspname | name | 名称空间的名称。 |
nspowner | oid | 名称空间的所有者。 |
nsptimeline | bigint | 在数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。 |
nspacl | aclitem[] | 访问权限。 |
in_redistribution | “char” | 是否处于重发布状态。 |
nspblockchain |
|
3、PG_CLASS
PG_CLASS系统表存储数据库对象信息及其之间的关系。
名称 | 类型 | 描述 |
---|---|---|
oid | oid | 行标识符(隐藏属性,必须明确选择)。 |
relname | name | 表、索引、视图等对象的名称。 |
relnamespace | oid | 包含这个关系的名称空间的OID。 |
reltype | oid | 对应这个表的行类型的数据类型(索引为零,因为索引没有pg_type记录)。 |
reloftype | oid | 复合类型的OID,0表示其他类型。 |
relowner | oid | 关系所有者。 |
relam | oid | 如果行是索引,则就是所用的访问模式(B-tree,hash等)。 |
relfilenode | oid | 这个关系在磁盘上的文件的名称,如果没有则为0。 |
reltablespace | oid | 这个关系存储所在的表空间。如果为零,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。 |
relpages | double precision | 以页(大小为BLCKSZ)为单位的此表在磁盘上的大小,它只是优化器用的一个近似值。 |
reltuples | double precision | 表中行的数目,只是优化器使用的一个估计值。 |
relallvisible | integer | 被标识为全可见的表中的页的数量。此字段是优化器用来做SQL执行优化使用的。VACUUM、ANALYZE和一些DDL语句(例如,CREATE INDEX)会引起此字段更新。 |
reltoastrelid | oid | 与此表关联的TOAST表的OID ,如果没有则为0。 TOAST表在一个从属表里“离线”存储大字段。 |
reltoastidxid | oid | 对于TOAST表是它的索引的OID,如果不是TOAST表则为0。 |
reldeltarelid | oid | Delta表的OID。 Delta表附属于列存表。用于存储数据导入过程中的甩尾数据。 |
reldeltaidx | oid | Delta表的索引表OID。 |
relcudescrelid | oid | CU描述表的OID。 CU描述表(Desc表)附属于列存表。用于控制表目录中存储数据的可见性。 |
relcudescidx | oid | CU描述表的索引表OID。 |
relhasindex | 如果它是一个表而且至少有(或者最近有过)一个索引,则为真。 它是由CREATE INDEX设置的,但DROP INDEX不会立即将它清除。如果VACUUM进程检测一个表没有索引,将会把它将清理relhasindex字段,将值设置为假。 | |
relisshared | 如果该表在中由所有数据库共享则为真。只有某些系统表(比如pg_database)是共享的。 | |
relpersistence | "char" |
|
relkind | "char" |
|
relnatts | smallint | 关系中用户字段数目(除了系统字段以外)。在pg_attribute里肯定有相同数目对应行。 |
relchecks | smallint | 表里的检查约束的数目;参阅pg_constraint表。 |
relhasoids | 如果为关系中每行都生成一个OID则为真。 | |
relhaspkey | 如果这个表有一个(或者曾经有一个)主键,则为真。 | |
relhasrules | 如表有规则就为真。是否有规则可参考系统表PG_REWRITE。 | |
relhastriggers | True表示表中有触发器,或者曾经有过触发器。系统表pg_trigger中记录了表和视图的触发器。 | |
relhassubclass | 如果有(或者曾经有)任何继承的子表,为真。 | |
relcmprs | tinyint | 表示是否启用表的启用压缩特性。需要特别注意,当且仅当批量插入才会触发压缩,普通的CRUD并不能够触发压缩。
|
relhasclusterkey | 是否有局部聚簇存储。 | |
relrowmovement | 针对分区表进行update操作时,是否允许行迁移。
| |
parttype | "char" | 表或者索引是否具有分区表的性质。
|
relfrozenxid | xid32 | 该表中所有在这个之前的事务ID已经被一个固定的("frozen")事务ID替换。该字段用于跟踪此表是否需要为了防止事务ID重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。 为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。 |
relacl | aclitem[] | 访问权限。 |
relreplident | "char" | 逻辑解码中解码列的标识:
|
relfrozenxid64 | xid | 该表中所有在这个之前的事务ID已经被一个固定的("frozen")事务ID替换。该字段用于跟踪此表是否需要为了防止事务ID重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。 |
relbucket | oid | pg_hashbucket中的桶信息。 |
relbucketkey | int2vector | 哈希分区列号。 |
4、表4 权限的参数说明
参数 | 参数说明 |
---|---|
r | SELECT(读) |
w | UPDATE(写) |
a | INSERT(插入) |
d | DELETE |
D | TRUNCATE |
x | REFERENCES |
t | TRIGGER |
X | EXECUTE |
U | USAGE |
C | CREATE |
c | CONNECT |
T | TEMPORARY |
A | ALTER |
P | DROP |
m | COMMENT |
i | INDEX |
v | VACUUM |
* | 给前面权限的授权选项 |
5、PG_ATTRIBUTE系统表存储关于表字段的信息
名称 | 类型 | 描述 |
---|---|---|
attrelid | oid | 此字段所属表。 |
attname | name | 字段名。 |
atttypid | oid | 字段类型。 |
attstattarget | integer | 控制ANALYZE为这个字段积累的统计细节的级别。
对于标量数据类型,ATTSTATTARGET既是要收集的"最常用数值"的目标数目,也是要创建的柱状图的目标数量。 |
attlen | smallint | 是本字段类型的pg_type.typlen的拷贝。 |
attnum | smallint | 字段编号。 |
attndims | integer | 如果该字段是数组,则是维数,否则是0 。 |
attcacheoff | integer | 在磁盘上的时候总是-1 ,但是如果加载入内存中的行描述器中,它可能会被更新以缓冲在行中字段的偏移量。 |
atttypmod | integer | 记录创建新表时支持的类型特定的数据(比如一个varchar字段的最大长度)。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要ATTTYPMOD的类型通常为-1。 |
attbyval | 这个字段类型的pg_type.typbyval的拷贝。 | |
attstorage | "char" | 这个字段类型的pg_type.typstorage的拷贝。 |
attalign | "char" | 这个字段类型的pg_type.typalign的拷贝。 |
attnotnull | 这代表一个非空约束。可以改变这个字段以打开或者关闭这个约束。 | |
atthasdef | 这个字段有一个缺省值,此时它对应pg_attrdef表里实际定义此值的记录。 | |
attisdropped | 这个字段已经被删除了,不再有效。一个已经删除的字段物理上仍然存在表中,但会被分析器忽略,因此不能再通过SQL访问。 | |
attislocal | 这个字段是局部定义在关系中的。请注意一个字段可以同时是局部定义和继承的。 | |
attcmprmode | tinyint | 对某一列指定压缩方式。压缩方式包括:
|
attinhcount | integer | 这个字段所拥有的直接父表的个数。如果一个字段的父表个数非零,则它就不能被删除或重命名。 |
attcollation | oid | 对此列定义的校对列。 |
attacl | aclitem[] | 列级访问权限控制。 |
attoptions | text[] | 字段属性。目前支持以下两种属性: n_distinct,表示该字段的distinct值数量(不包含字表) n_distinct_inherited,表示该字段的distinct值数量(包含字表) |
attfdwoptions | text[] | 外表字段属性。当前支持的dist_fdw、file_fdw、log_fdw未使用外表字段属性。 |
attinitdefval | bytea | 存储了此列默认的值表达式。行存表的ADD COLUMN需要使用此字段。 |
attkvtype | tinyint | 对某一列指定key value类型。类型包括: 0. ATT_KV_UNDEFINED : 默认 1. ATT_KV_TAG : 维度 2. ATT_KV_FIELD : 指标 3. ATT_KV_TIMETAG :时间列 |