Oracle数据库性能优化基础

 

 

 

1.数据处理分类OLTP,OLAP

2.Oracle特性

3.数据库优化方法论/原则

方法论:自顶向下优化和自底向上优化

3.1 自顶向下优化

3.2 自底向上优化

对于多年的老系统出现性能问题时,就只能自底向上进行分析优化了,分析角度通常包括以下部分,

3.3 性能优化2/8原则

4 性能指标和监控

4.1 指标

例如,通常要检验一个优化是否有效,

4.2 执行计划和执行路径

4.3 监控和分析工具

5常用优化方法

5.1索引

5.2表设计

5.3执行计划

5.4 排序和连接

5.4.1 尽量不排序

 

即,Oracle的Top-N算法,用了冒泡排序,只是从整个数据集选了10次最大值,然后就没继续下去了,

这样就避免了对整个数据集的排序,Top-N算法复杂度仅仅10*N

5.4.2 表连接

5.4.2.1. 嵌套循环(即表连接)和复合索引通常同时使用

三种连接

需要遵循以下原则:

 5.4.2.2 大数据处理:排序合并连接技术(sort/merge)

、、

5.4.2.3 哈希连接:适合大数据

 5.4.3. 多表连接

 

 

 

5.5SQL优化

 几个优化建议,

5.5.0 减少或不排序

注意隐含排序的操作(distinct, union,group by (10g以前)等)

查看执行计划可知道排序

索引本身已经排好序,可以加快速度

5.5.1.不要轻易在字段前加函数,例如下面

 

 5.5.2.也不要将字段嵌入表达式,例如这样,

5.5.3. 改写建议,可以使用代数等式替换,将字段前的函数去掉,不过这个需要数学基础

5.5.5用好复合索引

5.6 统计信息优化 (会影响索引的正常使用)

5.6.1什么是RBO

5.6.2什么是CBO

 5.6.3 为什么需要手机统计信息(为了支持CBO正常运转)

参考:

1.http://blog.csdn.net/yzsind/article/details/6059209

2. 《品悟性能优化》

=========================== 

总结

索引优化
B*树单字索引
尽量为约束条件字段建立索引
如果约束条件字段不固定,尽量针对单字段建立普通B*树索引
尽量在可选性高的字段上建立索引
如果是多表连接,要在被驱动表的连接字段上建立索引


SQL优化
1.减少不必要的排序
2.不要在字段前加函数
3.不要将字段嵌入表达式中(可用代数等式改写)
4.考虑复合索引的前缀性和可选性
5.尽量不要用子查询,改用表关联,防止数据库选错执行路径
6.尽量不用exists,二用in。 因为exists底层用子查询实现
7.注意表连接的顺序
8.用好top n算法


定期采集数据库统计信息(记录数,物理块树,记录平均长度,数据分布,索引节点树,深度等)
低版本数据库采用RBO(基于规则优化器)来创建执行计划
新版本数据库采用CBO(基于成本优化器)来创建执行计划
采集数据库统计信息就是为了为CBO提供依据

原文地址:https://www.cnblogs.com/fysola/p/6416368.html