PostgreSQL查看表的大小

PostgreSQL查看表的大小

在 PostgreSQL 中,可以使用一系列函数和系统视图来查看表的大小。这些工具可以帮助您获取表的基本存储大小、包括索引和 TOAST 的总大小等信息。下列方法演示了如何获取这些信息。

使用函数查看表的大小

  1. pg_relation_size():返回表的基础存储大小(不包括索引和 TOAST 数据)。
SELECT pg_relation_size('your_table_name');
  1. pg_table_size():返回表的总大小,包括基础存储和 TOAST 数据,但不包括索引。
SELECT pg_table_size('your_table_name');
  1. pg_indexes_size():返回表的所有索引的总大小。
SELECT pg_indexes_size('your_table_name');
  1. pg_total_relation_size():返回表的总大小,包括基础存储、TOAST 数据和所有索引。
SELECT pg_total_relation_size('your_table_name');
  1. pg_size_pretty():将大小值转换为可读格式,可以与上述函数结合使用。
SELECT pg_size_pretty(pg_relation_size('your_table_name'));

示例查询

以下是一个综合示例,演示如何使用这些函数来获取表的详细存储信息。

SELECT pg_size_pretty(pg_relation_size('your_table_name')) AS base_size,pg_size_pretty(pg_table_size('your_table_name')) AS table_size,pg_size_pretty(pg_indexes_size('your_table_name')) AS indexes_size,pg_size_pretty(pg_total_relation_size('your_table_name')) AS total_size;

示例结果

 base_size | table_size | indexes_size | total_size
-----------+------------+--------------+------------8192 bytes | 8192 bytes | 16384 bytes  | 24576 bytes

使用系统视图查看大小

可以使用系统视图 pg_classpg_namespace 以及函数 pg_size_pretty 结合来获取数据库中所有表的大小信息。

SELECT ns.nspname AS schema_name,cls.relname AS table_name,pg_size_pretty(pg_relation_size(cls.oid)) AS base_size,pg_size_pretty(pg_total_relation_size(cls.oid)) AS total_size
FROM pg_class cls
JOIN pg_namespace ns ON cls.relnamespace = ns.oid
WHERE cls.relkind = 'r'  -- 仅选择普通表AND ns.nspname NOT IN ('pg_catalog', 'information_schema')  -- 排除系统模式
ORDER BY pg_total_relation_size(cls.oid) DESC;

示例结果

 schema_name | table_name | base_size | total_size
-------------+------------+-----------+------------public      | large_table| 1024 MB   | 2048 MBpublic      | small_table| 128 MB    | 256 MB

通过视图查看特定数据库中所有表的大小

上述查询展示了如何在特定数据库中查看所有表的大小。如果你想仅导出一个特定模式下的表数据或包含更多详细信息,可以调整查询。

SELECT ns.nspname AS schema_name,cls.relname AS table_name,pg_size_pretty(pg_relation_size(cls.oid)) AS base_size,pg_size_pretty(pg_total_relation_size(cls.oid)) AS total_size,pg_size_pretty(pg_indexes_size(cls.oid)) AS indexes_size,pg_size_pretty(pg_table_size(cls.oid)) AS table_size
FROM pg_class cls
JOIN pg_namespace ns ON cls.relnamespace = ns.oid
WHERE cls.relkind = 'r'  -- 仅选择普通表AND ns.nspname = 'public'  -- 替换为你要查询的模式
ORDER BY pg_total_relation_size(cls.oid) DESC;

自动化查询所有数据库中的表大小

您也可以写一个脚本来循环遍历所有数据库并查询每个数据库的表大小。例如,可以使用以下 Python 脚本:

