https://blog.csdn.net/ohyoyo2014/article/details/20522493
一、注重日常清理(VACUUM;)。因为有大量的更新(update)"删除(delete)操作,会有大量的空间需要释放。
每日执行一次VACUUM,每周访问量低的时候执行VACUUM FULL;
语法结构;
VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
FULL ------选择"完全"清理,这样可以恢复更多的空间, 但是花的时间更多并且在表上施加了排它锁。
FREEZE ---------选择激进的元组"冻结"。
VERBOSE --------- 为每个表打印一份详细的清理工作报告。
ANALYZE --------- 更新用于优化器的统计信息,以决定执行查询的最有效方法。
table ------- 要清理的表的名称(可以有模式修饰)。缺省时是当前数据库中的所有表。
column ---------要分析的具体的列/字段名称。缺省是所有列/字段。
VACUUM 回收已删除元组占据的存储空间。 在一般的 PostgreSQL 操作里, 那些已经 DELETE 的元组或者被 UPDATE 过后过时的元组是没有从它们所属的表中物理删除的; 在完成 VACUUM 之前它们仍然存在。 因此我们有必须周期地运行 VACUUM, 特别是在常更新的表上,如果没有参数,VACUUM 处理当前数据库里每个表, 如果有参数,VACUUM 只处理那个表,简单的 VACUUM (没有FULL) 只是简单地回收空间并且令其可以再次使用;
VACUUM命令的含义为:垃圾收集以及可选地分析一个数据库。VACUUM回收已删除元组占据的存储空间。在一般的 PostgreSQL 操作里, 那些已经 DELETE 的元组或者被 UPDATE 过后过时的元组是没有从它们所属的表中物理删除的; 在完成 VACUUM 之前它们仍然存在。 由于以下几个原因,我们必须周期性运行 PostgreSQL 的 VACUUM 命令∶ 1.恢复那些由已更新的或已删除的行占据的磁盘空间。
例子:
#psql -U pgsql dbname
dbname#VACUUM;
搞定!
二、重建索引(REINDEX)
语法
REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]
描述
REINDEX命令用来重建索引。旧的索引将被删除,重新读取索引的父表中的数据来重建索引。REINDEX命令不支持并发创建索引的功能。在下面的情况下,应该重建索引:
· 一个索引中的数据已被破坏,包含非法的数据。软件错误和硬件问题都会导致索引被损坏。
· 索引中包含许多空的或者几乎是空的数据页。应该重建索引,回收物理存储空间。
· 该变了索引的存储参数fillfactor的值,只有重建索引,新的参数值才能完全生效。
· 使用CREATE INDEX CONCURRENTLY命令创建索引时遇到错误,留下一个非法的索引。
例子
(1)重建索引my_index:REINDEX INDEX my_index;
(2)重建表my_table 上的所有索引:REINDEX TABLE my_table;
(3)重建数据库中的所有索引:REINDEX DATABASE broken_db;
#psql -U pgsql dbname
dbname#REINDEX DATABASE dbname;
通过这两个维护,可以及时释放废弃的资源,让数据库轻装运行,速度更快
相关推荐
在Linux环境中,对PostgreSQL数据库进行定时备份是确保数据安全的重要步骤。PostgreSQL是一个功能强大的开源关系型数据库系统,广泛应用于各种规模的企业和项目。定时备份可以帮助我们在系统故障、误操作或其他不可...
灵活的冻结脚本,用于管理非工作时间的PostgreSQL数据库清理和冻结。 /scripts/flexible_freeze.py 该脚本旨在用于在已知的慢流量期间在数据库上运行VACUUM FREEZE或VACUUM ANALYZE。 设置超时时间,以免超出您的...
**PostgreSQL数据库备份脚本详解** 在IT领域,数据库的安全性是至关重要的,定期备份是保障数据安全的重要手段。PostgreSQL作为一款强大的开源关系型数据库系统,提供了多种方式进行数据库的备份与恢复。本文将深入...
这个压缩包文件“MetaSploit终端下PostgreSQL数据库的使用.rar”显然是关于如何在MetaSploit环境中操作和利用PostgreSQL数据库的教程。PostgreSQL是一种功能强大的开源关系型数据库管理系统,因其安全性、稳定性和可...
PostgreSQL数据库性能调优指南 PostgreSQL数据库性能调优是一个复杂且多方面的问题,涉及到数据库架构设计、查询优化、数据库配置、物理资源配置等多个方面。以下是 PostgreSQL 数据库性能调优指南的详细知识点: ...
本文将深入探讨如何使用shell脚本来进行PostgreSQL数据库的健康检查,以及这个过程中涉及的相关技术知识点。 首先,`PostgreSQL`是一种开源、强大的对象关系型数据库系统,广泛应用于各种业务场景。它具有高度的可...
PostgreSQL数据库是一个强大的开源关系型数据库系统,其在事务处理方面具有高级特性和高效实现。事务是数据库系统中确保数据一致性、可靠性和并发控制的重要机制。本文将深入探讨PostgreSQL如何实现事务及其相关组件...
postgresql数据库函数逻辑思维导图(持续更新),目前包含exec_simple_query,heap_insert,MVCC相关函数,查询优化subquery_planner,存储管理,分区表,后台进程(检查点相关、清理进程、PostgresMain)
总而言之,对于任何在PostgreSQL数据库环境下工作的专业人士来说,上述提到的实用命令是非常基础且重要的,它们是维护和管理PostgreSQL数据库不可或缺的工具。同时,随着PostgreSQL的不断更新,学习新版本的命令和...
### PostgreSQL 8.3 数据库文档关键知识点解析 #### 一、PostgreSQL 8.3 异步复制机制 **1.1 复制模式** PostgreSQL 8.3 支持一种基于异步复制的架构,允许一个主节点向多个从节点进行数据复制。这种模式使得主...
Ruby-database_flusher是一个专为Ruby开发者设计的小型且高效的数据库清理工具,它借鉴了database_cleaner和database_rewinder的思想,旨在简化测试环境中的数据管理。在软件开发过程中,尤其是进行单元测试和集成...
本节将深入探讨如何使用“libpq”库来操作PostgreSQL数据库。 “libpq”是PostgreSQL官方提供的C语言接口,它允许程序员直接与数据库进行通信,执行SQL查询,以及处理查询结果。在了解如何使用libpq之前,我们首先...
9. vacuumdb:清理和分析一个PostgreSQL数据库,它是客户端程序psql环境下SQL语句VACUUM的shell脚本封装,二者功能完全相同 系统实用程序 1. initdb:创建一个用于存储数据库的PostgreSQL数据目录,并创建预定义的...
pytest-postgresql是一个专门为Python开发人员设计的pytest插件,它极大地简化了在测试环境中与PostgreSQL数据库进行交互的过程。在软件开发中,特别是在涉及到数据库操作时,确保代码的正确性和可靠性至关重要。...
SliceDB是用于捕获和还原PostgreSQL数据库子集的工具。 它还支持清理敏感数据。 关键字:数据库子集,清理,PostgreSQL 基本用法 首先,查询数据库以创建架构文件。 slicedb schema > schema.yml 第二,转储一片...
根据给定的文件信息,以下是关于PostgreSQL数据库管理的知识点。 首先,文档提到了PostgreSQL是一个先进的开源数据库。它不仅被新手用户易于理解,而且对于已经具有基础的用户来说,也同样适合深入学习。PostgreSQL...
PostgreSQL数据库性能优化是一个关键的任务,对于任何依赖于高效数据处理的应用程序来说都至关重要。下面将详细介绍提高PostgreSQL性能的一些策略: 1. **使用EXPLAIN命令**:EXPLAIN命令是调试查询性能的重要工具...
"EMS PostgreSQL Query Builder v1.7.0.6" 是一款专为PostgreSQL数据库设计的高效查询工具,它提供了一种直观且用户友好的界面,使得数据库查询过程变得轻松便捷。这款应用软件主要针对需要频繁进行数据库操作的技术...