The bucardo project has released its nagios plugins for PostgreSQL and we can extract from them this nice view in order to check for table and index bloatinto our PostgreSQL databases:

下面是检查表空间的使用情况的脚本:

CREATE OR REPLACE VIEW bloat ASSELECTschemaname, tablename, reltuples::bigint, relpages::bigint, otta,ROUND(CASE WHEN otta=0 THEN 0.0 ELSE sml.relpages/otta::numeric END,1) AS tbloat,relpages::bigint - otta AS wastedpages,bs*(sml.relpages-otta)::bigint AS wastedbytes,pg_size_pretty((bs*(relpages-otta))::bigint) AS wastedsize,iname, ituples::bigint, ipages::bigint, iotta,ROUND(CASE WHEN iotta=0 OR ipages=0 THEN 0.0 ELSE ipages/iotta::numeric END,1) AS ibloat,CASE WHEN ipages < iotta THEN 0 ELSE ipages::bigint - iotta END AS wastedipages,CASE WHEN ipages < iotta THEN 0 ELSE bs*(ipages-iotta) END AS wastedibytes,CASE WHEN ipages < iotta THEN pg_size_pretty(0::bigint) ELSE pg_size_pretty((bs*(ipages-iotta))::bigint) END AS wastedisizeFROM (SELECTschemaname, tablename, cc.reltuples, cc.relpages, bs,CEIL((cc.reltuples*((datahdr+ma-(CASE WHEN datahdr%ma=0 THEN ma ELSE datahdr%ma END))+nullhdr2+4))/(bs-20::float)) AS otta,COALESCE(c2.relname,'?') AS iname, COALESCE(c2.reltuples,0) AS ituples, COALESCE(c2.relpages,0) AS ipages,COALESCE(CEIL((c2.reltuples*(datahdr-12))/(bs-20::float)),0) AS iotta -- very rough approximation, assumes all colsFROM (SELECTma,bs,schemaname,tablename,(datawidth+(hdr+ma-(case when hdr%ma=0 THEN ma ELSE hdr%ma END)))::numeric AS datahdr,(maxfracsum*(nullhdr+ma-(case when nullhdr%ma=0 THEN ma ELSE nullhdr%ma END))) AS nullhdr2FROM (SELECTschemaname, tablename, hdr, ma, bs,SUM((1-null_frac)*avg_width) AS datawidth,MAX(null_frac) AS maxfracsum,hdr+(SELECT 1+count(*)/8FROM pg_stats s2WHERE null_frac<>0 AND s2.schemaname = s.schemaname AND s2.tablename = s.tablename) AS nullhdrFROM pg_stats s, (SELECT(SELECT current_setting('block_size')::numeric) AS bs,CASE WHEN substring(v,12,3) IN ('8.0','8.1','8.2') THEN 27 ELSE 23 END AS hdr,CASE WHEN v ~ 'mingw32' THEN 8 ELSE 4 END AS maFROM (SELECT version() AS v) AS foo) AS constantsGROUP BY 1,2,3,4,5) AS foo) AS rsJOIN pg_class cc ON cc.relname = rs.tablenameJOIN pg_namespace nn ON cc.relnamespace = nn.oid AND nn.nspname = rs.schemanameLEFT JOIN pg_index i ON indrelid = cc.oidLEFT JOIN pg_class c2 ON c2.oid = i.indexrelid) AS smlWHERE sml.relpages - otta > 0 OR ipages - iotta > 10ORDER BY wastedbytes DESC, wastedibytes DESC;

更详细可以参见check_postgres脚本:

http://bucardo.org/wiki/Check_postgres

参考:

http://pgsql.tapoueh.org/site/html/news/20080131.bloat.html

转载于:https://www.cnblogs.com/xiaotengyi/p/5068407.html

