崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析

2013数据库大会:崔华-基于Oracle的SQL优化案例分析

6ee5639a40442445944d63b514b2dd02.png

崔华的新书即将出版,其数据库大会上的演讲也非常精彩,他的新书十分值得期待。

2013年中国数据库技术大会第二天的"Oracle架构与优化"专场中,来自中航信资深Oracle数据库工程师崔华为大家分享了《基于 Oracle的SQL优化典型案例分》主题演讲。从演讲的内容来看,这是一次非常实用的技术分享。据资料显示,崔华从2004年开始从事DBA工作,拥有 Oracle 数据库技术各个领域的经验。除了工作外,崔化在博客上撰写大量的文章并在Oracle活动中进行演讲,此外还与他们合作撰写三本专业图书,《Oracle DBA手记 2》、《Oracle DBA手记3》和《海量数据库解决方案I》。

f1ce9fc1d508bd5ea03f69e3a86c75d2.png

▲中航信资深Oracle数据库工程师崔华

Oracle优化从理论说起:SQL优化方法论

提到Oracle的优化,太过理论性质的内容无需赘述,崔华先生简单为与会者分享了3个方面,分别是:

·Oracle里的SQL优化实际上是基于对CBO和执行计划的深刻理解

·Oracle里的SQL优化不能脱离实际的业务

·Oracle里SQL优化需要适时使用绑定变量

提起CBO不得不多说两句,ORACLE 早先提供了CBO、RBO两种SQL优化器。CBO在ORACLE7 引入并不断深入,而同时9i以后版本中基本上都是基于CBO的优化。

崔华认为SQL优化最有技术含量的部分不在于你通过种种手段(比如重新收集统计信息等)调整了目标SQL的执行计划、缩短了其执行时间、解决了该SQL的性能问题,而是在于你要知道CBO为什么在一开始会选错执行计划,你要知道CBO选错执行计划的根本原因。

深入分析很多案例后发现很多问题的原因都有一定共性,在本次演讲的案例显示导致CBO评估出对一个实际数据量为730多万且统计信息准确的大表 S_EVT_ACT执行全表扫描操作后的成本值仅为2,其原因是参数OPTIMIZER_MODE的值在session级别被修改成了 FIRST_ROWS_10,这同时也是导致上述坐席登陆慢的问题多次不间断出现的根本原因。 而对于这种问题的改进方法崔华建议:

• 修改各个session中对于参数OPTIMIZER_MODE的设置,将其值修改为默认值ALL_ROWS

• 如果不能在session级修改参数OPTIMIZER_MODE的值,我们还可以使用SQL Profile。在上述18个表关联SQL中加入Hint(即/*+ index(T18 S_EVT_ACT_P1) */),并用加入Hint后改写SQL的执行计划替换原SQL的执行计划

引实例讲方法

在下面的SQL 语句中包含了IN,而IN之后的括号内是一个包含视图的子查询(即select grppolno from v_bc_lcpol where polno = '9022000000000388'),它不是一个常量的集合,所以Oracle这里不能对该SQL做"IN-List Iterator"和"IN-List Expansion /OR Expansion";

d1f693a6e39c16ffc432d4bb38e69539.png

上述SQL中的视图V_BC_LCGRPPOL和V_BC_LCPOL均包含了集合运算符UNION ALL,所以Oracle这里也不能对该SQL做视图合并;于是Oracle现在就只剩下了两条路可走:要么对该SQL走FILTER类型的执行计划(即 "IN-List Filter"),要么对该SQL做子查询展开。

而把sql语句改写以后,效果则会发生巨大的变化:

0772c6815756867bd191986b1110b9ad.png

从这个例子的解决过程我们可以看出,虽然最后的解决方法很简单,但这其实完全倚赖于我们对Oracle如何处理SQL语句中的IN、子查询展开、视图合并和连接谓词推入的深刻理解.

By eygle on 2013-04-25 08:27 |

Comments (0) |

Activity | 3096 |

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板消息 php实例,PHP微信模板消息操作示例

