• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
教你优化Oracle数据
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
教你优化Oracle数据 获取超高性能
软件发布 教你优化Oracle数据 获取超高性能
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 认证考试 | Oracle认证 | Oracle指导 | 教你优化Oracle数据 获取超高性能

教你优化Oracle数据 获取超高性能

 

添加时间: 2008-4-20 22:30:01  作者: Oracle指导  阅读次数:16   来源: http://www.d9soft.com

 

 

       

 目前,HP,Compaq,Dell,IBM 以及 Oracle 都在加快速度拥抱 Linux ,这个开放源码的操作系统。根据 eWeek 的统计,去年 Linux 服务器的销售量大约占据了 Compaq 的 30%,Dell 的 13.7%,IBM 的 13.5%。而且 IBM 2001年度在 Linux 上的投入有 10 个亿。 Intel 最新的 64 位的 Itanium CPU 只支持四种操作系统:Windows, Linux, AIX 和 HP-UX。我们也不要忘记 Oracle 的 9i 数据库 Linux 版本要比 Windows 版本早一个月。

  尽管 Linux 能跑在从 IBM S/390 到 Sun SPARC 结构的服务器,但是对于大多数人来说,Intel 还是 Linux 跑得最多的平台。本文就是要讲述通过简单的性能调正,使 Oracle 的性能提升 1000% 的办法。

  本文采用的测试环境是一台 Compaq 4 CPU,512 MB ,8 部 7200 rpm SCSI 磁盘的服务器,然后在几乎同样的单 CPU Athlon 系统上作了测试,内存一样,但是只有一部 7200 rpm 的 Ultra 100 IDE 磁盘。尽管最后的结果和得到的百分比不一样,但是观测得到的性能提升是一致的。

  为了简单起见,我们的测试环境采用 TPC 基准测试,它广泛地用于 OLTP 的负荷测试。Quest 公司有一个叫做 Benchmark Factory 的工具,使测试工作变得就像发送电子邮件一样简单。

  下面我们将分别通过 DB 的调整和 OS 的调整来看测试的结果。

  DB1 的初始化参数一般不常见,为了说明问题,我们使用这些参数并作为基准。

  DB1: Initial Database 

  Database Block Size 2K 

  SGA Buffer Cache 64M 

  SGA Shared Pool 64M 

  SGA Redo Cache 4M 

  Redo Log Files 4M 

  Tablespaces Dictionary 

  TPC Results Load Time (Seconds) 49.41 

  Transactions / Second 8.152 

  显然需要加大 SGA 大小,我们来看 DB2 的结果:

  DB2: Cache & Pool 

  Database Block Size 2K 

  SGA Buffer Cache 128M 

  SGA Shared Pool 128M 

  SGA Redo Cache 4M 

  Redo Log Files 4M 

  Tablespaces Dictionary 

  TPC Results Load Time (Seconds) 48.57 

  Transactions / Second 9.147 

  增大 SGA 已经缓冲看来对于性能的提升并不显著,加载时间只提升了 1.73%。下面我们增加 SGA 重做日志的大小:

  DB3: Log Buffer 

  Database Block Size 2K 

  SGA Buffer Cache 128M 

  SGA Shared Pool 128M 

  SGA Redo Cache 16M 

  Redo Log Files 16M 

  Tablespaces Dictionary 

  TPC Results Load Time (Seconds) 41.39 

  Transactions / Second 10.088 

 我们可以看到加载时间提升了 17.35%,TPS 也提升了 9.33%。因为加载和同时插入,更新,删除需要比 8M 大的空间,但是看起来增加内存性能并没有显著提升,我们加大块大小:

  DB4: 4K Block 

  Database Block Size 4K 

  SGA Buffer Cache 128M 

  SGA Shared Pool 128M 

  SGA Redo Cache 16M 

  Redo Log Files 16M 

  Tablespaces Dictionary 

  TPC Results Load Time (Seconds) 17.35 

  Transactions / Second 10.179 

  我们看到加载时间提升了 138%!而对 TPS 值没有很大的影响。下面一个简单的念头是表空间的 管理 从目录切换为本地:

  DB5: Local Tablespaces 

  Database Block Size 4K 

  SGA Buffer Cache 128M 

  SGA Shared Pool 128M 

  SGA Redo Cache 16M 

  Redo Log Files 16M 

  Tablespaces Local 

  TPC Results Load Time (Seconds) 15.07 

  Transactions / Second 10.425 

  下面我们把数据库块加大到 8K 来看结果:

  DB6: 8K Block 

  Database Block Size 8K 

  SGA Buffer Cache 128M 

  SGA Shared Pool 128M 


  SGA Redo Cache 16M 

  Redo Log Files 16M 

  Tablespaces Local 

  TPC Results Load Time (Seconds) 11.42 

  Transactions / Second 10.683 

  看来结果并不坏,我们没有理由继续增加块大小了,我们还没有根据 CPU 个数调整相应的参数,这次我们设置 I/O 的进程数来继续调整:

 DB7: I/O Slaves 

  Database Block Size 8K 

  SGA Buffer Cache 128M 

  SGA Shared Pool 128M 

  SGA Redo Cache 16M 

  Redo Log Files 16M 

  Tablespaces Local 

  dbwr_io_slaves 4 

  lgwr_io_slaves (derived) 4 

  TPC Results 

  Load Time (Seconds) 10.48 

  Transactions / Second 10.717 

  我们的测试是基于 Red Hat 6.2 进行的,内核版本为 2.2.14-5smp。对于 Linux 的内核而言,有将近几百个参数可以调整,包括对 CPU 类型,SMP 支持,APIC 支持,DMA 支持,IDE DMA 缺省参数的使用以磁盘限额支持。根据 Oracle 的文档,我们要做的主要调整是共享内存和信号量的大小,SHMMAX 最少配置 0x13000000,SEMMNI, SEMMSL 和 SEMOPN 分别至少设置 100, 512, 100。这些参数的设置可以通过下面的命令实现:

  # echo 0x13000000 >/proc/sys/kernel/shmmax 

  # echo 512 32000 100 100 >/proc/sys/kernel/sem 

  OS1: 单内核和 IPC 

  TPC Results 

  Load Time (Seconds) 9.54 

  Transactions / Second 11.511 

  我们有理由相信采用新的内核版本(2.2.16-3smp)也应该有性能的提升: 

  OS2: Newer minor version kernel TPC Results 

  Load Time (Seconds) 9.40 

  Transactions / Second 11.522 

  目前已经有 2.4 版本的内核,和 2.2 相比,性能上有了很大的提升,我们采用 2.4.1smp: 

  OS3: Newer major version kernel TPC Results 

  Load Time (Seconds) 8.32 

  Transactions / Second 12.815 

  Linux 缺省读操作时更新最后一次读的时间,但是这个对我们来说并不重要,因此我们关闭这个选项,通过设置 noatime 的文件属性来实现。(对于 Win NT 和 2000 有相似的设置)

 如果只是相对 Oracle 的数据文件设置,我们的命令是 

  chattr +A file_name

  对整个目录的实施办法:chattr -R +A directory_name 

  最好的办法是修改 /etc/fstab ,针对每个文件系统入口,添加 noatime 关键字。 

  OS4: noatime file attribute 

  TPC Results 

  Load Time (Seconds) 5.58 

  Transactions / Second 13.884 

  另外一个调整 Linux I/O 的办法是虚拟内存子系统的调整,修改 /ect/sysctl.cong 文件,增加下面一行: 

  vm.bdflush = 100 1200 128 512 15 5000 500 1884 2 

  根据 /usr/src/Linux/Documentation/sysctl/vm.txt 的说法: 

  第一个参数100 %:控制缓冲区中最大的脏缓冲数据,增加这个值意味着 Linux 可以延迟磁盘写。 

  第二个参数 1200 ndirty:给出 bdflush 一次能够写入磁盘的最大脏缓冲。 

  第三个参数 128 nrefill:当调用 refill_freelist() 时,bdflush 添加到自由缓冲区中的最大缓冲数目。 

  refill_freelist() 512:当这个数目超过 nref_dirt 脏缓冲时,将唤醒 bdflush。 

  第五个 15 和最后两个参数 1884 和 2,系统未使用,我们不做修改。 

  age_buffer 50*HZ, age_super 参数 5*HZ:控制 Linux 把脏缓冲写到磁盘的最多等待时间。数值用时钟滴答数(jiffies)表示,每秒为 100 个 jiffies 。 

  OS5: bdflush settings TPC Results 

  Load Time (Seconds) 4.43 

  Transactions / Second 14.988 

  经过以上一系列调整后,我们得到的最终加载时间减少了 1015.35%,TPS 增加了 45.61%。

 

 

 

上下文章:

 

上一篇文章: 使用Oracle9i数据库程序的相关注意事项 下一篇文章: OCP认证各门考试科目

相关文章:

  • 在ORACLE的存储过程中如何做简单的动态查询
  • Oracle下调数据库许可价格以适应多芯CPU
  • Oracle全球客户支持副总裁汤姆·舒尔滋演讲
  • Oracle中国前员工述说公司高层内部纷争史
  • Oracle发布免费数据库管理工具Raptor

相关软件:

  • SmartVizor 可变数据印刷系统 8.0
  • 键盘网络城市音乐(含最新数据)
  • 系统优化大师 V2008 build 06.01
  • 全能优化(Guardio) V5.07.0.1110
  • 子墨数据库同步工具 V1.0.0.0
  • 数据精灵(DataFairy) V5.1

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 实例:Oracle导出EXCEL文件
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 在ORACLE的存储过程中如何做简单的...
  • 实例:Oracle导出EXCEL文件
  • AIX下自动启动Oracle数据库与监听...
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有