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提供依据
Oracle数据库性能优化基础的更多相关文章
- oracle数据库性能优化方案精髓整理收集回想
oracle数据库性能优化整体法则: 一.降低数据訪问(降低硬盘房訪问次数) 二.返回更少的数据(降低网络传输或磁盘訪问) 三.降低交互次数(降低网络传输) 四.降低server开销(降低cpu及内存 ...
- 浅谈Oracle数据库性能优化的目标
Oracle性能优化保证了Oracle数据库的健壮性,为了保证Oracle数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据库的优化策略.从数据库性能优化的场景来区分,可以将性能优化分为如 ...
- 数据库 Oracle数据库性能优化
--在Oacle数据库涉及到全表扫描的SQL查询(top,count)中, --现场用户删除表中大部分数据,只保留1W条数据,但是查询仍然很慢,检查磁盘IO,发现磁盘IO不是很高 --经过分析Oacl ...
- mysql数据库性能优化(包括SQL,表结构,索引,缓存)
优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...
- MySQL 数据库性能优化之索引优化
接着上一篇 MySQL 数据库性能优化之表结构,这是 MySQL数据库性能优化专题 系列的第三篇文章:MySQL 数据库性能优化之索引优化 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引 ...
- Oracle SQL性能优化技巧大总结
http://wenku.baidu.com/link?url=liS0_3fAyX2uXF5MAEQxMOj3YIY4UCcQM4gPfPzHfFcHBXuJTE8rANrwu6GXwdzbmvdV ...
- Oracle SQL 性能优化技巧
Select语句完整的执行顺序: SQL Select语句完整的执行顺序: 1. from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将 ...
- 【SQL server初级】数据库性能优化一:数据库自身优化(大数据量)
数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第一部分 数据库性能优化一:数据库自身优化 优化①:增加次数据文件,设置文件自动增长(粗略数据分区) 1.1:增加次数据文 ...
- MySQL数据库性能优化:表、索引、SQL等
一.MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地 ...
随机推荐
- pl/sql developer br 文件
pl/sql developer br 文件 Version=1 RightMargin=72 Indent=2 UseTabCharacter=FALSE TabCharacterSize=2 Al ...
- [Angular] Upgrading to RxJS v6
This is just a learning blog post, check out the talk. 1. Custom pipeable operators: Custom pipeable ...
- quick-cocos2d-x游戏开发【9】——单点触摸
quick的触摸机制,我想廖大已经在这篇文章里说的非常清楚了.我们这些小辈们就是在他的基础上完备一下,说说使用方法就能够了.嘿嘿. 在2.2.3之前的版本号(不包含2.2.3).触摸机制和廖大在那篇文 ...
- CefSharp 设置cookie
设置cookie var cookieManager = CefSharp.Cef.GetGlobalCookieManager(); await cookieManager.SetCookieAsy ...
- csu 1030: 素数槽
素数槽 Description 处于相邻的两个素数p和p + n之间的n - 1个连续的合数所组成的序列我们将其称为长度为n的素数槽.比如,‹24, 25, 26, 27, 28›是处于素数23 ...
- 如何在Eclipse引入JUnit测试
1.在Eclipse中引入JUnitjar文件 2.右键Build Path>Configure Bulid Path 3.Libraries>Add Library 4.Junit> ...
- const指针总结
const 总结: 假设keywordconst出如今星号左边.表示被指物是常量:即不能通过指针改动变量的值. 假设keywordconst出如今星号右边,表示指针自身是常量:即不能改变指针的指向. ...
- 学习vi和vim编辑器(1):vi文本编辑器
UNIX系统中有非常多编辑器.能够分为两种类型:行编辑器和全屏编辑器.行编辑器每次仅仅能在屏幕中显示文件的一行,如ed和ex编辑器.全屏编辑器能够在屏幕上显示文件的一部分. vi(读为vee-eye) ...
- 面向对象的三大特性之二——继承(含super的使用)
1.继承的语法:class 子类 extends 父类 例1: class Person { int age; String name; public void print1() { System.o ...
- 18.29SSM基础整合开发
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/d ...