本文实例讲述了PHP微信模板消息操作方法。分享给大家供大家参考,具体如下:微信SDK:class Oauth {//获得全局access_tokenpublic function get_token(){//如果已经存在直接返回access_token//if($_SESSION[access_token] && $_SESSION…

非阻塞 php,PHP异步非阻塞之路

需求一个简单的需求,提交大量数据到远程服务器,此时并不需要等待返回。另一个需求,获取API数据,同时查询数据库,并行处理,加快响应速度。配置问题set_time_limitignore_user_abortfastcgi_finish_request只…

linux进程监控自动重启,Linux监控进程,进程关闭自动重启方案

Linux监控进程,进程关闭自动重启方案corntabshell脚本检测进程这个方案简单不用额外安装软件。缺点是存在间隔,corntab设置1秒执行一次shell脚本也是存在间隔的#!/bin/bash#author smallForest#email 1032817724qq.comproc_name"xiaofei.php" …

https脚本调linux执行器,linux平台下一键配置网站https

部署过SSL证书的人都知道,申请和部署一张SSL证书是相当繁琐而漫长的过程,枯燥无味的部署指南、非常容易出错的命令、复杂的编辑配置等等,在linux平台下,更加痛不欲生。LZ试用了SSL证书自动配置工具,支持linux平台下自动…

linux内核是否支持nfs,嵌入式命令:查看设备是否支持nfs

1:查看设备是否支持nfs功能命令: cat /proc/filesystems若有一行为 nodev nfs,则开发板Linux内核支持NFS,反之需要配置内核同样方法查看Linux主机内核是否支持NFS挂载文件系统的时候遇到:[rootHZCTC-hadoop-0-81 hadoo…

linux6同步时间,centos 6.x 同步网络时间

1. linux时间介绍Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RTC)。系统时间:指当前Linux Kernel中的时间。硬件时间:主板上有电池供电的时间。2. 手动设置时间查看系统时间的命令:date设置系统时间的…

linux6.5如何打开ftp服务,CentOs6.5上快速搭建ftp服务器

1、用root 进入系统2、使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本3、使用命令rpm -e vsftpd 即可卸载ftp4、再使用rpm -qa|grep vsftpd 查看系统是否已删除ftp,若删除成功…

linux cmake安装教程,ubuntu安装Cmake

安装 CMake1、下载最新的CMake( 版本:3.4.0)wget http://www.cmake.org/files/v3.4/cmake-3.4.0-rc2-Linux-i386.tar.gz2、解压tar zxvf cmake-3.4.0-rc2-Linux-i386.tar.gz3、创建链接ln -s /usr/cmake-3.4.0-rc2-Linux-i386/bin/* /usr/bin/4、执行命令&#xff0…

linux设置静态ip后端口不能上网,Centos7设置静态IP后无法上网的解决方法

在VMWare中安装的本地虚拟机CentOS7操作系统,动态IP地址会经常变化,设置成静态IP地址后,本地局域网可以互相访问,但CentOS7系统无法访问互联网,按以下步骤解决这个问题。1、以系统管理员打开VMWare2、选择虚拟网络编辑…

linux 下nc-verilog 仿真环境搭建,Cadence NC Verilog仿真教程

这个手册将向你介绍使用 NC-Verilog simulator 和 SimVision。 本文使用的是一个用 Veilog 硬件编程语言编写的一个饮料分配机,通过这个例 子你将学会: 编译 Verilog 源文件,描述设计,在 NC-Launch(用于管理你的大型设计 的图形交…

Linux分支代码必须公开吗,linux – 当拉出不同的分支时,让“git pull”请求确认...

现在,我将重点介绍如何在执行任何拉动之前提示用户进行确认.不幸的是,因为没有预拉hook这样的东西,我认为你不能得到实际的pull命令来直接为你做这个.在我看来,你有两个选择:1 – 使用fetch然后合并(而不是pull)而不是运行git pull,运行git fetch,然后git merge或gi…

linux宽松模式,SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换...

SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换在Android的root相关的文章里经常会看到关于SElinux,Android4.3以后引进SElinux。###SELinux 的启动、关闭与查看1、并非所有的 Linux distributions 都支持 SELinux目前 SELin…

linux vim emmet,前端开发神器Emmet.vim使用笔记

Emmet.vim的安装请看:http://www.cnblogs.com/yunie-akira/p/3554065.htmlEmmet.vim简介Emmet,原来叫Zen Coding,由Sergey Chikuyonok开发,是快速开发HTML和CSS的编辑器插件。支持 Sublime Text、Notepad、Eclipse等等。官方的Emmet并不支持v…

深度Linux修改分辨率6,Deepin 修改自定义分辨率

之前我有篇文章是写显示器超频问题,当时感觉Deepin超频麻烦,折腾换成了Win10,但用了断时间后,感觉Win10真的不好用,夜览模式软件适配差,CPU占用率高,字体颗粒感强,显示器看着眼睛很累…

linux标准i o实例,9.3. 一个 I/O 端口例子

## 9.3. 一个 I/O 端口例子我们用来展示一个设备驱动内的端口 I/O 的例子代码, 操作通用的数字 I/O 端口; 这样的端口在大部分计算机系统中找到.一个数字 I/O 端口, 在它的大部分的普通的化身中, 是一个字节宽的 I/O 位置, 或者内存映射的或者端口映射的. 当你写一个值到一个输…

linux下如何bash文件,Linux系统的文件管理命令及bash的相关工作特性

一、Linux系统的文件管理命令:1 \pwd:printing working directory2 \cd:change directory cd [/PATH/TO/SOMEDIR/]可带可不带,切换回家目录;注意:bash中~表示家目录;cd ~:切换回自己的家目录&#xff…

2019浙江C语言二级答案,2019年下半年二级C语言试题及答案

机遇总是有的,如果把握不住,不要怨天忧人,原因只是自己不够优秀;不要把时间当垃圾处理,唯有珍惜光阴、努力刷二级C语言试题,才能提升生命的质量。1)若有以下语句:typedef struct S{ int g;char …

c语言鸡兔同笼的程序,C语言:鸡兔同笼问题

鸡兔同笼。已知鸡兔总头数为h(设为30),总脚数为f(设为90),求鸡兔各几只。代码一:#includemain(){int h,f,x,y;printf("请输入总头数和总脚数:");scanf("%d%d",&h,&f);x2*h-f/2;yf/2-h;printf("总头数为%d,总…

c语言成绩管理系统开题报告,学生信息管理系统,开题报告(共篇).doc

学生信息管理系统,开题报告(共篇).doc学生信息管理系统,开题报告(共10篇):开题 信息管理系统 报告 学生 论文开题报告有查重吗 居民信息网络管理系统 学生信息管理系统c语言篇一:学生信息管理系统开题报告毕 业 设 计(论 文)开 题 报 告题目:…

计算机二级c语言填空题答案唯一吗,计算机二级C语言上机填空题及答案.doc

计算机二级C语言上机填空题及答案2、给定程序中,函数fun的功能是建立一个NN的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若…