zoukankan      html  css  js  c++  java
  • PostgreSQL 监控磁盘使用

    监控磁盘使用

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

  • 相关阅读:
    Tennix — 开源的网球游戏
    Tile Racer — 3D 赛车游戏
    51CTO网管生活
    分割图片的例子 回复 "小熊宝" 的问题
    图解 CSS (5): font 字体
    图解 CSS (9): 列表
    图解 CSS (11): 理解样式表的逻辑
    图解 CSS (8): 浮动、显示、隐藏
    图解 CSS (10): 链接、继承、放缩、鼠标指针、其他(待补充...)
    多线程编程(2) 从 CreateThread 说起
  • 原文地址:https://www.cnblogs.com/yhq1314/p/10045409.html
Copyright © 2011-2022 走看看