1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Pgsql表膨胀的产生及处理

PostgreSQL中表膨胀的产生

我是本际云服务器推荐网的小编小本本。PostgreSQL中没有UNDO这一概念,它通过在表中数据行的多个版本来实现多版本并发。当修改数据时,不是直接修改原有数据,而是插入一条全新的数据并标识老数据。这样会产生死元组,如果不清理这些对任何事务不可见的死元组,将永远占用磁盘空间,对表的查询越来越慢。这种现象在PostgreSQL中称之为膨胀(bloat)。

Pgsql表膨胀的产生及处理

处理表膨胀

表膨胀的清理可以使用插件pgstattuple,其中包括pgstatetuple()和pgstatindex()两个统计表和索引的方法。为了清理表膨胀,并回收磁盘空间,可执行vacuumfull命令。但要注意,该命令会阻塞所有操作(包括select),实际上创建了一个表副本,使所需磁盘空间加倍,会对性能带来影响。另外,可以使用插件pg_squeeze,通过REDO和logicalreplication实现增量重组,对表进行自动或手动收缩,回收磁盘空间。建议不要在繁忙的数据库上开启自动收缩功能,以避免影响性能。

以上就是PostgreSQL中关于表膨胀产生和处理的相关内容。如果您想了解更多有关云服务器的内容,欢迎关注本际云服务器推荐网。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6098.html