当前位置:
文档之家› Oracle的性能优化培训课件
Oracle的性能优化培训课件
(3)是否采用PL/SQL函数编写存储过程?
(4)是否有必要建立并行数据库,来提高数据库的查询效 率。
精品文档
9.2 SQL语句的优化
9.2.1 SQL语句的优化规则 9.2.2 SQL语句优化的具体方法
精品文档
9.2.1 SQL语句的优化规则
(1)去掉不必要的大表、全表扫描。不必要的大表、全表 扫描会造成不必要的输入输出,而且还会拖垮整个数据库;
精品文档
2.SQL语句排序优化 排序发生的情况如下: SQL中包含group by 子句 SQL 中包含order by 子句 SQL 中包含 distinct 子句 SQL 中包含 minus 或 union操作
精品文档
3.选择联合查询的联合次序 联合查询中如涉及到多个表的字段关联及查询,其
关联查询的开销——对返回到父查询的记录来说,子查询会
每行执行一次。因此,必须保证任何可能的时候子查询用到索
引。
精品文档
(2)在子查询中慎重使用IN或者NOT IN语句 在子查询中慎重使用IN或者NOT IN语句,使用where
(NOT)exists的效果要好的多。 ①带IN的关联子查询是多余的,因为IN子句和子查询中相 关的操作的功能是一样的。 ②为非关联子查询指定EXISTS子句是不适当的,因为这样 会产生笛卡尔乘积。 ③尽量不要使用NOT IN子句。
SQL查询语句联合次序的不同写法,会导致语句对各表具 体操作的步骤有不同的次序,所以虽然执行结果相同,但 执行效率却不同。
精品文档
4.SQL子查询的调整
(1)关联子查询和非关联子查询
非关联查询的开销——非关联查询时子查询只会执行一次, 而且结果是排序好的,并保存在一个Oracle的临时段中,其中的 每一个记录在返回时都会被父查询所引用。在子查询返回大量 的记录的情况下,将这些结果集排序,以及将临时数据段进行 排序会增加大量的系统开销。
(2)检查优化索引的使用 这对于提高查询速度来说非常重 要;
(3)检查子查询,考虑SQL子查询是否可以用简单连接的 方式进行重新书写;
(4)调整PCTFREE和PCTUSED等存储参数优化插入、更 新或者删除等操作;
(5)考虑数据库的优化器;
(6)考虑数据表的全表扫描和在多个CPU的情况下考虑并 行查询。
精品文档
9.1.2 不同类型系统的优化
1.在线事务处理信息系统(OLTP)
这种类型的信息系统一般需要有大量的Insert、Update操作。 OLTP系统需要保证数据库的并发性、可靠性和最终用户的速 度,这类系统使用的Oracle数据库需要主要考虑下述因素或参 数:
(1)数据库回滚段是否足够? (2)是否需要建立Oracle数据库索引、聚集、散列? (3)系统全局区(SGA)大小是否足够? (4)SQL语句是否高效? 精品文档
精品文档
9.1 数据库性能优化概述
9.1.1 数据库性能优化的内容 9.1.2 不同类型系统的优化
精品文档
9.1.1 数据库性能优化的内容
(1)调整数据结构的设计。 (2)调整应用程序结构设计。 (3)调整数据库SQL语句。 (4)调整服务器内存分配。 (5)调整硬盘I/O,这一步是在信息系统开发之前完成的。 (6)调整操作系统参数。
精品文档
(3)函数的索引 例如,日期类型是经常用到的,而且在SQL语句中会使用 to_char函数以查询具体的的范围日期。如: select * from staff_member where TO_CHAR( birth_day,’YYYY’)=’2003’; 可以建立基于函数的索引如: CREATE INDEX Ind_emp_birth ON staff_member ( to_char((birth_day,’YYYY’));
精品文档
(3)慎重使用视图的联合查询 慎重使用视图的联合查询,尤其是比较复杂的视图之
间的联合查询。一般对视图的查询最好都分解为对数据表的 直接查询效果要好一些。
可以在参数文件中设置SHARED_POOL_RESERVED_SIZE参 数,这个参数在SGA共享池中保留一个连续的内存空间,连 续的内存空间有益于存放大的SQL程序包。
精品文档
9.2.2 SQL语句优化的具体方法 1.索引的使用
2.SQL语句排序优化 3. 选择联合查询的联合次序
4.SQL子查询的调整
精品文档
1、索引的使用
(1)尽量使用索引
是全表扫描还是索引范围扫描主要考虑SQL的查询速度问题。 试比较下面两条SQL语句:
①语句A:
SELECT dname,o FROM dept WHERE deptno NOT IN(SELECT deptno FROM emp);
Oracle的性能 优化
精品文档
第九章 Oracle的性能优化
本章学习目标 本章将介绍优化和调整Oracle数据库 系统的一些相关命令和方法。
精品文档
本章内容安排
9.1 数据库性能优化概述 9.2 SQL语句的优化
9.3 Oracle运行环境的优化 9.4 并发事件处理 9.5 数据完整性 9.7 常见问题处理
2.数据仓库系统(Data Warehousing)
这种信息系统的主要任务是从Oracle的海量数据中进行查 询,得到数据之间的某些规律。数据库管理员需要为这种 类型的Oracle数据库着重考虑下述因素或参数:
(1)是否采用B*-索引或者bitmap索引?
(2)是否采用并行SQL查询以提高查询效率?
②语句B:
SELECT dname,deptno FROM dept WHERE NOT EXISTS
( SELECT deptno FROM emp WHERE dept.deptno =
emp.deptno);
精品文档
(2)索引不起作用的情况 ①存在数据类型隐形转换 ②列上有数学运算 ③使用不等于(<>)运算 ④使用substr字符串函数 ⑤‘%’通配符在第一个字符 ⑥字符串连接(||)
精品文档
9.3 Oracle运行环境的优化
9.3.1 内存结构的调整 9.3.2 物理I/O的调整 9.3.3 CPU的优化调整 9.3.4 网络配置的优化 9.3.5 Oracle碎片整理 9.3.6 Oracle系统参数的调整