【DB吐槽大会】第12期 - 没有自动成本校准器

简介: 大家好,这里是DB吐槽大会,第12期 - 没有自动成本校准器

背景


1、产品的问题点

  • 不支持优化器成本计算系数自动调整

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

  • 数据库通过优化器来实现SQL执行计划的最佳选择, 通常最优的执行计划选择标准是代价最低. 而代价则是通过每一个执行node的成本叠加而来, 每一个执行node的成本计算又来自扫描方法(离散、顺序等)、JOIN方法、数据块的多少、返回记录的多少、操作符(函数)的计算次数等组成. 为了达到代价计算的准确性, 需要更丰富、及时的统计信息, 同时需要因子准确性(例如操作符的CPU计算耗费、离散IO、顺序IO等耗费的系数准确性). 如果系数不准确, 即使统计信息准确也无法得到最佳执行计划.

#seq_page_cost = 1.0                    # measured on an arbitrary scale  

random_page_cost = 1.1                  # same scale as above  

#cpu_tuple_cost = 0.01                  # same scale as above  

#cpu_index_tuple_cost = 0.005           # same scale as above  

#cpu_operator_cost = 0.0025             # same scale as above  

#parallel_setup_cost = 1000.0   # same scale as above  

#parallel_tuple_cost = 0.1              # same scale as above  

#min_parallel_table_scan_size = 8MB  

#min_parallel_index_scan_size = 512kB  

#effective_cache_size = 4GB  

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

  • 所有行业

4、会导致什么问题?

  • 系数取决于硬件环境, 不同的硬件环境应该配置不同的系数, 例如机械盘的离散IO性能比顺序IO性能差很多, 然而SSD的离散IO和顺序IO性能差不多.
  • 系数配置不正确导致执行计划不准确, 性能差劲. 例如应该使用index scan的可能会使用seq scan或bitmap index scan.

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

  • 校准成本代价系数

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

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

  • 希望有个硬件库对应的系数表, 或者可以根据环境自动化测试出对应的系数. 类似pg内置的pg_test_fsync, pg_test_timing工具.



相关文章
|
SQL Oracle 关系型数据库
【DB吐槽大会】第48期 - PG 性能问题发现和分析能力较弱
大家好,这里是DB吐槽大会,第48期 - PG 性能问题发现和分析能力较弱
|
存储 SQL Oracle
【DB吐槽大会】第66期 - PG 缺乏更简单的数据热插拔能力
大家好,这里是DB吐槽大会,第66期 - PG 缺乏更简单的数据热插拔能力
|
存储 JSON 搜索推荐
【DB吐槽大会】第35期 - “富人”的烦恼?PG 不会自动选择索引类型
大家好,这里是DB吐槽大会,第35期 - “富人”的烦恼?PG 不会自动选择索引类型
|
SQL 存储 关系型数据库
【DB吐槽大会】第61期 - PG 审计功能有巨大增强空间
大家好,这里是DB吐槽大会,第61期 - PG 审计功能有巨大增强空间
|
SQL 资源调度 并行计算
【DB吐槽大会】第54期 - PG 资源隔离、管理手段较少
大家好,这里是DB吐槽大会,第54期 - PG 资源隔离、管理手段较少
|
SQL 监控 关系型数据库
【DB吐槽大会】第40期 - PG 缺少qps计数器
大家好,这里是DB吐槽大会,第40期 - PG 缺少qps计数器
|
SQL 并行计算 中间件
【DB吐槽大会】第14期 - 只读实例是孤岛
大家哈,这里是DB吐槽大会,第14期 - 只读实例是孤岛
|
SQL 关系型数据库 数据库
【DB吐槽大会】第73期 - PG 统计信息无法迁移
大家好,这里是DB吐槽大会,第73期 - PG 统计信息无法迁移
|
存储 关系型数据库 数据库
【DB吐槽大会】第59期 - PG 缺少便捷的坏块修复能力
大家好,这里是DB吐槽大会,第59期 - PG 缺少便捷的坏块修复能力
|
关系型数据库 Java 分布式数据库
【DB吐槽大会】第9期 - PG 大量连接写小事务性能差
大家好,这里是DB吐槽大会,第9期 - PG 大量连接写小事务性能差