import psycopg2
import sysdef get_table_sizes(dbname, user, password, host):try:conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host)cur = conn.cursor()query = """SELECT ns.nspname AS schema_name,cls.relname AS table_name,pg_size_pretty(pg_relation_size(cls.oid)) AS base_size,pg_size_pretty(pg_total_relation_size(cls.oid)) AS total_size,pg_size_pretty(pg_indexes_size(cls.oid)) AS indexes_size,pg_size_pretty(pg_table_size(cls.oid)) AS table_sizeFROM pg_class clsJOIN pg_namespace ns ON cls.relnamespace = ns.oidWHERE cls.relkind = 'r'  -- 仅选择普通表AND ns.nspname NOT IN ('pg_catalog', 'information_schema')  -- 排除系统模式ORDER BYpg_total_relation_size(cls.oid) DESC;"""cur.execute(query)rows = cur.fetchall()for row in rows:print(row)cur.close()conn.close()except Exception as e:print(f"Error connecting to database {dbname}: {e}", file=sys.stderr)# 替换为实际的数据库名称、用户名、密码和主机
databases = ["db1", "db2"]
user = "your_user"
password = "your_password"
host = "your_host"for db in databases:print(f"Database: {db}")get_table_sizes(db, user, password, host)print("\n")

通过这种方式,可以轻松自动化地获取多个数据库中所有表的大小信息。

总结

使用 PostgreSQL 提供的函数和系统视图,可以有效地获取数据库中表的各种尺寸信息。这对于数据库管理、性能优化和容量规划非常有用。如果有更复杂的需求或遇到任何问题,随时提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effective Python

列表与字典 键不在字典 contour counters.get(key,0); 键不在字典,返回默认0. names votes.setdefault(key,[]);键不在字典,关联插入默认值后,返回默认[].

AWS CloudFront怎么计费的?

AWS CloudFront是Amazon Web Services提供的一项内容分发网络(CDN)服务,旨在加快网站、应用程序、视频流和其他Web内容的全球分发速度。通过在全球范围内缓存内容至边缘位置,CloudFront能够减少延迟,提高用户体验。关于CloudFront的计费方式&…

升级必备!Win11专业版镜像下载地址:一键直达!

许多用户想要体验Win11专业版系统的新功能,但不知道Win11专业版在哪下载?接下来小编给大家分享最新的Win11专业版镜像,大家喜欢的话,一键点击下载即可,还可以打开【系统之家官网】寻找自己更喜欢的操作系统。 推荐下载…

c# 协议数据计算陀螺仪的角度,带符号

subStrL str.Substring((76 - 8), 2); subStrH str.Substring((78 - 8), 2); Data[7] (short)(Convert.ToInt16(subStrH, 16) * 256 Convert.ToInt16(subStrL, 16));//角度X subStrL str.Substring((80 - 8), 2); subStrH str.Subst…

JavaScript typeof 运算符详解

JavaScript typeof 运算符详解 JavaScript 中的 typeof 运算符是一个一元运算符,用于确定一个变量的数据类型。它返回一个表示数据类型的字符串。typeof 运算符在 JavaScript 开发中非常常用,尤其是在进行类型检查时。本文将详细介绍 typeof 运算符的使…

大学物理(动量定理)

目录 冲量与动量 质点动量定理 质点系动量定理:​编辑 例题 ​编辑 例题 ​编辑 动量守恒定律:。 例题 ​编辑 例题 ​编辑 角动量 ​编辑 例题 ​编辑 力矩与角动量定理​编辑 角动量守恒定律: ​编辑 例题 冲量与动量 质点动量定理 质点系动量定理: 例题 例…

深入理解JavaScript展开运算符(附Demo)

