博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL 监控磁盘使用
阅读量:4585 次
发布时间:2019-06-09

本文共 1257 字,大约阅读时间需要 4 分钟。

监控磁盘使用

1. 判断磁盘用量

每个表都有一个主要的堆磁盘文件,大多数数据都存储在其中。如果一个表有着可能会很宽(尺寸大)的列, 则另外还有一个

TOAST文件与这个表相关联, 它用于存储因为太宽而不能存储在主表里面的值。如果有这个附属文件,那么TOAST表上会有一
个可用的索引。 当然,同时还可能有索引和基表关联。每个表和索引都存放在单独的磁盘文件里 — 如果文件超过 1G 字节,甚至可能多于一个文件。

SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'customer';

select * from pg_locks;
select * from pg_class limit 10;

每个页通常都是 8K 字节(记住,relpages只会由VACUUM、ANALYZE和少数几个 DDL 命令

如CREATE INDEX所更新)。如果你想直接检查表的磁盘文件,那么文件路径名应该有用。
要显示TOAST表使用的空间,我们可以使用一个类似下面这样的查询:

SELECT relname, relpages

FROM pg_class,
(SELECT reltoastrelid
FROM pg_class
WHERE relname = 'customer') AS ss
WHERE oid = ss.reltoastrelid OR
oid = (SELECT indexrelid
FROM pg_index
WHERE indrelid = ss.reltoastrelid)
ORDER BY relname;

也可以很容易地显示索引的尺寸:

SELECT c2.relname, c2.relpages

FROM pg_class c, pg_class c2, pg_index i
WHERE c.relname = 'customer' AND
c.oid = i.indrelid AND
c2.oid = i.indexrelid
ORDER BY c2.relname;

很容易用下面的信息找出最大的表和索引:

SELECT relname, relpages

FROM pg_class
ORDER BY relpages DESC;

2. 磁盘满失败

一个数据库管理员最重要的磁盘监控任务就是确保磁盘不会写满。一个写满了的数据磁盘可能不会导致数据的崩溃,但它肯定会让系统变

得不可用。如果保存 WAL 文件的磁盘变满,会发生数据库服务器致命错误并且可能发生关闭。
如果你不能通过删除一些其他的东西来释放一些磁盘空间,那么你可以通过使用表空间把一些数据库文件移动到其他文件系统上去。
提示: 有些文件系统在快满的时候性能会急剧恶化,因此不要等到磁盘完全满的时候才采取行动。

转载于:https://www.cnblogs.com/yhq1314/p/10045409.html

你可能感兴趣的文章
BIEE一些目录
查看>>
南阳97
查看>>
【LibreOJ 6278】 数列分块入门 2 (分块)
查看>>
利用Jmeter模拟Github登录
查看>>
解决mybatis空字段null字段不返回
查看>>
生命的意义
查看>>
Box-Muller 与 ziggurat
查看>>
zookeeper+dubbo问题
查看>>
dubbo zookeeper图解入门配置
查看>>
winform如何不卡界面
查看>>
Random随机库
查看>>
AFNetworking 3.0x版本最新特性
查看>>
PHP排序算法实现 与sort性能对比
查看>>
manage partitions
查看>>
Java快速入门
查看>>
C++中函数重载
查看>>
BLE广播数据的抓包解析
查看>>
基于 Android NDK 的学习之旅-----HelloWorld
查看>>
JAVA CAS原理深度分析
查看>>
initWithFrame方法的理解
查看>>