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永远是数据库最容易瓶颈的地 ...
随机推荐
- Android Handler消息机制深入浅出
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38408493 作为Android开发者,Handler这个类应该是再熟悉只是了.由于差点儿不 ...
- 利用LruCache载入网络图片实现图片瀑布流效果(改进版)
PS: 2015年1月20日21:37:27 关于LoadImageAsyncTask和checkAllImageViewVisibility可能有点小bug 改动后的代码请參见升级版本号的代码 ht ...
- [HDU 6318] Swaps and Inversions
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6318 [算法] 线段树 / 树状数组 [代码] #include<bits/stdc++.h ...
- 杂项-事务:OLTP(联机事务处理过程)
ylbtech-杂项-事务:OLTP(联机事务处理过程) On-Line Transaction Processing联机事务处理过程(OLTP) 也称为面向交易的处理过程,其基本特征是前台接收的用户 ...
- number随时间随机递增每天 不同 php(原创)
<?php namespace Controller; class IndexController{ public function getAutoRegUserName(){ $sql=&qu ...
- Super超级ERP系统---(6)采购管理--入库上架
采购商品入库完成后,下一步就是上架操作.所谓上架就是把入库放到移动托盘的商品转移到固定货架上,货架上有货位号,可以把商品放到指定的货位上.主要分两步操作,上架操作主要是移动PDA上完成的 1.扫描移 ...
- gitlab quickly install
一.安装gitlab依赖环境 yum -y install vim wget epel-release yum install curl policycoreutils openssh-server ...
- Ssh safe
新建用户,设置密码 useradd eason passwd eason 不允许root直接登陆 修改配置文件 vi /etc/ssh/sshd_config 禁止root登录 查找“#PermitR ...
- 安装typescript开发环境
参考文档: http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html 有两个方式 : 1.安装vs 2017,安 ...
- EF Code First连接现有数据库
作为一个初入学习.net MVC4 的新手,想写一写今天碰到的问题,做一个总结. 首先我想利用EF Code First来连接我现有数据库,而不是通过EF Code First来自动生成数据库和表. ...