Postgresql统计所有表的基本信息(如行数、大小等)
目录 pg_class 记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见 pg_index )、序列、视图、物化视图、组合类型和TOAST表,参见 relkind 。下面,当我们提及所有这些类型的对象时我们使用“关系”。并非所有列对于所有关系类型都有意义。
pg_class 中的一些逻辑标志被以一种懒惰的方式维护:在正确状态时它们被保证为真,但是当条件不再为真时它们并不会被立刻重置为假。例如, relhasindex 由 CREATE INDEX 设置,但它从不会被DROP INDEX 清除。作为替代, VACUUM 会在找到无索引表后清除其 relhasindex 。这种安排避免了竞争条件并且提高了并发性。
具体内容见下:
|
名称 |
类型 |
参考 |
描述 |
|
oid |
oid |
行标识符(隐藏属性;必须明确选择) |
|
|
relname |
name |
表格,索引,视图等的名称 |
|
|
relnamespace |
oid |
pg_namespace.oid |
包含此relation的名称空间的oid |
|
reltype |
oid |
pg_type .oid |
与此表行类型对应的数据类型的oid(如果有的话)(对于没有pg_type条目的索引,为零 ) |
|
reloftype |
oid |
pg_type .oid |
对于类型表,基础复合类型的oid,对于所有其他relation为零 |
|
relowner |
oid |
pg_authid.oid |
relation的所有者 |
|
relam |
oid |
pg_am.oid |
如果这是一个索引,则使用的访问方法(B-树,散列等) |
|
relfilenode |
oid |
该relation的磁盘文件的名称; 零表示这是一个“映射”relation,其磁盘文件名由低级状态决定 |
|
|
reltablespace |
oid |
pg_tablespace.oid |
存储该relation的表空间。如果为零,则隐含数据库的默认表空间。(如果relation没有磁盘上的文件,则无意义。) |
|
relpages |
int4 |
该表的磁盘表示的大小(页面大小为BLCKSZ)。这只是计划者使用的估计值。它由 VACUUM,ANALYZE和一些DDL命令(如 CREATE INDEX)更新。 |
|
|
reltuples |
float4 |
表中的行数。这只是计划者使用的估计值。它由VACUUM,ANALYZE和一些DDL命令(如CREATE INDEX)更新。 |
|
|
relallvisible |
int4 |
在表格的可见性图中标记为全部可见的页面数。这只是计划者使用的估计值。它由VACUUM,ANALYZE和一些DDL命令(如CREATE INDEX)更新。 |
|
|
reltoastrelid |
oid |
pg_class .oid |
与此表关联的TOAST表的oid,如果没有,则为0。TOAST表在“辅助表”中存储“超出行”的大型属性 。 |
|
relhasindex |
bool |
如果这是一个表并且它有(或最近有)任何索引,则为真 |
|
|
relisshared |
bool |
如果此表在群集中的所有数据库之间共享,则为true。只有某些系统目录(如 pg_database)被共享。 |
|
|
relpersistence |
char |
p =永久表, u =未记录表,t =临时表 |
|
|
relkind |
char |
r =普通表, i =索引,S =序列,v =视图,m =物化视图, c =复合类型,t = TOAST表,f =外部表 |
|
|
relnatts |
int2 |
relation中的用户列数(系统列未计数)。pg_attribute中必须有许多相应的条目。另见pg_attribute.attnum。 |
|
|
relchecks |
int2 |
表上CHECK约束的数量; 请参阅pg_constraint目录 |
|
|
relhasoids |
bool |
如果我们为relation的每一行生成oid,则为真 |
|
|
relhaspkey |
bool |
如果表具有(或曾经有)主键,则为真 |
|
|
relhasrules |
bool |
如果表具有(或曾经有)规则,则为真; 请参阅pg_rewrite目录 |
|
|
relhastriggers |
bool |
如果表具有(或曾经有)触发器,则为真; 请参阅 pg_trigger目录 |
|
|
relhassubclass |
bool |
如果表有(或曾经有过)任何继承孩子,则为真 |
|
|
relrowsecurity |
bool |
如果表已启用行级安全性,则为true; 请参阅 pg_policy目录 |
|
|
relforcerowsecurity |
bool |
如果行级别安全性(启用时)也为true,则也适用于表所有者; 请参阅pg_policy目录 |
|
|
relispopulated |
bool |
如果relation被填充,则为真(对于除某些实例化视图之外的所有relation都是如此) |
|
|
relreplident |
char |
用于为行构成“副本标识”的列:d = default(主键,如果有的话),n =无,f =所有列 i =具有indisreplident set的索引或default |
|
|
relfrozenxid |
xid |
在此表之前的所有交易ID已被替换为永久(“冻结”)交易ID。这用于跟踪是否需要将表抽真空以防止事务ID环绕或允许缩小pg_clog。零(InvalidTransactionId)如果relation不是一个表。 |
|
|
relminmxid |
xid |
在此表之前的所有多重作业ID已由该事务ID替换。这用于跟踪是否需要将表抽真空以防止多轴实现ID 绕回或允许缩小pg_multixact。零(InvalidMultiXactId)如果relation不是一个表。 |
|
|
relacl |
aclitem[] |
||
|
reloptions |
text[] |
特定于访问方法的选项,如“keyword = value”字符串 |
Postgresql统计所有表的基本信息(如行数、大小等)的更多相关文章
- 统计文件夹下java代码行数的小程序--主要是学习任务队列的思想
首先感谢czbk的老师,录制的视频,让我们有这么好的学习资料.……—— 统计文件夹java文件的行数,首先想到的肯定是用递归的方法,因为文件夹下面可能包含文件夹,用递归的方法,代码容易写.(这和写简单 ...
- 使用Eclipse可以方便的统计工程或文件的代码行数,
使用Eclipse可以方便的统计工程或文件的代码行数,方法如下: 1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expressi ...
- iOS 统计Xcode整个工程的代码行数
小技巧5-iOS 统计Xcode整个工程的代码行数 1.打开终端 2.cd 空格 将工程的文件夹拖到终端上,回车,此时进入到工程的路径 此时已经进入到工程文件夹下 3.运行指令 a. find . - ...
- 【原】Mac下统计任意文件夹中代码行数的工
[链接][原]Mac下统计任意文件夹中代码行数的工http://www.cnblogs.com/wengzilin/p/4580646.html
- 使用 JavaScript 用循环嵌套输出乘法表。外循环控制行数,内循环控制当前行要输出的乘法表达式,在页面上输出九九乘法表
查看本章节 查看作业目录 需求说明: 在页面上输出九九乘法表,实现效果如图所示 实现思路: 创建HTML页面 在页面中嵌入 <script type="text/javascript& ...
- 统计iOS项目的总代码行数的方法
打开终端, 用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" -or - ...
- 【原】Mac下统计任意文件夹中代码行数的工具——cloc
这里介绍一个Mac系统统计代码行数的工具cloc. 1.首先,安装homebrew,已安装的请跳过. 打开终端工具Terminal,输入下列命令.过程中会让你按RETURN键以及输入mac桌面密码,按 ...
- 统计Visual Studio项目的代码行数
原文转自 https://blog.csdn.net/tyc129/article/details/74279806 使用Visual Studio 自带的在文件中查找功能中的正则表达式实现代码统计功 ...
- 利用Clojure统计代码文件数量和代码行数
;; 引入clojure的io包 (use '[clojure.java.io]) ;; 遍历目录将所有符合要求的文件做为列表返回 (defn walk [dirpath pattern] (doal ...
- 统计py文件或目录代码行数
bug:当遇到3个"""时 可能会将下面的代码不计入代码总行数 import os def count_path(path,countcode): if os.path. ...
随机推荐
- SQL_TIP_JOIN_x
没有条件的JOIN会导致数据数量变为两表的数据量的乘积结果. 用ON来在这些结果里进行筛选 on T1.A = T2.A的时候,如果T1的A是不重复的,则实际上是在对T2现有数据做筛选,结果数据量&l ...
- 【离线数仓环境搭建】安装linux及安装JDK
创建新的虚拟机 配置网络 安装vim sudo yum install -y vim 修改免密 sudo vim /etc/sudoers (执行安装命令的时候,不再需要输入密码) 查看防火墙状态 s ...
- Eclipse 获取maven项目出现问题汇总
1.errors occurred during the build,可以试试加上下图的配置,路径根据自己jak安装路径去修改
- MySQL中的sql优化
目标: 掌握SQL调优的原则 掌握SQL调优的基本逻辑 掌握优秀SQL的编写方案 掌握何为慢SQL以及检测方案 SQL优化原则 1.减少数据量(表中数据太多可以分表,例如超过500万数据 双11一个 ...
- 4-发票校验-不可能为条目1000 DIF确立帐户-消息号 M8147
SPRO-->物料管理-->评估和科目设置-->科目确定-->无向导的科目确定-->配置自动记帐(OBYC)
- Windows初始化.net core环境
1.项目使用.ner core版本(例:.net core.3.1) 1.1安装运行环境 https://dotnet.microsoft.com/en-us/download 1.2安装.net 运 ...
- re的finditer()
在前面学习了findall()函数,它可以一次性找到多个匹配的字符串,但是不能提供所在的位置,并且是一起返回的,如果有数万个一起返回来,就不太好处理了,因此要使用finditer()函数来实现每次只返 ...
- Mogdb / opengauss 用户密码错误,用户被锁
# 问题概述xxx客户新上一套opengauss数据库,在测试中程序里用户的密码配置错误,导致用户被锁# 解决方案1.跟oracle 语法一样alter user xxx account unlock ...
- ASP.NET Core连接字符串中的特殊字符如何处理?多实例如何连接?
ASP.NET Core连接字符串中的特殊字符,如数据库密码,有时会有特殊字符,如password&1234, 如何直接使用会报连接错误,只需用单引号阔起来即可,如下'password& ...
- el-pagination分页-自定义左右箭头样式
1,官方样式: 查了网上,有人说可以用slot插槽,但是试过之后,因为 不能插入多个 slot(没法定义名字做区分),所以导致左右按钮一样了.. 2,还有种方法: 利用 prev-text 和 n ...