暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss 高性能——CBO优化器

MTL 2022-11-19
693

openGauss优化器是基于代价的优化(Cost-Based Optimization,简称CBO)。

客户价值

openGauss CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。

特性描述

在CBO优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、DISTINCT值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小、首元组返回代价最小的执行方式进行执行。


优化器是数据库内置的,作用是在SQL的解析阶段生成最优的执行计划,分为RBO和 CBO两种: 

 RBO是基于规则的优化器 

◼ 根据表结构和SQL文本生成执行计划,不受表的数据的影响。 

 CBO是基于成本的优化器 

◼ 根据统计信息生成执行计划。


RBO 优化器 

⚫ 基于规则的优化器 

 优化器根据可用的访问路径和这些访问路径的等级选择执行计划,就是在优化器里面嵌入若干 种规则,执行的sql语句符合哪种规则,则按照哪种规则制订出相应的执行计划。 

⚫ 规则主要分为以下几类: 

 索引选择 

 排序消除、MIN/MAX优化 

 连接顺序选择 

 子查询重写 

 条件重写


CBO 优化器 

 ⚫ CBO优化器分为三个重要组成部分: 

 查询转换 

◼ 对于某些语句,查询转换器将原始SQL重写为具有较低成本的等价SQL语句,并判断是否有效。 

 代价评估 

◼ 用于确定给定执行计划的总体成本。 

 执行计划生成 

◼ 通过尝试不同的访问路径,连接方法和连接顺序来探索SQL的各种可选执行计划。


⚫ CBO优化器评估执行代价依赖于统计信息,数据库根据表的元组数、字段宽度、NULL记 录比率、distinct值、MCV值等表的特征值,以及一定的代价计算模型,计算出每一个执 行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小/ 首元组返回代价最小的执行方式进行执行。 

⚫ 使用CBO时,必须保证为表和相关的索引搜集足够的统计数据。对数据经常有增、删、 改的表最好定期对表和索引进行分析。 

⚫ 数据库掌握了充分反映实际的统计数据,才有可能做出正确的选择。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论