PG及GreenPlum数据库视图pg_attribute相关及表膨胀说明

0    312    3

Tags:

👉 本文共约3766个字,系统预计阅读时间或需15分钟。

pg_attribute介绍

pg_attribute存储关于表列的信息。 数据库中每个表的每一列都正好对应pg_attribute表的一行(还有有索引的属性项,以及所有有pg_class 项的对象的属性)。 术语属性等效于列。

类型参考描述
attrelidoidpg_class.oid该列所属的表。
attnamename列名。
atttypidoidpg_type.oid该列的数据类型。
attstattargetint4控制由ANALYZE为此列积累的统计信息的详细程度。 0值表示不应收集统计信息。 负值表示使用系统默认的统计信息目标。 正值的确切含义依赖于数据类型。 对于标量数据类型,它既是要收集的“最常用值”的目标,也是要创建的柱状图的目标。
attlenint2该列类型的pg_type.typlen的副本。
attnumint2列编号。普通列从1开始编号。系统列(如OID),具有(任意)负编号。
attndimsint4如果列是一个数组类型则是维度数;否则为0(目前,数组的维数不是强制的,所以任何非0值都能有效地表示它为一个数组)。
attcacheoffint4在存储中始终为-1,但是当加载到内存中的行描述符时,这可能会被更新以缓存该属性在行中的偏移量。
atttypmodint4记录在表创建时提供的特定类型的数据(例如,varchar列的最大长度)。 它被传递到特定类型的输入函数和长度强制函数。 对于不需要它的类型,该值通常为-1。
attbyvalboolean该列类型的pg_type.typbyval副本。
attstoragechar通常是该列类型的pg_type.typstorage副本。 对于可TOAST的数据类型来说,可以在列创建之后更改这些数据类型,以控制存储策略。
attalignchar该列类型的pg_type.typalign副本。
attnotnullboolean这表示一个非空约束。 可以更改此列以启用或禁用该约束。
atthasdefboolean此列具有默认值,这种情况下,将在pg_attrdef catalog中存在相应的条目实际定义默认值。
attisdroppedboolean该列已被删除,不再有效。 已删除的列仍然物理存在于表中,但是会被解析器忽略,所以无法通过SQL访问。
attislocalboolean该列在表中本地定义。 请注意,列可以同时在本地定义和继承。
attinhcountint4这列的直接祖先的数量。 具有非0数量祖先的列不能被删除或重命名。
attcollationoidpg_collation.oid列的已定义排序规则,如果不是可合并数据类型,则为零。
attaclaclitem[]列级访问权限(如果已在此列上专门授予)。
attoptionstext[]属性级选项,作为“keyword = value”字符串。
attfdwoptionstext[]属性级外部数据包装器选项,作为“keyword = value”字符串。

表pg_attribute膨胀测试

表 pg_attribute存储关于表列的信息,数据库中每张表中的行都会对应在该系统表 pg_attribute 中。既然存储的是数据库中表字段相关的信息,那么对表所做的修改都会通过该表记录。如创建表指定的列,修改表,修改表的数据类型等等。

表pg_attribute膨胀案例

同事反馈说,有个应用系统,后台数据库是GreenPlum 6的,但是系统在获取表列的时候非常慢,请求协助排查一下原因。

预估是元数据表膨胀导致,于是查询了一下表膨胀信息,发现如下:

经过查询,表pg_attribute大约7万行,但是占用空间达到了66GB(你没看错,是66GB),于是果断执行vacuum full pg_attribute,大约2分钟左右时间,再继续查询,发现该表缩小到100MB了,应用系统也恢复正常了。

当对表执行完 VACUUM FULL 操作时,该膨胀的空间会返还给操作系统,而单独的 VACUUM不行。

pg_attribute膨胀相关SQL及原因查询

gpcc中查询

Prometheus监控查询

定期对系统表pg_attribute做vacuum操作

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复