前面已经对表空间的基本内容进行了总结,本文在此基础上加入几个进阶的操作
1. 默认表空间的地址
pg_default
用来存储非共享系统表、用户表、用户表index、临时表、临时表index、内部临时表的默认表空间。对应存储目录为实例数据目录下的base目录。
pg_global
用来存放共享系统表的表空间。对应存储目录为实例数据目录下的global目录。
2.pg_class
PG_CLASS系统表存储数据库对象信息及其之间的关系。
常见字段
- oid: 行标识符(隐含属性,必须明确选择)
- relname:表、索引、视图等对象的名称。
- relowner:关系所有者
- reltablespace: 这个关系存储所在的表空间。如果为零,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。
- relpages:以页(大小为BLCKSZ)为单位的此表在磁盘上的大小,它只是优化器用的一个近似值。
- relkind:
- r 表示普通表。
- i 表示索引。
- v 表示视图。
3.三个函数
pg_size_pretty(bigint)
描述:将以64位整数表示的字节值转换为具有单位的易读格式。
返回值类型:text
pg_size_pretty(numeric)
描述:将以数值表示的字节值转换为具有单位的易读格式。
返回值类型:text
pg_relation_size(oid)
描述:指定OID代表的表或者索引所使用的磁盘空间。
返回值类型:bigint
pg_tablespace_size(name/oid)
描述:指定名称的表空间使用的磁盘空间。
返回值类型:bigint
pg_tablespace_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。
4.每日sql语句
--with as 可以把它当作一个临时视图
with objectInDefaultTS as
( select relname, relkind, relpages,pg_size_pretty(pg_relation_size(a.oid)),
reltablespace,relowner
from pg_class a
where a.relkind in ('r', 'i') and reltablespace='0'
)
select *
from objectInDefaultTS
where relname not like 'pg_%' and relname not like 'gs_%' and relname not like 'sql_%'
order by relpages desc;
复制
查看数据库在默认表空间下有哪些对象
--执行下面的SQL语句,查询数据库studentdb的非默认表空间t_tbspace下有哪些对象:
select relname,relkind,relpages,pg_size_pretty(pg_relation_size(a.oid)),
reltablespace,relowner
from pg_class a, pg_tablespace tb
where a.relkind in ('r', 'i')
and a.reltablespace=tb.oid
and tb.spcname='t_tbspace'
order by a.relpages desc;
复制
查看数据库在非默认表空间下有哪些对象
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
目录