这篇文章给大家分享的是有关SQL中CBO优化方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司长期为成百上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为道外企业提供专业的网站制作、网站设计,道外网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
一条查询语句的处理包括语法分析、语句优化和查询执行三个阶段。在语句优化阶段,Oracle默认使用基于成本的优化器(CBO,cost based optimizer)来选择最好的执行计划,这个最好的标准就是消耗的系统资源如CPU以及I/O资源最少。
基于CBO的优化器有三种优化方式来满足不同的查询需求,即all_rows、first_rows_n、first_rows。
all_rows:Oracle的默认方式,优化目标是实现查询的最大吞吐量。
first_rows_n:优化输出查询的前n行数据,满足快速响应的查询需求。
first_rows:first_rows方式的老版本,尽快输出查询的前几行数据。
Oracle提供在不同级别上的优化,即实例级、会话级和语句级。查询当前数据库的CBO优化方式
show parameter optimizer_mode;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode string ALL_ROWS
在实例级设置CBO优化方式
alter system set optimizer_mode = first_rows_10;
在会话级设置CBO优化方式
alter session set optimizer_mode = all_rows;
在语句级设置CBO优化方式,需要使用hint提示
select /*+first_rows_10*/ ename, sal, mgr from scott.emp;
优化器的工作过程包括根据统计数据进行SQL转换、根据资源消耗情况选择访问路径、根据统计数据选择连接方法以及确定连接次序几个步骤,最后选择一个最好的执行计划。
感谢各位的阅读!关于“SQL中CBO优化方式有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!