PG的analyze与vacuum

太阳3年前技术文章3497

analyze-统计信息

用于收集表的统计信息,只会对表加读锁,不影响表上其它SQL并发执行,对于大表只会读取表中部分数据

vacuum-碎片回收

标记旧版本行的信息为可用,以重复使用这部分空间 更新统计数据,保证执行计划的准确

在PG中,被删除或被更新废弃的数据不会在物理上从表中删除,除非被vacuum

vacuum分为两种:

a.简单的vacuum

简单的VACUUM(不带FULL)简单地收回空间并使其可以被重用,可以与select、DML并行执行,但vacuum期间不能用DDL修改表定义

这种形式中额外的空间并没有被还给操作系统(在大多数情况下),它仅仅被保留在同一个表中以备重用 b.vacuum full

需要获取排斥锁,不能与该表上的其它语句并行执行,需要额外的磁盘空间,因为它会创建该表的一个新拷贝,并且在操作完成之前都不会释放旧的拷贝

应尽量避免用vacuum full,vacuum full运行时间更长、可以回收更多的磁盘空间

VACUUM FULL将表的整个内容重写到一个新的磁盘文件中,并且不包含额外的空间,这使得没有被使用的空间被还给操作系统。

这种形式的命令更慢并且在其被处理时要求在每个表上保持一个排他锁

其它:

VACUUM会导致I/O流量的大幅度增加;

vacuum analyze: 这是两种命令的一种方便的组合形式,表示用简单的VACUUM标记旧版本行信息可复用,并更新统计数据;

在主库进行vacuum analyze,会传输至流复制的从和逻辑复制的从,执行后主从表的大小都会被收缩;

不过在从上不会记录vacuum执行的时间,想查询vacuum记录只能在主库查询。

        为确保PG库表统计信息的准确性,可在夜间为PG中库表配轮循的定时vacuum analyze任务,为减少对数据库的性能影响,每张表vacuum analyze后可sleep 10/30s,另控制每次vacuum analyze表的数量。

   


标签: PostgreSQL

相关文章

REPMGR-PG高可用搭建(一)

REPMGR-PG高可用搭建(一)

PG高可用对比数据库复制的术语和定义这些术语和定义应该有助于讨论复制。在与其他Postgres开发人员进行了大量讨论之后,我编译了它们,但是这些定义应该是普遍可用的,并且也应该适用于其他RDBMS。复...

PG的锁(一)

一、表级锁1.1 表级锁模式常见锁模式以及应用场景:ACCESS SHARE :select操作获取该模式锁资源,通常情况下所有只读取不修改表的查询都会获取该模式锁资源ROW SHARE : sele...

PG初识

PG数据库是一种典型的C/S模型应用,不同的客户端通过TCP/IP进行连接、每个连接启动一个fork进程(多进程数据库)。一、pg逻辑架构1.1 pg与MySQL异同对比逻辑架构postgresMyS...

PG的统计信息(二)

1.2.4 pg_statio_user_tables 指标含义通过对pg_statio_user_tables的查询,如果heap_blks_read,idx_blks_read很高说明shared...

PG的pathman分区表工具

一、概述在PG<=10的版本中,都是通过表继承的方式进行分区的,必须使用CHECK CONSTRAINT将每个分区创建为子表 。PostgreSQL 10提供了本机分区,它与经典方法没有什么不同...

REPMGR-PG高可用搭建(二)

REPMGR-PG高可用搭建(二)

REPMGR搭建步骤一、介绍repmgr是第二象限开源的一套流复制集群管理工具,用于管理PostgreSQL服务器群集中的复制和故障转移。 支持故障自动转移和手动切换;支持分布式管理集群节点,易扩展,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。