oracle性能调优
来源:互联网 发布:nginx伪静态规则写法 编辑:程序博客网 时间:2024/05/22 15:19
- oracle性能调优一般的方法
1)Oracle性能调优一般是通过statspack,产生分析跟踪文件来定位效率低下的sql语句。然后通过各种手段,比如可以加入合适的索引,添加合适的hint来调整查询语句;用alter indexmonitoring usage;跟踪没有使用的索引并把这些索引删除、调整效率低下的索引(尤其使对大表上的索引)、加/+append/提示、批量插入等手段调整DML语句。
2)注意SQL基本书写规范:少用IN、NOTIN、LIKE、<>、!=等耗时的写法;SELECT中不要用‘*’;where替换having;表用别名,抽取字段前加上表名等等。。。
3)了解数据库内部机制,如Oracle从右到左处理From子句中的表名,所以在From子句中包含多个表的情况下,将记录最少的表放在最后;Oracle从下到上处理Where子句中多个查询条件,所以表连接语句应写在其他Where条件前,可以过滤掉最大数量记录的条件必须写在Where子句的末尾;Order By语句中的非索引列会降低性能,可以通过添加索引的方式处理。严格控制在Order By语句中使用表达式。。。
4)索引的使用:Where子句中出现IS NULL或者IS NOT NULL时,Oracle会停止使用索引而执行全表扫描。可以考虑在设计表时,对索引列设置为NOT NULL。这样就可以用其他操作来取代判断NULL的操作。当通配符“%”或者“_”作为查询字符串的第一个字符时,索引不会被使用。索引应该用在可以唯一确定数据的列上,如主键,如果一个索引可以确定一般数据那就没作用,如男女区别。索引也不是加的越多越好。不同类型的列进行比较索引会失效,where子句对索引列计算也会同样导致全表扫描数据从而索引失效。 - 索引的使用
1)索引的创建
在创建表时指定主键primary key ,外键或者uniqe ,oracle会自动创建索引。手动创建索引(为特定键创建索引)
CREATE INDEX indexnameon tablename(column)
2)创建索引的好处与坏处
好处:
索引能增加查询速度,通过快速定位的方法减少磁盘IO;
利用索引的唯一性来控制记录的唯一性 ;可以加速表与表之间的连接;降低查询中分组和排序的时间。
坏处:
存储索引的磁盘空间; 执行数据修改操作(INSERT、UPDATE、DELETE)产生的索引维护(降低crud操作的性能);在数据处理时回需额外的回退空间。
3) 什么情况下需要创建索引
1、数据的数值分布较广;2、数值中含有大量null;3、列经常出现在where子句中或关联查询中;
4)不适合创建索引的情况:
1、表很小; 2、表经常有增删改查操作,查询的数据大于4% ;3、列不经常出现在查询中 ;4、加索引的列包含在条件表达式中
5)索引的分类
索引按存储方法分类
B*树索引
B*树索引是最常用的索引,其存储结构类似书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页。一般索引及唯一约束索引都使用B*树索引。
位图索引
位图索引储存主要用来节省空间,减少ORACLE对数据块的访问,它采用位图偏移方式来与表的行ID号对应,采用位图索引一般是重复值太多的表字段。位图索引在实际密集型OLTP(数据事务处理)中用得比较少,因为OLTP会对表进行大量的删除、修改、新建操作,ORACLE每次进行操作都会对要操作的数据块加锁,所以多人操作很容易产生数据块锁等待甚至死锁现象。在OLAP(数据分析处理)中应用位图有优势,因为OLAP中大部分是对数据库的查询操作,而且一般采用数据仓库技术,所以大量数据采用位图索引节省空间比较明显。
索引按功能分类
唯一索引
唯一索引有两个作用,一个是数据约束,一个是数据索引,其中数据约束主要用来保证数据的完整性,唯一索引产生的索引记录中每一条记录都对应一个唯一的ROWID。
主关键字索引
主关键字索引产生的索引同唯一索引,只不过它是在数据库建立主关键字时系统自动建立的。
一般索引
一般索引不产生数据约束作用,其功能主要是对字段建立索引表,以提高数据查询速度。
索引按索引对象分类
单列索引(表单个字段的索引)
多列索引(表多个字段的索引)
函数索引(对字段进行函数运算的索引)
5)注意事项
索引不存储空值,如果对可空值的列 建立索引,是不起作用的。(个人理解,待求证)
0 0
- Oracle性能调优
- [Oracle]性能调优
- Oracle性能调优
- oracle 性能调优
- oracle性能调优
- Oracle性能调优
- Oracle 性能调优
- Oracle性能调优
- Oracle性能调优
- Oracle 性能调优
- oracle性能调优
- oracle性能调优
- Oracle性能调优
- Oracle性能调优
- Oracle基础性能调优
- Oracle 性能调优心得
- Oracle性能调优原则
- ORACLE性能调优原则
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- swift uitableview 中实现分组,将cell分组显示,类似微信的好友界面
- Unity3d 导入图片 自动修改Texture Type为Sprite (2D and UI) 及设置 Packing Tag为文件夹名
- 黑马程序员_Java语言_IO流_
- MS SQL借助临时表处理获取复杂结果
- oracle性能调优
- Unity的安卓上的移动C#脚本
- 递归算法及经典递归例子代码实现
- baseAdapt getView 重复执行很对遍原因
- 黑马程序员—经典题目:兔子问题
- 欢迎使用CSDN-markdown编辑器
- SqlServer bug:sp_replqueuemonitor 在SqlServer 2008(RTM) 执行无结果
- Triangle DP求最大和
- python 统计pvuv 二