Oracle的性能优化培训课件
- 格式:ppt
- 大小:583.00 KB
- 文档页数:71
oracle数据库性能调优⼀:注意WHERE⼦句中的连接顺序:ORACLE采⽤⾃下⽽上的顺序解析WHERE⼦句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最⼤数量记录的条件必须写在WHERE⼦句的末尾.尤其是“主键ID=?”这样的条件。
⼆: SELECT⼦句中避免使⽤ ‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个⼯作是通过查询数据字典完成的, 这意味着将耗费更多的时间。
简单地讲,语句执⾏的时间越短越好(尤其对于系统的终端⽤户来说)。
⽽对于查询语句,由于全表扫描读取的数据多,尤其是对于⼤型表不仅查询速度慢,⽽且对磁盘IO造成⼤的压⼒,通常都要避免,⽽避免的⽅式通常是使⽤索引Index。
三:使⽤索引的优势与代价。
优势:1)索引是表的⼀个概念部分,⽤来提⾼检索数据的效率,ORACLE使⽤了⼀个复杂的⾃平衡B-tree结构. 通常,通过索引查询数据⽐全表扫描要快. 当ORACLE找出执⾏查询和Update语句的最佳路径时, ORACLE优化器将使⽤索引. 同样在联结多个表时使⽤索引也可以提⾼效率. 2)另⼀个使⽤索引的好处是,它提供了主键(primary key)的唯⼀性验证.。
那些LONG或LONG RAW数据类型, 你可以索引⼏乎所有的列. 通常, 在⼤型表中使⽤索引特别有效. 当然,你也会发现, 在扫描⼩表时,使⽤索引同样能提⾼效率.代价:虽然使⽤索引能得到查询效率的提⾼,但是我们也必须注意到它的代价. 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时, 索引本⾝也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引反⽽会使查询反应时间变慢.。
⽽且表越⼤,影响越严重。
使⽤索引需要注意的地⽅:1、避免在索引列上使⽤NOT , 我们要避免在索引列上使⽤NOT, NOT会产⽣在和在索引列上使⽤函数相同的影响. 当ORACLE”遇到”NOT,他就会停⽌使⽤索引转⽽执⾏全表扫描.2、避免在索引列上使⽤计算.WHERE⼦句中,如果索引列是函数的⼀部分.优化器将不使⽤索引⽽使⽤全表扫描.举例:代码如下:低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000;⾼效:SELECT … FROM DEPT WHERE SAL > 25000/12;3、避免在索引列上使⽤IS NULL和IS NOT NULL避免在索引中使⽤任何可以为空的列,ORACLE性能上将⽆法使⽤该索引.对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果⾄少有⼀个列不为空,则记录存在于索引中.举例: 如果唯⼀性索引建⽴在表的A列和B列上, 并且表中存在⼀条记录的A,B值为(123,null) , ORACLE将不接受下⼀条具有相同A,B值(123,null)的记录(插⼊). 然⽽如果所有的索引列都为空,ORACLE将认为整个键值为空⽽空不等于空. 因此你可以插⼊1000 条具有相同键值的记录,当然它们都是空! 因为空值不存在于索引列中,所以WHERE⼦句中对索引列进⾏空值⽐较将使ORACLE停⽤该索引.代码如下:低效:(索引失效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;⾼效:(索引有效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE >=0;4、注意通配符%的影响使⽤通配符的情况下Oracle可能会停⽤该索引。
Oracle数据库培训Oracle数据库培训:全面提升您的数据库管理技能一、引言Oracle数据库作为全球领先的数据库管理系统,以其卓越的性能、可靠性和安全性,在各个行业中得到了广泛的应用。
为了帮助广大数据库管理员和开发人员更好地掌握Oracle数据库技术,我们特推出Oracle数据库培训课程。
本文将详细介绍本课程的目标、内容、培训方式及预期效果,帮助您全面了解Oracle数据库培训的相关信息。
二、培训目标1.理论与实践相结合:使学员掌握Oracle数据库的基本概念、体系结构、核心功能及高级特性,能够熟练运用Oracle数据库进行数据管理和维护。
2.提升技能水平:通过培训,使学员具备独立进行Oracle数据库安装、配置、优化、备份与恢复的能力。
3.适应企业需求:针对企业实际应用场景,培养学员具备解决实际问题的能力,提高企业数据库管理水平和业务运行效率。
4.考取Oracle认证:帮助学员顺利通过Oracle认证考试,获得Oracle认证数据库管理员(OCP)证书,提升个人职业竞争力。
三、培训内容1.Oracle数据库基础(1)Oracle数据库概述(2)Oracle数据库体系结构(3)SQL语言基础(4)PL/SQL编程2.Oracle数据库管理(1)数据库安装与配置(2)表空间与数据文件管理(3)用户、权限与角色管理(4)备份与恢复策略3.Oracle数据库性能优化(1)SQL优化(2)索引优化(3)分区技术(4)数据库监控与分析4.Oracle数据库高级特性(1)RAC集群技术(2)DataGuard物理备用数据库(3)GoldenGate实时数据复制(4)Oracle数据库安全策略四、培训方式1.面授课程:小班授课,面对面教学,方便学员与讲师互动交流,及时解答疑问。
2.实践操作:课程中安排大量实验环节,确保学员在实际操作中掌握Oracle数据库技术。
3.在线辅导:提供在线学习平台,学员可随时提问,讲师将在第一时间给予解答。
让Oracle跑得更快—Oracle 10g性能分析与优化思路目录第1章引起数据库性能问题的因素11.1 软件设计对数据库的影响11.1.1 软件架构设计对数据库性能的影响11.1.2 软件代码的编写对数据库性能的影响21.2 数据库的设计81.2.1 OLTP数据库91.2.2 OLAP数据库101.3 数据库的硬件设计141.3.1 存储容量151.3.2 存储的物理设计161.3.3 数据的安全171.4 小结19第2章锁和阻塞202.1 关于锁202.2 锁和阻塞222.3 引起阻塞的其他情况302.3.1 select for update 302.3.2 外键和索引36第3章Latch和等待443.1 共享池中的Latch争用45.3.2 数据缓冲池Latch争用543.2.1 表数据块543.2.2 索引数据块593.2.3 索引根数据块623.2.4 段头数据块65第4章优化器664.1 RBO基于规则的优化器664.2 CBO基于成本的优化器69第5章执行计划855.1 Cardinality (基数)855.2 SQL的执行计划94第6章Hint 1096.1 和优化器相关的Hint 1156.1.1 all_rows和first_rows(CBO)1156.1.2 RULE Hint 1176.2 访问路径相关的Hint 1176.2.1 FULL Hint 1186.2.2 INDEX Hint 1186.2.3 NO_INDEX Hint 1186.2.4 INDEX_DESC Hint 1196.2.5 INDEX_COMBINE Hint 1196.2.6 INDEX_FFS 1196.2.7 INDEX_JOIN 1206.2.8 INDEX_SS Hint 1206.3 表关联顺序的Hint 1256.3.1 LEADING Hint 1256.3.2 ORDERED Hint 1266.4 表关联操作的Hint 1276.4.1 USE_HASH,USE_NL和USE_MERGE Hint 127 6.4.2 NO_USE_HASH Hint 1326.4.3 NO_USE_MERGE Hint 1336.4.4 NO_USE_NL Hint 1336.5 并行执行相关的Hint 1346.5.1 PARALLEL Hint 1346.5.2 NO_PARALLEL Hint 1346.6 其他方面的一些Hint 1356.6.1 APPEND Hint 1356.6.2 DYNAMIC_SAMPLING Hint 1356.6.3 DRIVING_SITE Hint 1366.6.4 CACHE Hint 1366.7 小结136第7章分析及动态采样1387.1 直方图1417.2 DBMS_STATS包1477.3 动态采样1767.3.1 什么是动态采样1767.3.2 动态采样的级别1827.3.3 什么时候使用动态采样?1857.4 小结185第8章并行执行1868.1 并行和OLAP系统1878.2 并行处理的机制1898.3 读懂一个并行处理的执行计划1918.4 一个很常见的并行执行等待事件1928.5 并行执行的适用范围1948.5.1 并行查询1948.5.2 并行DDL操作1958.5.3 并行DML操作2038.6 并行执行的设定2108.6.1 并行相关的初始化参数2108.6.2 并行度的设定2118.7 直接加载2138.7.1 直接加载和REDO 2168.7.2 直接加载和索引2198.7.3 直接加载和并行2218.7.4 直接加载和SQL*LOADER 226第9章变量绑定2329.1 什么是变量绑定,为什么要做变量绑定2329.2 为什么说OLTP必须要求变量绑定而OLAP不应该绑定变量241 9.3 bind peaking 248第10章SQL_TRACE和10046事件25410.1 SQL_TRACE 25410.2 TKPROF工具25610.3 10046事件268第11章10053事件276第12章性能视图和性能参数29412.1 性能视图29412.1.1 V$SQL 29512.1.2 V$SQL_SHARED_CURSOR 30012.1.3 v$session 30512.1.4 V$sessstat 30912.1.5 V$session_wait 31012.2 性能参数31212.2.1 Cursor_sharing 31312.2.2 DB_FILE_MULTIBLOCK_READ_COUNT 32812.2.3 PGA_AGGREGATE_TARGET和SGA_TARGET 33412.2.4 OPTIMIZER_DYNAMIC_SAMPLING 334第13章性能报告33513.1 AWR性能报告33513.1.1 生成AWR性能报告33713.1.2 AWR性能报告分析34213.2 Statspack性能报告38613.2.1 Statspack的安装38613.2.2 Statspack性能采集39113.3 ASH性能报告39413.3.1 生成ASH性能报告39513.3.2 ASH性能报告分析40513.4 小结416附录A 常见的等待事件417后记关于数据库的学习方法434。