2017-03-12 47 views
0

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

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

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

我们需要在不影响应用程序查询的情况下实现索引大小的减小。

回答

0

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

但我认为保持索引尺寸至少是个好主意。索引中的某些空白空间通常对插入和更新操作的索引性能有益。如果它超出比例,你可能需要更积极的自动调整。

+0

感谢您的回答。重命名的问题是它涉及“变更索引”,这又涉及锁定(https://www.keithf4.com/cleaning-up-postgresql-bloat)。我们有一些大型的表格,其中索引和数据大小很重要,为了解决这些不断增长的规模,我们已经进行了积极的自动真空。然而,我们不清楚这是否有助于控制指数规模,如果是的话。 – user2350659

+0

是的 - 它需要在表格上独占锁定,但它比索引创建/重新索引锁定的持续时间短得多,因此计划更容易。你甚至可以保持2个相同的索引,并可以“​​交替重新索引”它们。这会对插入/更新性能产生负面影响,但是如果你负担得起,你根本不需要专门锁定表格。至于臃肿 - 你没有告诉我们你在索引期间获得了多少指数大小。如果它是50%,那么我不会打扰。如果它是90%,那么它可能是值得的。 – Tometzky