Oracle培训课件分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

二、Oracle体系结构五、OracleSQL编写规范四、典型案例分析暨优化要点三、OracleSQL优化基础一、培训目的培训总目录培训目的培训目标培训内容课堂交互•本次课程大约需要3个小时,课后,我们会留半个小时与大家进行探讨,希望在座各位在培训过程中记录下自己的问题;•Oracle体系结构;•OracleSQL优化及编写规范;•了解Oracle体系架构;•掌握OracleSQL优化基本方法;•OracleSQL优化典型案例分析;二、Oracle体系结构五、OracleSQL编写规范四、典型案例分析暨优化要点三、OracleSQL优化基础一、培训目的培训总目录Oracle服务器架构Oracle内存体系架构Oracle进程体系架构用户进程:在数据库用户或批处理进程连接到OracleDB时启动服务器进程:连接到Oracle实例,在用户建立会话时启动后台进程:在Oracle实例启动时启动Oracle存储体系架构Oracle高可用性_双机热备•优点管理简单相对较为稳定•缺点切换间存在停顿备机空闲无扩展性ComputerBComputerAOracle高可用性_双机热备切换Oracle高可用性_RAC•优点良好的可伸缩性、可扩展性高可用性新进的CacheFusion技术负载均衡•缺点管理复杂对网络要求高Oracle高可用性_RAC将应用和用户自动而透明地重新连接到另一个系统登录的上下文可被保持应用查询不会中断节点A节点B节点A节点B当集群内节点A失败,用户被转移OracleRAC负载均衡数据库启动时,向监听进程注册节点向监听进程报告CPU的使用情况当建立连接时,监听进程选择最空闲的节点处理请求二、Oracle体系结构五、OracleSQL编写规范四、典型案例分析暨优化要点三、OracleSQL优化基础一、培训目的培训总目录性能优化概述14•谁来调整系统应用设计人员、应用开发人员数据库管理人员•什么时候调整系统设计、系统开发过程系统运行过程应用系统类型15•联机事务处理(OLTP)高吞吐量增、删、改多•决策支持(DSS)数据量大主要用于查询SQL语句处理过程16查询语句处理DML语句处理(insert、delete、update)DDL语句处理(create、drop、alter)SQL语句处理各个阶段17SQL语句处理必经阶段18第1步:CreateaCursor创建游标第2步:ParsetheStatement分析语句第5步:BindAnyVariables绑定变量第7步:RuntheStatement运行语句第9步:ClosetheCursor关闭游标SQL语句处理可选阶段19•并行功能第6步:ParallelizetheStatement并行执行语句•查询语句第3步:DescribeResultsofaQuery描述查询的结果集第4步:DefineOutputofaQuery定义查询的输出数据第8步:FetchRowsofaQuery取查询出来的行DDL语句处理过程20不同于DML语句和查询语句的执行DDL成功后需要对数据字典表进行修改分析阶段还包括分析、查找数据字典信息和执行Oracle优化器21•优化:选择最有效的执行计划来执行SQL语句的过程•优化器:选择执行计划的数据库引擎基于规则(RBO)基于代价(CBO)Oracle统计信息22•影响CBO执行计划最关键的因素•分析的方法analyze命令dbms_stat包•分析的频率•Oracle10g自动分析共享SQL语句23•储存于共享池(shared_pool)•判断SQL语句是否与共享池中某一SQL相同的步骤(CURSOR_SHARING)对所发出语句的文本串进行hashed将所发出语句的文本串进行比较将SQL中涉及的对象进行比较基本概念24•ROWID伪列,唯一。定位数据的最快方法索引创建时会记录ROWID值•DrivingTable(驱动表):外层表,用于嵌套以及hash连接中•可选择性:“唯一键的数量/表中的行数”的比值OracleSQL执行计划25•SQL语句:SELECTename,job,sal,dnameFROMemp,deptWHEREemp.deptno=dept.deptnoANDNOTEXISTS(SELECT*FROMsalgradeWHEREemp.salBETWEENlosalANDhisal);OracleSQL执行计划图26OracleSQL执行计划图27访问路径28•全表扫描(FTS)•通过rowid的表存取(TableAccessbyrowid)•索引扫描(IndexScan)索引唯一扫描(indexuniquescan)索引范围扫描(indexrangescan)索引全扫描(indexfullscan)索引快速扫描(indexfastfullscan)表连接29•表连接JOIN:将两个表结合在一起,一次只能连接2个表,表连接也可以被称为表关联排序—合并连接(SortMergeJoin)嵌套循环(NestedLoops)哈希连接(HashJoin)排序-合并连接图30嵌套循环连接图31连接适用情况32•排序—合并连接非等值连接、关联列都有索引•嵌套连接驱动表较小•哈希连接等值连接生成执行计划33•sqlsetautotraceon•sqlexplainplanforselect……………•用dbms_system存储过程生成执行计划•用PL/SQLDEVELOPER(F5)干预执行计划_访问路径34FULL/*+FULL(table)*/指定该表使用FTSINDEX/*+INDEX(table[index])*/使用该表上指定的索引对表进行索引扫描INDEX_FFS/*+INDEX_FFS(table[index])*/使用快速全索引扫描NO_INDEX/*+NO_INDEX(table[index])*/不使用该表上指定的索引进行存取,仍然可以使用其它的索引进行索引扫描干预执行计划_表连接35USE_NL/*+USE_NL(tab[,tab,...])*/使用嵌套连接USE_MERGE/*+USE_MERGE(tab[,tab,...])*/使用排序--合并连接USE_HASH/*+USE_HASH(tab[,tab,...])*/使用HASH连接二、Oracle体系结构五、OracleSQL编写规范四、典型案例分析暨优化要点三、OracleSQL优化基础一、培训目的培训总目录典型案例_137•系统名称:综合集中维护支撑系统•故障现象:压力测试系统CPU资源100%•故障分析:数据库实际的数据量仅为6GB左右。但是每天却产生大概150GB左右的REDOLOG使用LOGMNR分析ORACLE日志,发现基本上都为JMSSTORE表的增、删操作。该表为WEBLOGIC的消息表(CLOB字段)。典型案例_138•系统名称:综合集中维护支撑系统•故障处理:运行相关查询业务,在数据库中查询v$sqlarea,JMSSTORE表相关操作的频率对应用进行跟踪调试,查找每笔查询业务所运行的SQL最终定位问题产生原因:应用程序在每笔查询后面都附带了消息传输(10次)将该SQL屏蔽,问题得到解决典型案例_239•系统名称:OA系统•故障现象:SQL语句执行速度慢(5S)selectdistinctb.fd_workflowname,a.fd_fileid,a.fd_c_filetitle,a.fd_c_enddatefromtb_model_workflowb,tb_documentc,tb_engine_filecommona,tb_engine_filetachegwherea.fd_c_workflowid=b.fd_workflowidandg.fd_fileid=a.fd_fileidanda.fd_c_fileno=c.idanda.fd_c_isend='1'andb.fd_workflowtype='1'and(c.security_level_code=1or(c.security_level_code=2andg.fd_ft_staffid=2)or(c.security_level_code=3andg.fd_ft_staffid=2))anda.fd_c_enddate=(sysdate-30)anda.fd_c_enddate=(sysdate+1)and(c.company_id=1orc.send_company=1)orderbya.fd_c_enddatedesc;典型案例_240•系统名称:OA系统•故障处理:查看该sql的执行计划tb_engine_filecommon表为FTS(fulltablescan),而且cost大典型案例_241•系统名称:OA系统•故障处理:查询该表fd_c_enddate的可选择性,发现很高,因此对该字段建索引,执行计划变为如下,执行时间缩短为0.3S左右典型案例_342•系统名称:商务领航系统•故障现象:出账速度慢•故障处理:查找V$SESSION中正在长时间运行的SQLupdatezjxc.BIZ_CUST_BALANCEtsett.warefee=0wheret.cusidin(selectb.cusidfromzjxc.biz_cusid_temp_0401b)andt.year_month='201003';表biz_cusid_temp_0401为FTS,但cusid字段建有索引典型案例_343•系统名称:商务领航系统•故障处理:改写上述SQL语句updatezjxc.biz_cust_balancetsett.warefee=0whereexists(select1fromzjxc.biz_cusid_temp_0401bwheret.cusid=b.cusidandt.year_month='201003');表biz_cusid_temp_0401的访问从FTS改变为索引唯一扫描SQL执行时间缩短为12秒典型案例_444•系统名称:CRM系统•故障现象:过多的latchfree锁影响性能•故障处理:查找latchfree对应的相关语句,都为SELECTCOL_VALUEFROMPUB_COLUMN_REFERENCEWHEREREFER_ID=:B1而该SQL语句都为函数GET_COLUMN_VALUE调用所产生查询调用该函数的相关可疑SQL语句典型案例_445•系统名称:CRM系统•故障处理:定位SQL有相关子查询调用了该函数对该SQL进行trace跟踪,发现该SQL每执行一次,将会调用该函数38355次,也就是说latchfree相应的SQL将被执行38355次修改相关应用(cache相关刷新机制)OracleSQL优化要点46•使用执行计划来分析SQL性能进而进行优化•使用HINTS来干预执行计划•最大限度地避免全表扫描(FTS)•减少子查询的使用•规范SQL语句的编写,使得SQL语句能够被共享•减少SQL解析的次数:使用绑定变量OracleSQL优化要点47•用索引提高效率避免在索引列上使用计算避免在索引列上使用函数转换避免改变索引列的类型避免在索引列上使用ISNULL和ISNOTNULL避免在索引列上使用like‘%AAA’OracleSQL优化要点48•尽量避免SQL语句不必要的排序操作UNION操作要用UNIONALL来代替ORDERBY中的字段最好建立索引尽量避免使用DISTINCT语句•尽量避免使用(NOT)IN,而使用(NOT)EXISTS来代替•对表超过10%以上的delete、update操作要重建索引。五、OracleSQL编写规范二、Oracle体系结构四、典型案例分析暨优化要点三、OracleSQL优化基础一、培训目的培

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功