gpt4 book ai didi

PostgreSQL 索引膨胀率大于表膨胀率和 autovacuum_vacuum_scale_factor

转载 作者:行者123 更新时间:2023-12-05 05:39:45 24 4
gpt4 key购买 nike

索引膨胀达到 57%,而表膨胀仅为 9%,autovacuum_vacuum_Scale_factor 仅为 10%。

更令人惊讶的是,即使是主键也有 57% 的膨胀。我的理解是因为我的主键是自动递增的并且只有单列键,所以在 10% 的表死元组之后,主键索引也应该有 10% 的死元组。

现在,当 autovacuum 运行到死元组的 10% 时,它将清除死元组。死元组空间现在变得膨胀,这应该被新的更新、插入重用。但这并没有发生在我的数据库中,这里的膨胀大小不断增加。

仅供引用:

索引膨胀:

    current_database | schemaname |       tblname        |                         idxname                          | real_size  | extra_size |   extra_ratio    | fillfactor | bloat_size |    bloat_ratio    
| is_na
------------------+------------+----------------------+----------------------------------------------------------+------------+------------+------------------+------------+------------+-------------------
+-------
stackdb | public | data_entity | data_entity_pkey | 2766848000 | 1704222720 | 61.5943745373797 | 90 | 1585192960 | 57.2923760177646

表格膨胀:

current_database | schemaname |            tblname             |  real_size  | extra_size |   extra_ratio    | fillfactor | bloat_size |   bloat_ratio    | is_na 
stackdb | public | data_entity | 10106732544 | 1007288320 | 9.96650812332014 | 100 | 1007288320 | 9.96650812332014 | f

Autovacuum 设置:

stackdb=> show autovacuum_vacuum_scale_factor;
autovacuum_vacuum_scale_factor
--------------------------------
0.1
(1 row)
stackdb=> show autovacuum_vacuum_threshold;
autovacuum_vacuum_threshold
-----------------------------
50
(1 row)

注意:

自动吸尘器开启

autovacuum 在定义的时间间隔内成功运行。

postgreSQL 正在运行 10.6 版。在 12.x 版本中发现了同样的问题

最佳答案

首先:57% 的指数膨胀是完全健康的。别担心。

索引变得比表更臃肿,因为空白空间不能像在表中那样自由地重用。该表,也称为“堆”,没有预先确定的顺序:如果新行作为 INSERTUPDATE 的结果写入,它最终会排在第一个有足够可用空间的页面,因此如果 VACUUM 发挥作用,就很容易保持低膨胀。

B-tree 索引不同:它们的条目有一定的顺序,所以数据库不能自由选择把新行放在哪里。因此,您可能不得不将其放入一个已经满的页面,从而导致页面拆分,而索引中的其他地方则存在几乎为空的页面。

关于PostgreSQL 索引膨胀率大于表膨胀率和 autovacuum_vacuum_scale_factor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72596661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com