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

简介: 大家好,这里是DB吐槽大会,第73期 - PG 统计信息无法迁移

背景


1、产品的问题点

  • PG 统计信息无法迁移

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

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

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

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

4、会导致什么问题?

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

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

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

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

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

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

  • 希望内核层面支持统计信息导出、导入.
相关文章
|
SQL Oracle 关系型数据库
【DB吐槽大会】第48期 - PG 性能问题发现和分析能力较弱
大家好,这里是DB吐槽大会,第48期 - PG 性能问题发现和分析能力较弱
|
SQL 关系型数据库 数据库
【DB吐槽大会】第75期 - PG 不支持索引失效功能
大家好,这里是DB吐槽大会,第75期 - PG 不支持索引失效功能
|
SQL 存储 关系型数据库
【DB吐槽大会】第74期 - PG 不支持SQL维度资源限流
大家好,这里是DB吐槽大会,第74期 - PG 不支持SQL维度资源限流
|
存储 JSON 搜索推荐
【DB吐槽大会】第35期 - “富人”的烦恼?PG 不会自动选择索引类型
大家好,这里是DB吐槽大会,第35期 - “富人”的烦恼?PG 不会自动选择索引类型
|
SQL 存储 关系型数据库
【DB吐槽大会】第61期 - PG 审计功能有巨大增强空间
大家好,这里是DB吐槽大会,第61期 - PG 审计功能有巨大增强空间
|
存储 安全 关系型数据库
【DB吐槽大会】第52期 - PG 函数内容不支持加密
大家好,这里是DB吐槽大会,第52期 - PG 函数内容不支持加密
|
关系型数据库 Java 数据库
【DB吐槽大会】第18期 - PG 索引无版本信息
大家好,这里是DB吐槽大会,第18期 - PG 索引无版本信息
|
SQL 监控 关系型数据库
【DB吐槽大会】第40期 - PG 缺少qps计数器
大家好,这里是DB吐槽大会,第40期 - PG 缺少qps计数器
|
SQL Oracle 关系型数据库
【DB吐槽大会】第39期 - PG 物化视图不支持基于log的增量刷新
大家好,这里是DB吐槽大会,第39期 - PG 物化视图不支持基于log的增量刷新
|
关系型数据库 数据库 索引
【DB吐槽大会】第32期 - PG 没有全局索引
大家好,这里是DB吐槽大会,第32期 - PG 没有全局索引

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    24
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    20
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19