postgres--目录System Catalogs

pg_statistic

关于数据库系统(特别是PostgreSQL数据库)中的统计信息目录pg_statistic的说明。

  1. 统计数据存储pg_statistic目录存储有关数据库内容的统计数据。这些数据是由ANALYZE命令创建的,并随后被查询优化器使用。需要注意的是,即使这些统计数据是最新的,它们本质上也是近似的。

  2. 统计数据条目:通常情况下,对于每个已分析的表列,会有一个条目,其中stainherit属性设置为false。如果表有继承的子表或分区,则还会创建一个stainherit属性设置为true的条目。这个true的条目代表了继承树中列的统计数据,即你使用SELECT column FROM table*查询时看到的数据。而stainherit = false的行则代表了SELECT column FROM ONLY table查询的结果。

  3. 索引表达式的统计数据pg_statistic还存储有关索引表达式值的统计数据。这些表达式被描述得就像它们是实际的数据列一样;特别是,starelid引用了索引。然而,对于普通的非表达式索引列,不会创建条目,因为这会与底层表列的条目重复。目前,索引表达式的条目总是将stainherit设置为false

  4. 统计数据的多样性:由于不同类型的数据可能需要不同类型的统计信息,pg_statistic被设计为不对它存储的统计信息类型做太多假设。只有非常通用的统计信息(如空值情况)在pg_statistic中有专门的列。其他所有内容都存储在“slots”中,这些是相关联的列组,其内容由其中一个slot列中的代码编号标识。

  5. 安全性pg_statistic不应该对公众可读,因为即使是关于表内容的统计信息也可能被认为是敏感的。例如,一个工资列的最小值和最大值可能非常有趣。pg_statspg_statistic的一个公开可读视图,它只暴露当前用户可读的那些表的信息。

这段话主要解释了pg_statistic目录的功能、用途以及它如何存储和管理数据库的统计信息。

这段内容描述的是 PostgreSQL 数据库中的 pg_statistic 表的列及其数据类型和描述。下面是对这些列的解释:

  1. starelid (oid): 这列存储的是表或索引的 OID(对象标识符),它指向 pg_class 表中的 OID。这表示所描述的列属于哪个表或索引。

  2. staattnum (int2): 这列存储的是被描述列的列号,它指向 pg_attribute 表中的 attnum。这表示在所属表中,该列的顺序编号。

  3. stainherit (bool): 这是一个布尔值,如果为真,则表示统计信息包括子表中的值,而不仅仅是指定关系中的值。

  4. stanullfrac (float4): 这列存储的是该列中空值(null)条目的比例。

  5. stawidth (int4): 这列存储的是该列非空(nonnull)条目的平均存储宽度,单位是字节。

  6. stadistinct (float4): 这列存储的是该列中不同非空数据值的数量。如果值大于零,则表示实际的不同值数量。如果值小于零,则表示与表中行数的乘数的负数;例如,如果一个列大约80%的值是非空的,并且每个非空值平均出现两次,那么可以用 stadistinct = -0.4 来表示。值为零意味着不同值的数量未知。

  7. stakindN (int2): 这列是一个代码数字,表示存储在 pg_statistic 行的第 N 个“槽”中的统计信息类型。

  8. staopN (oid): 这列存储的是用于派生第 N 个“槽”中存储的统计信息的运算符,它指向 pg_operator 表中的 OID。例如,直方图槽会显示定义数据排序顺序的 < 运算符。如果统计信息类型不需要运算符,则为零。

  9. stacollN (oid): 这列存储的是用于派生第 N 个“槽”中存储的统计信息的校对规则,它指向 pg_collation 表中的 OID。例如,对于可校对的列的直方图槽,会显示定义数据排序顺序的校对规则。对于不可校对的数据,值为零。

  10. stanumbersN (float4[]): 这列存储的是第 N 个“槽”的适当类型的数值统计信息,或者如果槽类型不涉及数值,则为 null。

  11. stavaluesN (anyarray): 这列存储的是第 N 个“槽”的适当类型的列数据值,或者如果槽类型不存储任何数据值,则为 null。每个数组的元素值实际上是特定列的数据类型,或者是相关类型,例如数组的元素类型,因此无法比 anyarray 更具体地定义这些列的类型。

你可能感兴趣的:(数据库技术,数据库)