背景
1、产品的问题点
- PG 统计信息无法迁移
2、问题点背后涉及的技术原理
- PG 的优化器需要依靠统计信息来计算SQL的代价、选择性等.
- 统计信息包括记录数、SIZE、每一列的高频词、柱状图、唯一值个数、等等.
- PG 支持表达式统计信息、自定义多列统计信息等.
- PG 支持手工的analyze, vacuum analyze语法来生成统计信息.
- 但是PG的统计信息无法导出、导入, 如果发生备份恢复动作, 需要重新收集统计信息.
3、这个问题将影响哪些行业以及业务场景
- 通用
- 通常发生在大版本升级、大量数据逻辑迁移或恢复的场景中.
4、会导致什么问题?
- 大版本升级后, 无统计信息, 如果数据库立即开放给业务使用, 可能导致执行计划不准确, 引起性能问题甚至影响业务
- 大量数据通过逻辑导出导入时, 导入结束后需要收集统计信息, 如果未及时收集统计信息就开放给业务使用的话, 可能导致SQL执行计划不准确, 引起性能问题甚至影响业务
5、业务上应该如何避免这个坑
- 大版本升级、大量数据通过逻辑导出导入后, 收集统计信息后再开放给业务使用.
6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
- 收集统计信息需要扫描数据, 相比直接导出导入更耗时.
7、数据库未来产品迭代如何修复这个坑
- 希望内核层面支持统计信息导出、导入.