文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html

硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视。本文将针对硬件OLTP系统优化,来讲述如何优化Oracle数据库性能。

实验环境:

由于本文所需测试均是从内存盘使用方面的优化性测试,因此有一台内存较大cpu稍微好一点的机器就足以做相关测试了。

遗留问题:

1 每次重启数据库时重建oracle索引的代价是多少,应用能否接受?

2 redo log文件是否还有别的更加快速的存取办法?更快的方法安全性怎么样?

名词解释:

内存盘    :参见百度百科的解释“linux tmpfs是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似像,但不完全相同,和ramdisk一样,tmpfs可以使用RAM,但它也可以使用swap分区来存储。而且传统的ramdisk是个块设备,要用mkfs来格式化它,才能真正地使用它;而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以使用了。tmpfs是最好的基于RAM的文件系统。”

我没有查到关于unix操作系统的临时文件系统的说明,但是unix系统通常都支持内存盘(ramdisk),可以用来代替tmpfs.

http://baike.baidu.com/view/753453.htm

http://baike.baidu.com/view/1511292.htm

固态硬盘  :固态硬盘(Solid State Disk、IDE FLASH DISK)用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片)组成。

http://baike.baidu.com/view/723957.htm

http://www.pcpop.com/doc/0/683/683347_all.shtml

传统硬盘  :硬盘(港台称之为硬碟,英文名:Hard Disc Drive 简称HDD 全名 温彻斯特式硬盘)是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料。

http://baike.baidu.com/view/4480.htm

redo log  :redo/undo log文件,重做/撤销日志,Oracle archived REDO log files是对red/undo log的备份

http://baike.baidu.com/view/3084737.htm

data files:数据文件,每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据

http://baike.baidu.com/view/702978.htm

oracle数据库物理存储架构:

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

Oracle archived REDO log files增长快,说明redo log写入很频繁。

从实际大数据量和高性能OLTP应用系统性能测试发现,磁阵IO是限制系统性能的瓶颈,因此降低IO是oracle数据库优化的关键,

结合oracle数据库物理存储架构图、数据库物理文件增长情况和实际测试发现,给磁阵IO带来很大负荷的是redo log文件、数据文件、索引文件的读写三个方面,

并且当数据量、性能和持续压力时间都达到一定的量时,这三者产生的IO负荷相当,因此降低磁盘IO的最终目标也就是降低这三类文件的IO,

通过将oracle的redo log文件、数据文件、索引文件都建立到内存盘上的实际测试结果表明,采用这种几乎零IO的模式很大程度的提高了oracle的性能,

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

1 固态硬盘存储redo log,提高redo log的写入速度,

从实际运用的角度看,由于内存盘的易失性,把redo log文件建立在内存盘上是不安全的,再考察redo log文件具有大小稳定,一般在2到3个G之间的特性,因此把redo log文件建立在固态硬盘上是个不错的选择

2 由于内存足够大,因此将临时表空间建立在内存盘上,对于统计、大数据量查询、大数据量sql运算(比如:group by、sum等)的操作,

需要大量临时表空间存储临时数据,这些临时数据就直接存储到内存上了,消除了oracle的大读取和大运算产生的临时IO

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

把索引文件建在临时文件系统上,oracle每次启动时重建索引,这样平时的读写操作就不会产生索引IO,索引的更新和读取都在内存上进行,

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

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

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

======the end !

降低磁盘IO使Oracle性能优化(转)的更多相关文章

  1. oracle性能优化之awr分析

    oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...

  2. Oracle 性能优化的基本方法

    Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...

  3. 【转载】我眼中的Oracle性能优化

    我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...

  4. 我眼中的 Oracle 性能优化

    恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...

  5. Oracle性能优化1-总体思路和误区

    最近在看梁敬彬老师关于Oracle性能优化的一些案例,在这里做一些简单的总结 1.COUNT(*)与COUNT(列)哪个更快 drop table t purge; create table t as ...

  6. Oracle性能优化小结

    Oracle性能优化小结 原则一.注意where子句中的连接顺序 Oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须卸载其他where条件之前,哪些可以滤掉最大数量记录的 ...

  7. 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  8. 性能优化中CPU、内存、磁盘IO、网络性能的依赖(转)

    关于系统性能优化,推荐一篇不错的博客! 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试 ...

  9. 性能优化中CPU、内存、磁盘IO、网络性能的依赖

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

随机推荐

  1. 【点滴积累,厚积薄发】windows schedule task的最小时间间隔是多少?

    在一些业务系统中,经常会出现一些需要定时运行的任务,业界已有很多优秀的选择,比如windows schedule task,Quartz等等.在以前在新蛋的时候用的是内部封装的JobConsole,非 ...

  2. [xen]XenServer6.2增加第二块盘&vm开启自动启动&图形化安装centos

    很多服务器都会多块盘或者做了Raid的多个虚拟磁盘,而安装xenserver后,他只会默认挂载第一快盘,也就是安装xenServer系统的那块. 为XenServer6.2挂载/增加第二块硬盘的方法 ...

  3. translateZ 带来的Z-index 问题

    今天遇到了一个问题,当一个3D变换元素translateZ这个属性的值为负值的时候,这个元素的Z-index就不会其作用,解决方法就是translateZ的值必须大于等于0才能让Z-index 起作用 ...

  4. 从idea上通过路径去导入项目

    这里我用git来演示导入. 首先确定你要导入项目的路径.(我这里用码云路径图片做演示) 1.选择 2.填写

  5. ASP.NET 系列:单元测试之ConfigurationManager

    通过ConfigurationManager使用.NET配置文件时,可以通过添加配置文件进行单元测试,虽然可以通过测试但达不到解耦的目的.使用IConfigurationManager和Configu ...

  6. C# 利用反射动态将字符串转换成属性对应的类型值

    /// <summary> /// 为指定对象分配参数 /// </summary> /// <typeparam name="T">对象类型& ...

  7. 4-pwd 打印当前工作目录

    pwd print name of current/working directory 打印当前工作目录 [语法]: pwd [选项] [参数] [功能介绍] pwd命令以绝对路径的方式显示用户当前工 ...

  8. webpack入坑之旅(五)加载vue单文件组件

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  9. LINQ日常使用记录

    1.公司一位美女程序媛写的 2.技术总监提供(来自互联网) var query = from f in db.TField join fw in db.TFieldWel on f.emp_no eq ...

  10. RabbitMQ 路由选择 (Routing)

    让日志接收者能够订阅部分消息.例如,我们可以仅仅将致命的错误写入日志文件,然而仍然在控制面板上打印出所有的其他类型的日志消息. 1.绑定(Bindings) 在前面中我们已经使用过绑定.类似下面的代码 ...