pg_freespacemap模块提供一种检查自由空间映射(FSM)的手段。它提供一个名为pg_freespace的函数,或精确的说是两个重载函数。该函数在一个给定的页面或关系中的所有页面的自由空间映射内显示记录的值。缺省的公共访问在该函数中取消了,只是因为潜藏的安全问题。
1,创建扩展

jinli=# create extension pg_freespacemap;
CREATE EXTENSION
jinli=# \dxS+ pg_freespacemap
Objects in extension "pg_freespacemap"
Object Description
----------------------------------------
function pg_freespace(regclass)
function pg_freespace(regclass,bigint)
(2 rows)

可以发现pg_freespacemap扩展模块被创建出来后,多了两个重载函数。
2,示例输出

jinli=# select * from pg_freespace('public.log_level_problem');
blkno | avail
-------+-------
0 | 73921 | 66562 | 35523 | 3204 | 45765 | 49286 | 59527 | 80648 | 79369 | 793610 | 6944
(11 rows)
select * from pg_freespace('public.log_level_problem',10);
pg_freespace
--------------
6944
(1 row)
jinli=# --查看表的平均空间空闲率
jinli=# select count(1) as "number of pages",pg_size_pretty(cast(avg(avail) as bigint)) as "freespace size",round(100 * avg(avail)/8192,2)||'%' as "freespace tatio" from pg_freespace('public.log_level_problem');
number of pages | freespace size | freespace tatio
-----------------+---------------------+----------------------
11 | 5841 bytes | 71.31%(1 row)
jinli=# vacuum public.log_level_problem;
VACUUM
jinli=# select count(1) as "number of pages",pg_size_pretty(cast(avg(avail) as bigint)) as "freespace size",round(100 * avg(avail)/8192,2)||'%' as "freespace tatio" from pg_freespace('public.log_level_problem');
number of pages |freespace size |freespace tatio
-----------------+---------------------+----------------------
11 | 5690 bytes | 69.46%
(1 row)
vacuum full public.log_level_problem;
VACUUM
jinli=# select count(1) as "number of pages",pg_size_pretty(cast(avg(avail) as bigint)) as "freespace size",round(100 * avg(avail)/8192,2)||'%' as "freespace tatio" from pg_freespace('public.log_level_problem');
number of pages | freespace size | freespace tatio
-----------------+---------------------+----------------------
4 | 0 bytes | 0.00%
(1 row)
jinli=# select * from pg_freespace('public.log_level_problem');
blkno | avail
-------+-------
0 | 01 | 02 | 03 | 0
(4 rows)

该示例可以看出来执行完vacuum并不能全部释放空间,需执行vacuum full之后才能彻底“压实”页面。

pg_freespacemap查看表膨胀的更多相关文章

  1. MySQL 查看表结构简单命令

    一.简单描述表结构,字段类型 desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键. 例如:desc table_name 二.查询表中列的注释信息 select ...

  2. SOME:收缩数据库日志文件,查看表数据量和空间占用,查看表结构索引修改时间

    ---收缩数据库日志文件 USE [master]ALTER DATABASE yourdatabasename SET RECOVERY SIMPLE WITH NO_WAITALTER DATAB ...

  3. Oracle以及SDE维护常用命令-查看表空间等

    之前现场反馈一个数据更新的问题,查看感觉是因为表空间满了导致的(错误在之前的博客随笔中写过),因此远程对服务器进行查看.个人平常都是通过Oracle客户端的Entreprise Manager Con ...

  4. ORACLE查看表空间对象

    ORACLE如何查看表空间存储了那些数据库对象呢?可以使用下面脚本简单的查询表空间存储了那些对象: SELECT TABLESPACE_NAME       AS TABLESPACE_NAME    ...

  5. 161215、MySQL 查看表结构简单命令

    一.简单描述表结构,字段类型desc tabl_name;显示表结构,字段类型,主键,是否为空等属性,但不显示外键.二.查询表中列的注释信息select * from information_sche ...

  6. Oracle 查看表空间的大小及使用情况sql语句

    --1.查看表空间的名称及大小 )), ) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.t ...

  7. sp_help 快速查看表结构、视图信息

    sp_helptext: 是MS SQL Server的一个系统存储过程,可以通过它来查看存储过程或者视图.函数源码 示例:sp_helptext viewName (viewName  即要查询的存 ...

  8. Sql语句查看表结构

    快速查看表对的就说明,及表字段描述及字段类型 --表描述 SELECT tbs.name 表名,ds.value 描述 FROM sys.extended_properties ds LEFT JOI ...

  9. MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型

    --表描述 SELECT tbs.name 表名,ds.value 描述 FROM sys.extended_properties ds LEFT JOIN sysobjects tbs ON ds. ...

  10. (转)oracle 查看表所占用的空间大小

    1.查看表所占空间 SELECT   TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999')   CNT_MB     FROM   ...

随机推荐

  1. 初学银河麒麟linux笔记 第三章 QT缺少的模块下载、更新软件源操作

    在共享文件夹里将WINDOWS里已经编写好的QT程序编译之后,提示 Qt5: Unknown module(s) in QT: serialport 经查询,需要安装对应的模块库,写入 sudo ap ...

  2. redis-creating server tcp listening socket 127.0.0.1:6379: bind No error

    安装redis,出现如下错误: 解决方法: 步骤1:命令行下输入:redis-cli.exe(注意不是redis-server.exe) 然后输入:shutdown exit 退出后输入.\redis ...

  3. (已解决)富文本编辑器:使用layui的layedit怎么回显存放在数据库里的富文本数据(包含有图片base64码)?

    1. 背景 我把富文本内容从后台导入到前端,回显在layui的layedit里面. 2. 步骤 直接在<textarea></textarea>中间进行赋值(我用的是模板赋值) ...

  4. REPLACE,TRANSLATE

    REPLACE 1.语法 replace(string,from_str,to_str) 2.说明: 针对string,将from_str中的字符替换为to_str中字符. 3.示例: /**说明:( ...

  5. Docker CLI docker buildx bake 常用命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.Docker是内核 ...

  6. 超强大的PS汉化插件Specs 一键尺寸标注

    尺寸标注是大多数设计师必不可少的细节工作,特别是在一些特定的设计图中,标注至关重要.大部分设计大大都直接用CAD标注,其实借助插件,PS也是完全可以搞定常见的尺寸标注的. 插件介绍 这是一款超级强大的 ...

  7. ptyhon基础课程_3

    14 综上练习题 评分规则: A:>=90 B:>=80 C:>=70 D:其他 用户输入成绩,根据成绩显示不同的级别 score = input ("请输入您的成绩:&q ...

  8. DPU02是一个高度集成的USB转UART的桥接控制器

    DPU02是一个高度集成的USB转UART的桥接控制器,该产品提供了一个简单的解决方案,可将RS-232设计更新为USB设计,并简化PCB组件空间.该DPU02包括了一个USB 2.0全速功能控制器. ...

  9. nginx(一) の 入门解析

    OSI 模型的前三层 应用层: 每一个应用程序自定义的协议 表示层: 数据的压缩与解压缩.图片的编码与解码 会话层: 会话管理(session) 和 网络验证 .包括断点续传和服务器验证用户登录等.比 ...

  10. Java基础__02.数据类型

    Java中的数据类型 Java是一种强类型的语言,所有的变量都必须要先定义才能使用. Java中的数据类型分为 基本数据类型和引用数据类型. 1.基本数据类型:(8种) 数值类型 整数类型 byte: ...