【DB吐槽大会】第73期 - PG 统计信息无法迁移

背景


1、产品的问题点

  • PG 统计信息无法迁移

2、问题点背后涉及的技术原理

  • PG 的优化器需要依靠统计信息来计算SQL的代价、选择性等.
  • 统计信息包括记录数、SIZE、每一列的高频词、柱状图、唯一值个数、等等.
  • PG 支持表达式统计信息、自定义多列统计信息等.
  • PG 支持手工的analyze, vacuum analyze语法来生成统计信息.
  • 但是PG的统计信息无法导出、导入, 如果发生备份恢复动作, 需要重新收集统计信息.

3、这个问题将影响哪些行业以及业务场景

  • 通用
    • 通常发生在大版本升级、大量数据逻辑迁移或恢复的场景中.

4、会导致什么问题?

  • 大版本升级后, 无统计信息, 如果数据库立即开放给业务使用, 可能导致执行计划不准确, 引起性能问题甚至影响业务
  • 大量数据通过逻辑导出导入时, 导入结束后需要收集统计信息, 如果未及时收集统计信息就开放给业务使用的话, 可能导致SQL执行计划不准确, 引起性能问题甚至影响业务

5、业务上应该如何避免这个坑

  • 大版本升级、大量数据通过逻辑导出导入后, 收集统计信息后再开放给业务使用.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 收集统计信息需要扫描数据, 相比直接导出导入更耗时.

7、数据库未来产品迭代如何修复这个坑

  • 希望内核层面支持统计信息导出、导入.
上一篇:有关于级数的一些话


下一篇:16 归并排序(Merge Sort)