目录 1. 基本知识2. Demo3. 总结 1. 基本知识 JavaScript ES6中的一个特色 由三个点(...)组成,主要用于数组和对象的操作可以将数组或对象的元素展开到另外一个数组或对象中 数组中的展开运算符:(将数组中的元素展开为单独的元…

拆分两个单链表

分数 5 作者 李卫明 单位 杭州电子科技大学 1.4 编写程序,输入若干正整数,按从小到大次序建立1个带头结点单链表,设计一个实现单链表分离算法的Split函数,将原单链表中值为偶数的结点分离出来形成一个新单链表,新单…

大型网站优化指南:打造流畅的在线体验

大型网站 大型网站是指具有高并发、大流量、高可用性、海量数据处理能力,并能提供7*24小时不间断服务的网站。 这些网站通常面临用户分布广泛、网络情况复杂、安全环境恶劣等挑战。 同时需要快速适应市场变化和用户需求,通过渐进式的发展策略运营成大型…

深入探索Stable Diffusion:从原理到应用的全面解析

目录 一 Stable Diffusion的基本概念 什么是Stable Diffusion? Stable Diffusion与传统生成模型的区别 二 Stable Diffusion的理论基础 扩散过程的数学描述 马尔可夫链蒙特卡罗方法(MCMC) 三 Stable Diffusion的算法实现 基本步骤 代码实现 四 Stable Diffusion的…

Python类中变量定义详解

✨前言: Python中的类可以定义两种类型的变量:类变量和实例变量。 类变量(Class Variables): 类变量是在类级别上定义的变量,它们是对所有实例共享的。这意味着类变量只有一个副本,无论你创建了…

图形化编程:解锁数字创意的新钥匙

在这个日新月异的数字时代,编程已不再局限于专业人士的小圈子,它正逐渐成为一项基础技能,融入我们的日常生活与工作中。而对于那些对传统代码望而生畏的人来说,6547网认为图形化编程犹如一股清流,以其直观、易学的特点…

【streamlit】将markdown文件,以网页形式打开

1、安装依赖 pip install streamlit 2、创建应用入口 # qucikStart.py import streamlit as stdocs_file "./docs.md"def read_markdown_file(filepath):with open(filepath, r, encodingutf-8) as f:return f.read()text read_markdown_file(docs_file) st.markd…

基础算法--双指针算法

文章目录 什么是双指针算法例题1.移动零2.复写零3.快乐数4.盛最多水的容器5.有效三角形的个数6.三数之和7.四数之和 什么是双指针算法 通常我们讲的双指针就是用两个指针,两个指针可以是快慢指针,解决成环的问题,也可以是指向收尾的两个指针…

短剧app广告变现模式开发

短剧app搭建是一个涉及多个方面的复杂过程,下面将介绍主要的步骤和考虑因素: 明确目标和定位:在开始搭建之前,首先要明确你的目标受众是谁,以及短剧app的主要定位是什么。这有助于在后续的开发过程中更有针对性地进行…

医院运维团队需要具备的关键能力及产品推荐

为了实现医院一体化运维监控,医院运维团队需要具备以下关键能力: 1. 技术能力: 系统监控能力:运维团队需要熟练掌握各种监控工具,能够实时监控系统的运行状态,包括服务器性能、网络状况、应用程序运行情况…

window端口占用情况及state解析

背景: 在电脑使用过程中,经常会开许多项目,慢慢地发现电脑越来越卡,都不知道到底是在跑什么项目导致,于是就想查看一下电脑到底在跑什么软件和项目,以作记录。 常用命令 netstat -tuln : 使用…

Python3发送邮件如何添加附件?怎么配置?

Python3发送邮件的注意事项?如何配置Python3发邮件? Python3发送邮件时添加附件是一项常见的需求。无论是发送报告、图片,还是其他文件,掌握如何在邮件中添加附件至关重要。AokSend将详细介绍Python3发送邮件时如何添加附件&…

前端网站(二)-- 菜单页面【附源码直接可用】

菜单页面 开篇(请大家看完):此网站写给挚爱,后续页面还会慢慢更新,大家敬请期待~ ~ ~ 轻舟所编写这个前端框架的设计初衷,纯粹是为了哄对象开心。除此之外,并无其它任何用途或目的。 此前端框…

JavaScript运行原理和执行过程

参考: https://www.cnblogs.com/hexrui/p/15939592.html 1、执行上下文栈(调用栈) GECGlobal Execution Context(GEC)被放入到ECS(Execution Context Stack,简称ECS)中 GEC开始执…