ORACLE性能优化之二ppt课件.ppt

ORACLE性能优化之二ppt课件.ppt

ID:59416092

大小:145.50 KB

页数:41页

时间:2020-09-19

ORACLE性能优化之二ppt课件.ppt_第1页
ORACLE性能优化之二ppt课件.ppt_第2页
ORACLE性能优化之二ppt课件.ppt_第3页
ORACLE性能优化之二ppt课件.ppt_第4页
ORACLE性能优化之二ppt课件.ppt_第5页
资源描述:

《ORACLE性能优化之二ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ORACLE性能优之SQL优化主讲:YOUNGER7/29/20211数据规模库分类(一)数据库描述数据规模示例库(Sample)小于1M测试库(ExperimentorTest)100M到2G微型库(Tiny)小于1G超小型库(VerySmall)1G到5G小型库(Small)5G到10G中底等库(Moderate)10G到50G7/29/20212数据库规模分类(二)数据库描述数据规模中等库(Medium)50G到100G大型库(Large)100G到200G超大库Verylarge(VLDB)200G到300G极大库(E

2、xtremely)300G到500G巨大库(Massive)500G以上7/29/20213性能指标时间存储内存使用与硬盘空间7/29/20214性能调优的二个方向CPUCPU使用率达到60%到75%I/OI/O操作达到80%左右7/29/20215性能优化三板斧一.优秀的设计(算法)与SQL语句二.存储与索引三.数据库配置与系统参数7/29/20216算法编程=算法+数据结构7/29/20217SQL最基本的数据操作语句SELECTUPDATEINSERTDELETE7/29/20218SELECT语句SELECT语句可以从

3、一个或多个表中选取特定的行和列并以虚拟表的形式返回结果集,通常还会用到表连接,ORDERBY排序与GROUPBY分组等操作.因为查询,检索与统计数据是数据库中最重要的功能,所以SELECT语句在SQL中是工作量最大的部分。性能要点:索引起正作用7/29/20219UPDATE语句UPDATE语句允许用户对已知的表中对符合条件的现有行相关列值进行修改。UPDATE首先要定位需要修改的记录,所以它的元操作就包括了SELECT的操作.性能要点:索引正作用,新值使用子查询需要特别注意7/29/202110INSERT语句用户可以用IN

4、SERT语句将新记录插入到指定的一个表中。执行INSERT语句时,系统将试着将这些值填入到相应的列中,这时如果有主键或其它约束条件则会进行合法性判断.如有索引则需要重排索引.性能要点:索引起负作用7/29/202111DELETE语句DELETE语句用来删除已知表中的行。如同UPDATE语句中一样,所有满足WHERE子句中条件的行都将被删除。7/29/202112高效的SQL语句写法(以下部分内容摘录于罗宇辉)7/29/202113高效的SQL语句(1)选择最有效率的表名顺序(只在基于规则的优化器中

5、有效)ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表drivingtable)将被最先处理。在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表如果tab2中记录数明显高于tab1,用SELECTCOUNT(*)FROMtab2,tab1效率明显优于SELECTCOUNT(*)FROMtab1,tab27/29/202114高效的SQL语句(2)如果有3个以上的表连接查询,那就需要选择交叉表(intersectiontable)作为基础表,交叉表是指那

6、个被其他表所引用的表SELECT*FROMlocationl,categoryc,empeWHEREe.emp_noBETWEEN1000AND2000ANDe.cat_no=c.cat_noANDe.locn=l.locn效率高于SELECT*FROMempe,locationl,categorycWHEREe.emp_noBETWEEN1000AND2000ANDe.cat_no=c.cat_noANDE.locn=l.locn7/29/202115高效的SQL语句(3)WHERE子句中的连接顺序ORACLE采用自下而上的

7、顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾SELECT…FROMempe WHERE sal>50000AND job=‘MANAGER’ AND 25<(SELECTCOUNT(*)FROMemp WHEREmgr=e.empno)效率低于SELECT…FROMempe WHERE25<(SELECTCOUNT(*)FROMemp WHEREmgr=e.empno)AND sal>50000AND job=‘MANAGER’;

8、7/29/202116高效的SQL语句(4)SELECT子句中避免使用‘*’当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用‘*’是一个方便的方法。不幸的是,这是一个非常低效的方法。实际上,Oracle在解析的过程中,会将‘*’依次转换成所有的列名,这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。