下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何进行oracle数据库性能优化-降低IO ?

作者:课课家教育the     来源: http://www.kokojia.com点击数:2468发布时间: 2017-05-13 15:00:19

标签: 数据库Oracle数据存储

  数据库是信息系统中核心的部分,数据库的高效性、安全性、稳定性、延展性,是项目成功的关键之一。一个好的数据库系统,设计当然是关键,但是就像显微镜的粗调和微调,当软件开发完成后,通过不断的对系统的跟踪监控,对数据库系统进行优化也是必不可少的。可以认为优化是数据库设计的一种顺延,和设计是相辅相成的。数据库的优化实际上从设计、数据库的安装就已经开始了,我们不应该就sql语句的效率孤立的谈论数据库的优化问题。实际上很多数据库优化的经验,在设计的时候就必须要考虑。

  一、降低IO考虑

  影响到Oracle性能的因素主要可以从硬件和软件两个方面划分,本文通过对oracle数据库架构的分析,提出从硬件方面OLTP系统优化oracle数据库性能的方法。

  oracle数据库物理存储架构:

如何进行oracle数据库性能优化-降低IO ?_数据库_Oracle_数据存储_课课家教育

  oracle数据库物理文件增长情况:

oracle数据库物理存储架构:

  OraclearchivedREDOlogfiles增长快,说明redolog写入很频繁。

  从实际大数据量和高性能OLTP应用系统性能测试发现,磁阵IO是限制系统性能的瓶颈,

  因此降低IO是oracle数据库优化的关键,

  结合oracle数据库物理存储架构图、数据库物理文件增长情况和实际测试发现,

  给磁阵IO带来很大负荷的是redolog文件、数据文件、索引文件的读写三个方面,

  并且当数据量、性能和持续压力时间都达到一定的量时,这三者产生的IO负荷相当,

  因此降低磁盘IO的最终目标也就是降低这三类文件的IO,

  通过将oracle的redolog文件、数据文件、索引文件都建立到内存盘上的实际测试结果表明,

  采用这种几乎零IO的模式很大程度的提高了oracle的性能,

  基于以上分析,可以对oracle数据库的IO做以下优化:

  1.固态硬盘存储redolog,提高redolog的写入速度,

  从实际运用的角度看,由于内存盘的易失性,把redolog文件建立在内存盘上是不安全的,

  再考察redolog文件具有大小稳定,一般在2到3个G之间的特性,因此把redolog文件建立在固态硬盘上是个不错的选择。

  2.由于内存足够大,因此将临时表空间建立在内存盘上,对于统计、大数据量查询、大数据量sql运算(比如:groupby、sum等)的操作,需要大量临时表空间存储临时数据,这些临时数据就直接存储到内存上了,消除了oracle的大读取和大运算产生的临时IO

  3.由于索引具有可以根据数据文件重建,不怕丢失的特性,

  把索引文件建在临时文件系统上,oracle每次启动时重建索引,这样平时的读写操作就不会

  产生索引IO,索引的更新和读取都在内存上进行,

  系统由于各种原因出现重启时,仅在重启时重建一次索引

  本文观点基于目前系统内存都非常大(一般都是几十G甚至以上)的情况下所做的优化,

  基于以上优化,把影响oracleIO的三大因素去掉了两大因素,因此性能上有望达到倍增的效果。

  二、设置ORACLE数据库SGA常驻内存

 1.固态硬盘存储redolog,提高redolog的写入速度,    从实际运用的角度看,由于内存盘的易失性,把redolog文件建立在内存盘上是不安全的,    再考察redolog文件具有大小稳定,一般在2到3个G之间的特性,因此把redolog文件建立在固态硬盘上是个不错的选择。    2.由于内存足够大,因此将临时表空间建立在内存盘上,对于统计、大数据量查询、大数据量sql运算(比如:groupby、sum等)的操作,需要大量临时表空间存储临时数据,这些临时数据就直接存储到内存上了,消除了oracle的大读取和大运算产生的临时IO    3.由于索引具有可以根据数据文件重建,不怕丢失的特性,    把索引文件建在临时文件系统上,oracle每次启动时重建索引,这样平时的读写操作就不会    产生索引IO,索引的更新和读取都在内存上进行,    系统由于各种原因出现重启时,仅在重启时重建一次索引    本文观点基于目前系统内存都非常大(一般都是几十G甚至以上)的情况下所做的优化,    基于以上优化,把影响oracleIO的三大因素去掉了两大因素,因此性能上有望达到倍增的效果。

  Oracle中的lock_sga和pre_page_sga这两个静态初始化文件参数是用来指示SGA如何使用操作系统内存的。在Linux上启动Oracle数据库的时候,如果设置了lock_sga=true,那么就有可能碰到如下的报错信息:

二、设置ORACLE数据库SGA常驻内存    Oracle中的lock_sga和pre_page_sga这两个静态初始化文件参数是用来指示SGA如何使用操作系统内存的。在Linux上启动Oracle数据库的时候,如果设置了lock_sga=true,那么就有可能碰到如下的报错信息:

  这是因为Linux操作系统对应用程序使用内存有一些限制,在SHELL中使用ulimit命令可以查看到如下的信息:

二、设置ORACLE数据库SGA常驻内存    Oracle中的lock_sga和pre_page_sga这两个静态初始化文件参数是用来指示SGA如何使用操作系统内存的。在Linux上启动Oracle数据库的时候,如果设置了lock_sga=true,那么就有可能碰到如下的报错信息:    这是因为Linux操作系统对应用程序使用内存有一些限制,在SHELL中使用ulimit命令可以查看到如下的信息:

  可以看出,lock_sga跟maxlockedmemory的限制是存在冲突,如果保持lock_sga=true参数设置的话,必须修改Linux的maxlockedmemory限制。在/etc/security/limits.conf这个配置文件中添加如下的一行(oracle是启动数据库的操作系统账号),意思是oracle用户可以在物理内存中锁住任意大的空间:

      oracle   -   memlock unlimited 

  之后使用oracle重新登录系统,数据库就可以正常启动了!而另一个初始化参数pre_page_sga设置为true的话,数据库启动的时候就会在内存中分配好整个SGA,这将使Oracle数据库的启动时间加长。

  三、将程序、数据缓存、数据常驻内存

  将程序常驻内存:

将程序常驻内存:

  将数据缓存存在内存中:

将数据缓存存在内存中:

  将数据(table,index)常驻内存:

将数据(table,index)常驻内存:

  小编结语:

  更多内容尽在课课家教育!

赞(18)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程