ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库io相关等待优化

数据库io相关等待优化

原创 Linux操作系统 作者:zzuiezhangqihui 时间:2011-02-21 09:01:33 0 删除 编辑

oracle 数据库io相关等待优化

在oracle数据库中,io很容易成为数据库性能的瓶颈。
对io优化有以下方法:
1、优化oracle数据库的sql语句来减少数据库对io的需求。优化sql语句,使得sql语句有一个比较好的执行计划,从而来减少磁盘io。
2、调整实例的初始化参数来减少数据库对io的需求。
修改初始化参数中的内存缓存,利用缓存减少数据库对磁盘的读写,减少物理io。
调整一次读取block的大小,一次读取block的多少来增加一次io的数据量。db_file_multiblock_read_count。
3、操作系统级别的io优化。异步io和裸设备来提高每次传输中io的大小限制。
4、可以用磁盘技术RAID技术和io分散技术。通过冗余和其他技术来提高读写速度。io分散避免io瓶颈。
5、将数据文件,日志文件等分布到不同的文件系统,不同的磁盘控制器和物理设备上。避免文件之间的读写竞争。
 
针对数据库中经常出现的各种等待事件,有相应的解决方法。
数据文件出现的io等待。
1、db file sequential read 。非常常见的一个等待事件,读取数据文件头部的block等待。
方法一,从v$sql是同宗找到读取物理磁盘最多的sql,优化sql对io的读取需求,sql语句用了有问题的执行计划。
方法二,存在热点的磁盘,或者磁盘存在大量的活动。找到物理io最多的段。
v$segment_statistics视图中的value值。
statistic_name等于physical reads的。
方法三,增大高速缓存区,
2、db file scattered read。一次读取多个block到不连续的高速缓存区的时候发生的等待事件。
方法一,找到执行全表扫描的sql,判断全表扫描是否必要,执行计划是否合理。
方法二,调整db_file_multiblock_read_count,也可以对表或者索引分区,或者将经常使用的block放到keep缓存池中。
3、db file parallel read 。从多个数据库文件中并行读取多个block到内存的不连续的高速缓存区或者pga中时出现的等待事件。处理方法同db file sequential read 。
4、direct path read 。直接将数据读入到PGA内存中出现的等待事件。
方法一,如果等待的临时表空间,可以看是否存在大量的不合理的排序的sql。
方法二,减少io的次数,增加每次io的数量。
方法三,是否存在消耗io的sql。
5、direct path write 。 会话io写请求队列同时操作熊友io。
方法一,如果等待的临时表空间,可以看是否存在大量的不合理的排序的sql。
方法二,减少io的次数,增加每次io的数量。
方法三,是否存在消耗io的sql。
方法四,看是否已经达到磁盘的io极限。
 
控制文件的io事件
1、control file parallel write 。
方法一,尽量减少控制文件的数量。
方法二,将控制文件分散到不同的位置。
方法三,将控制文件放到负载低的,速度快的磁盘上。
2、control file sequential read 。控制文件放到负载低,数据库快的磁盘上。
3、control file single write。
写控制文件的共享信息到磁盘上的时候发生的等待事件。控制文件放到负载低,数据库快的磁盘上。
另外还有日志文件相关的和缓存区相关的等待事件。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25296295/viewspace-687593/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-02-19

  • 博文量
    9
  • 访问量
    6607