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永远是数据库最容易瓶颈的地 ...
随机推荐
- java中的移位操作
java中的移位操作仅仅对; a = a << 2; System.out.println(a); System.out.println(Integer.toBinaryString(a) ...
- linux中O(1)调度算法与全然公平(CFS)调度算法
一.O(1)调度算法 1.1:优先级数组 O(1)算法的:一个核心数据结构即为prio_array结构体. 该结构体中有一个用来表示进程动态优先级的数组queue,它包括了每一种优先级进程所形成的链表 ...
- HDU 2586 How far away ?(LCA模板 近期公共祖先啊)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 Problem Description There are n houses in the vi ...
- maven 自建库
maven repository 标签: mavenjarxmlserver工具磁盘 2009-11-26 10:56 42322人阅读 评论(7) 收藏 举报 目录(?)[+] 什么是Mav ...
- iOS音频播放之AudioQueue(一):播放本地音乐
AudioQueue简单介绍 AudioStreamer说明 AudioQueue具体解释 AudioQueue工作原理 AudioQueue主要接口 AudioQueueNewOutput Audi ...
- Linux 管道是什么 ?原理
简单点就是说,一个命令的结果作为另外一个命令(结果)的输入 . 管道是linux提供的一种常见的进程通信工具,也是很多shell命令能够灵活组合产生强大用途的一个重要工具. 管道是什么? 管道,顾名思 ...
- 【视频】零基础学Android开发:蓝牙聊天室APP(一)
零基础学Android开发:蓝牙聊天室APP第一讲 1. Android介绍与环境搭建:史上最高效Android入门学习 1.1 Google的大小战略 1.2 物联网与云计算 1.3 智能XX设备 ...
- luogu1969 积木大赛
题目大意 搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成n块高度为 0 的积木).接下来每次操作,可以选择一段连 ...
- 2017-3-11 leetcode 217 219 228
ji那天好像是周六.....吃完饭意识到貌似今天要有比赛(有题解当然要做啦),跑回寝室发现周日才开始233333 =========================================== ...
- x+=y与x=x+y相同吗?
为了将赋值操作简便化,Java提供了很多扩展赋值运算符,例如+=.-=./=.*=等等,那么问题来了,x += 1与x = x +1两者相同吗? public class EqualsTest { @ ...