【问题标题】:update single column taking lot of time and lot of disk space in postgresql在 postgresql 中更新单个列需要大量时间和大量磁盘空间
【发布时间】:2018-09-20 13:09:33
【问题描述】:

我在包含 1000 万条记录的单列上执行了更新查询。在 postgresql 中需要大量时间和大量磁盘空间。请找到以下查询。 "更新测试集record_status = 'I';" 我的列数据类型是“char(1)

请告诉我为什么要花费大量时间和大量磁盘空间。

谢谢, 重要

【问题讨论】:

    标签: postgresql postgresql-9.6


    【解决方案1】:

    在 PostgreSQL 中,UPDATE 会创建新版本的行(“元组”)(例如参见文档的 this 部分)。

    因此,通过更新表格中的每一行,您可以有效地将表格大小翻倍。旧的行版本被 autovacuum 删除,但表的大小保持不变(它变得“臃肿”)。

    未来INSERTs 可以重复使用空白空间,但如果您想摆脱它,请使用VACUUM (FULL)

    许多新元组也解释了持续时间长。增加max_wal_size 可能会通过减少语句引起的检查点数量来帮助一些人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2015-10-09
      • 2016-04-25
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多