前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构想下一代优化器MBO:MachineLearning Based Optimizer

构想下一代优化器MBO:MachineLearning Based Optimizer

作者头像
大数据和云计算技术
发布2018-03-08 12:09:32
8810
发布2018-03-08 12:09:32
举报

熟悉ORACLE数据库的人,对RBO/CBO肯定很熟。

Rule Based Optimizer(RBO)基于规则 Cost Based Optimizer(CBO)基于成本,或者讲统计信息

ORACLE 提供了CBO、RBO两种SQL优化器。CBO在ORACLE7 引入,但在ORACLE8i 中才成熟。ORACLE 已经明确声明在ORACLE9i之后的版本中(ORACLE 10G ),RBO将不再支持。因此选择CBO 是必然的趋势。

RBO自ORACLE 6版以来被采用,有着一套严格的使用规则,只要你按照它去写SQL语句,无论数据表中的内容怎样,也不会影响到你的“执行计划”,也就是说对数据不“敏感”;CBO计算各种可能“执行计划”的“代价”,即cost,从中选用cost最低的方案,作为实际运行方案。各“执行计划”的cost的计算根据,依赖于数据表中数据的统计分布,ORACLE数据库本身对该统计分布并不清楚,必须要分析表和相关的索引(使用ANALYZE 命令),才能搜集到CBO所需的数据。

RBO是一种呆板、过时的优化器,它只认规则,对数据不敏感。毕竟规则是死的,数据是变化的,这样生成的执行计划往往是不可靠的,不是最优的,CBO 相比RBO进步很大。

CBO/RBO都是在交易数据中演变成来的,CBO只能统计静态的数据,比如在分析领域的ETL计算,还有很多外部条件,比如数据量和资源的关系,任务之间的相互影响,高SLA任务保障等等,这些通过机器学习算法就可以解决静态统计不能解决的一些问题,因此我在想未来的优化器应该是MBO:MachineLearning Based Optimizer。

大家觉得呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据和云计算技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档