PostgreSQL and bloat相关推荐

  1. How to prevent object bloat in PostgreSQL

    Postgres2015全国用户大会将于11月20至21日在北京丽亭华苑酒店召开.本次大会嘉宾阵容强大,国内顶级PostgreSQL数据库专家将悉数到场,并特邀欧洲.俄罗斯.日本.美国等国家和地区的数 ...

  2. postgresql参数化查询_一个能融会贯通PostgreSQL监控的人,大概率是高手

    有一些同学觉得监控无非是针对CPU.内存 .磁盘进行一些简单的监控,其实不仅仅如此,监控涵盖了众多知识的融合,能融会贯通PostgreSQL监控的人,大概率是PostgreSQL高手. POSTGRE ...

  3. 查看postgresql 磁盘占用_一个能融会贯通PostgreSQL监控的人,大概率是高手

    有一些同学觉得监控无非是针对CPU.内存 .磁盘进行一些简单的监控,其实不仅仅如此,监控涵盖了众多知识的融合,能融会贯通PostgreSQL监控的人,大概率是PostgreSQL高手. POSTGRE ...

  4. pg_repack bloat 处理测试初步

    一.软件安装 1.软件需求: postgresql-9.5.2.tar.gz pg_repack-1.3.4.zip 2.安装pg_repack [root@localhost pg_repack-1 ...

  5. PostgreSQL 收缩膨胀表或索引 - pg_squeeze or pg_repack

    PostgreSQL 收缩膨胀表或索引 - pg_squeeze or pg_repack 作者 digoal 日期 2016-10-30 标签 PostgreSQL , pg_repack , pg ...

  6. PostgreSQL 179个场景

    案例 1.<多字段,任意组合(0建模) - 毫秒级实时圈人 - 最佳实践> 2.<IoT(物联网)极限写入.消费 最佳实践 - 块级(ctid)扫描> 3.数据采样和脱敏实践 ...

  7. PostgreSQL 监控之拨云见日 (公开课)

    以下是前天晚间公开课的文本内容 ___________________________________________________________________________ 大家好,今天要和 ...

  8. postgresql autovaccum自动清理

    为什么要开启autovaccum 在Postgresql做delete操作时,数据集(也叫做元组 (tuples))是没有立即从数据文件中移除的,仅仅是通过在行头部设置xmax做一个删除标记. upd ...

  9. PostgreSQL 如何查找TOP SQL (例如IO消耗最高的SQL) (包含SQL优化内容)

    目录 背景 一.安装pg_stat_statements 二.加载pg_stat_statements模块 三.配置pg_stat_statements采样参数 四.创建pg_stat_stateme ...

最新文章

  1. 【Qt】错误处理:error: undefined reference to `qMain(int, char**)‘
  2. 静态成员函数不能采用const修饰的原因
  3. 实现Qemu aarch32虚拟开发板ping www.baidu.com
  4. win10 microsoft compatibility telemetry 禁用用户改善反馈服务进程 磁盘占用高
  5. git commit --amend 改写提交
  6. PHP路径realpath __FILE__ __DIR__ dirname
  7. 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
  8. Spring方法注入 @Lookup注解使用
  9. Error:Connection timed out: connect
  10. nsdictionary获取值_objective-c – 在NSDictionary中获取值
  11. Mac源码安装使用OpenCV
  12. 基于VUE,VUX组件开发的网易新闻页面搭建过程
  13. UvaLive 6664 Clock Hands
  14. 速锐得驾培驾考免接线OBD数据价值及发展思路
  15. 磊科Q3刷236W 免交换机双拨
  16. php yar2,[原]PHP-yar拓展源码解读二-protocol篇
  17. 淘宝模拟登录 +淘宝商品详情数据、淘宝商品列表数据爬取
  18. Python--自动将文件分类归入文件夹
  19. EXCEL文件打开缓慢的问题解决
  20. 堪称教科书级别的Android音视频入门进阶学习手册,开源分享

热门文章

  1. PHP二维数组去除重复,重复值相加
  2. 爬取马蜂窝英国旅行攻略
  3. 【树莓派】4G模块打电话
  4. php 经纬度范围计算器,经纬度距离角度计算器|经纬度距离角度计算器(geography)下载v2.1 免费版 - 欧普软件下载...
  5. 语文科计算机培训心得体会,语文培训心得体会(精选3篇)
  6. 基于uni-app实现微信小程序一键登录和退出登录功能
  7. IPv6邻居发现协议
  8. 使用Geth设置基于权利证明POA的以太网私有网络
  9. 【深度之眼Python基础+数据科学入门训练营】第四章 组合数据类型
  10. Qt开发经验小技巧171-175