PostgreSql数据表清理
PostgreSql数据表清理
前言:当PostgreSQL数据库中的表进行更新或删除操作时,死亡行( 被称为元组 )会被遗留下来。使用VACUUM会把它们除去,使空间能被重新利用。如果一个表没有被清空,它会变得臃肿,浪费磁盘空间而且会降低顺序表扫描的速度,而且在较小范围内也会降低索引扫描的速度。
数据表收缩用法:
VACUUM [({ FULL|FREEZE|VERBOSE|ANALYZE } [, ...])] [table_name [(column_name [, ...])] ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table_name ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table_name [ (column_name [, ...] ) ] ]
栗子:
VACUUM FULL VERBOSE table_name;
VACUUM FULL VERBOSE ANALYZE table_name;
参数解释:
FULL
选择"完全"清理,这样可以恢复更多的空间,但是花的时间更多并且在表上施加了排它锁。 该方法也需要额外的磁盘空间,因为它写了一个表的新拷贝并且不释放旧的拷贝,直到操作完成。 通常这应该只用于当一个大量的空间需要在这个表中回收时。
FREEZE
选择激进的行"冻结"。指定FREEZE
相当于执行 VACUUM
时将vacuum_freeze_min_age参数设为零。
VERBOSE
为每个表打印一份详细的清理工作报告。
ANALYZE
更新用于优化器的统计信息,以决定执行查询的最有效方法。
table_name
要清理的表的名称(可以有模式修饰)。缺省时是当前数据库中的所有表。
column_name
要分析的具体的字段名称。缺省是所有字段。若指定一个字段列表,就暗含ANALYZE
。
VACUUM和VACUUM FULL的区别
区别 | VACUUM | VACUUM FULL |
---|---|---|
被删除的数据所占用的物理空间是否被重新规划给操作系统。 | 否 | 是 |
执行效率 | 只是状态置为操作,效率较高。 | 该命令会为指定的表或索引重新生成一个数据文件,并将原有文件中可用的数据导入到新文件中,之后再删除原来的数据文件。因此在导入过程中,要求当前磁盘有更多的空间可用于此操作。因此该命令的执行效率相对较低。 |
删除大量数据之后 | 如果删除的记录位于表的末端,其所占用的空间将会被物理释放并归还操作系统。如果不是末端数据,该命令会将指定表或索引中被删除数据所占用空间重新置为可用状态,那么在今后有新数据插入时,将优先使用该空间,直到所有被重用的空间用完时,再考虑使用新增的磁盘页面。 | 不论被删除的数据是否处于数据表的末端,这些数据所占用的空间都将被物理的释放并归还于操作系统。之后再有新数据插入时,将分配新的磁盘页面以供使用。 |
在执行VACUUM命令时,是否可以并发执行针对该表的其他操作。 | 该操作是共享锁,因此可以与其他操作并行进行。 | 该操作需要在指定的表上应用排它锁,因此在执行该操作期间,任何基于该表的操作都将被挂起,知道该操作完成。 |
推荐使用方式 | 为了保证数据表的磁盘页面数量能够保持在一个相对稳定值,可以定期执行该操作,如每天或每周中数据操作相对较少的时段。 | 考虑到该操作的开销,以及对其他错误的排斥,推荐的方式是,定期监控数据量变化较大的表,只有确认其磁盘页面占有量接近临界值时,才考虑执行一次该操作。即便如此,也需要注意尽量选择数据操作较少的时段来完成该操作。 |
执行后,其它操作的效率 | 相比于不执行任何VACUUM操作,其效率更高,但是插入的效率会有所降低。 | 在执行完该操作后,所有基于该表的操作效率都会得到极大的提升。 |
PostgreSql数据表清理相关推荐
- postgresql 数据表【转】
原文:http://www.cnblogs.com/stephen-liu74/archive/2011/12/16/2290803.html 一.表的定义: 对于任何一种关系型数据库而言,表都是数据 ...
- postgresql数据表增删改:使用pgadmin和SQL的方式实现
- 一键导出PostgreSQL数据库表设计为word文档
背景 项目开始时,数据库表设计是从概要设计到详细设计,再到数据库中的表结构,有一套完整的文档: 然而,随着项目的演进,需求的变更,导致数据库表结构发生了比较大的变化(加表,加字段,改类型等),对于大多 ...
- PostgreSQL学习手册(数据表)
一.表的定义: 对于任何一种关系型数据库而言,表都是数据存储的最核心.最基础的对象单元.现在就让我们从这里起步吧. 1. 创建表: CREATE TABLE products ( ...
- PostgreSQL数据库导入EXCEL数据表
气象监测数据下载(可下载最新及每日气象数据) NOAA气象日监测数据均值计算python代码整理 PostgreSQL数据库导入EXCEL数据表 PG数据库版本为10.14.1. 首先,需要在PG数据 ...
- PostgreSQL:四. 数据表的基本操作
四. 数据表的基本操作 4.1 创建数据表 下面的案例是如何添加主键约束,外键约束,唯一约束,非空约束,默认约束等: 1.使用主键约束:有单字段主键,多字段联合主键: [例1]定义数据表tb_emp1 ...
- 【PostgreSQL】数据表的增删改查
关于数据库的增删改查可以参考之前的博客 [PostgresSQL]登录数据库(远程).管理数据库(增删改查) 下面是数据表的增删改查 1.增加数据表 # 创建ada_address_pool表 CRE ...
- PostgreSQL 数据恢复工具
PostgreSQL 本身不具备数据闪回和数据误删除保护功能,但在不同场景下也有对应的解决方案.本文由作者在 2021 PCC 大会的演讲主题<PostgreSQL 数据找回>整理而来,介 ...
- postgresql 系统表
表 pg_class 该系统表记录了数据表.索引(仍然需要参阅pg_index).序列.视图.复合类型和一些特殊关系类型的元数据. 名字 类型 引用 描述 relname name 数据类型名 ...
最新文章
- Regular Expression Matching
- Linux 内核抓包功能实现基础(五) 常见问题解析
- php module类,总结php artisan module常用命令
- 简历中该怎么写自己了解html,我用HTML写简历
- iOS面试必看,最全梳理
- C语言中strdup函数使用方法
- Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架
- JAXB –新手的观点,第1部分
- 小米岭南通服务器维护,小米岭南通交通联合卡内测开启
- 生成随机测试数据的文件的程序
- 避免Castle Windsor引起的内存泄露
- VC(MFC)以ADO连接数据库(基于控件ListControl)
- 一个项目中能提出哪些数据库优化_阿里资深技术专家曲山:优秀的数据库存储引擎应具备哪些能力?...
- Hudson poll scm 时间格式说明
- php mysql 分页查询_PHP+MySQL分页查询实现
- omnet++tictoc2案例解析
- 3D建模场景怎么做?
- Keil编译*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
- 在vue中使用iconfont多色图标
- 【Error2013:2013 lost connection to MYSQL server在处理大量数据运行中报错解决方法】