Oracle性能究极优化(Oracle 性能优化)


本文整理自网络,侵删。

原作者:Bert Scalzo

目前,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。这些参数的设置可以通过下面的命令实现:

阅读剩余部分

相关阅读 >>

使用zabbix监控oracle数据库的方法详解

jdbc连接并操作oracle数据库

oracle 11g 新特性 flashback data archive 使用实例

oracle数据库优化辅助sql语句

oracle查询日期语句有哪些?

oracle 闪回技术详细介绍及总结

如何删除oracle用户?

oracle终极彻底卸载的完整步骤

oracle忘记用户名和密码怎么办?

oracle中通配符和运算符的使用方法介绍

更多相关阅读请进入《oracle》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...