【问题标题】:Index maintainence in postgreSQLpostgreSQL 中的索引维护
【发布时间】:2017-03-13 02:16:32
【问题描述】:

我们需要在 PostgreSQL 中包含索引大小。我们试图探索不同的选择

  1. 重新索引:这涉及到将影响应用程序查询的表写入锁。

  2. 并发创建/删除索引:这不会涉及具有以下顺序的锁 同时删除索引。 同时创建索引。这里的问题是,当应用查询运行时,此操作会很慢,并且在 drop-create 步骤之间查询不会使用会降低性能的索引。

我们需要在不影响应用查询的同时减少索引大小。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您可以同时创建与当前索引不同名称的相同索引,然后删除当前索引并重命名一个新索引。

    但我不认为将索引大小保持在最小值是一个好主意。索引中的一些空白空间通常最有利于插入和更新操作的索引性能。如果它爆炸不成比例,您可能需要更积极的自动吸尘调整。

    【讨论】:

    • 感谢您的回答。重命名的问题在于它涉及“更改索引”,它再次涉及锁定 (keithf4.com/cleaning-up-postgresql-bloat)。我们有一些大表,其中索引和数据大小非常重要,为了解决这些不断增长的大小,我们已经进行了积极的自动清理。但是,我们不清楚这是否有助于控制索引大小,如果是的话如何。
    • 是的 - 它需要对表进行排他锁,但它的持续时间比索引创建/重新索引锁要短得多,因此更容易计划。您甚至可以维护 2 个相同的索引并交替“重新索引”它们。这会对插入/更新性能产生负面影响,但如果您负担得起,您根本不需要专门锁定表。至于膨胀——你没有告诉我们在重新索引期间你获得了多少索引大小的百分比。如果是50%,那我就不会打扰了。如果它是 90%,那么它可能是值得的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多