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永远是数据库最容易瓶颈的地 ...
随机推荐
- 文字录入无限制Undo,Redo的实现
这里只针对Edit的内容做一个简单的undo,redo功能: 原理就是,将新增字符和相关信息添加到undo列表,在undo动作时,取记录信息,并在edit中删除新增的字符,然后将此动作添加到redo列 ...
- springboot整合ActiveMQ 2(主备模式,负载均衡)
基本使用,https://www.tapme.top/blog/detail/2018-09-05-10-38 主备模式,https://www.tapme.top/blog/detail/2018- ...
- Java实现一个简单的网络爬虫
Java实现一个简单的网络爬虫 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWri ...
- C# CultureInfo.InvariantCulture
今天在写代码的过程中发现了一个有意思的问题,我在写了一个日期格式转化的时候发现不同电脑的运行结果不一致. 代码如下 string str = this.tbTime.Text; if(string.I ...
- resgen.exe 已退出 代码为 1073741701的错误的解决办法
以管理员的身份打开命令提示窗口:(开始-运行-cmd),更改目录至"CD C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\”下 ...
- Unity3d Vector3
using UnityEngine; using System.Collections; public class test : MonoBehaviour { void Start () { Vec ...
- [Codeforces]Good Bye 2017
A - New Year and Counting Cards #pragma comment(linker, "/STACK:102400000,102400000") #inc ...
- 如何参加topcoder
1.注册账号 2.安装java运行环境 3.下载客户端 4.提示:应用程序已被java安全阻止:控制面板里找到java,将topcoder.com添加到安全列表 5.运行客户端
- Intel VTune Amplifier XE 使用
VTune <VTune 开发者手册> 1. 安装 1.1 软件安装 下载: (安装包下载地址) 安装: # 1.解压 tar -zxvf filename.tar.gz # 2.安装 c ...
- Android中图片旋转
Activity_main.xml文件配置 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi ...