Oracle利用Windows的高级特性增强性能

Windows 版 Oracle 数据库通过各种方式支持访问大内存,包括  4GB RAM 调整,超大内存以及地址窗口扩展等。因为 Oracle 可以使用 32 位 Windows 2000 和 Windows Server 2003 上的最大可用内存 64GB,因此用户可以感受到更好的可伸缩性和吞吐量。
Windows 版 Oracle 数据库 10g 的一个重要目标就是充分利用有助于增强可伸缩性、吞吐量和数据库容量的一切技术。下面将介绍这方面的一些技术、这些技术是如何影响 Oracle 的以及从这些技术可以得到什么好处。

4GB RAM 调整 (4GT) 支持

Windows 2000 Server(高级版和数据中心版)和 Windows Server 2003(企业版和数据中心版)包括一个名为 4GB RAM 调整 (4GT) 的特性。该特性允许在 Windows 上运行的、需要大量内存的应用程序能够访问多达 3GB 的内存,而非其他 Windows 版本中所允许的标准的 2GB。对于 Oracle 数据库 10g 来说,最明显的好处就是可用于数据库的内存多了 50%,这可以增加 SGA 的大小或者连接数量。7.3.4 版以后的所有 Oracle 数据库服务器版都支持这个特性,不需要对标准 Oracle 安装做任何改动。唯一要做配置更改就是确保在 Windows 的 boot.ini 文件中使用了  /3GB 标志。

修改系统盘文件c:\boot.ini
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect  /PAE /3GB

大量用户

我们还在如何在 Windows 上支持大量数据库用户连接方面投入了大量努力。早在 Oracle7 的 7.2 版中,就已经有客户在实际使用中在 Windows NT 的一个数据库实例上建立了 1000 多个并发连接。随着时间的推移,这个数字已经显著增大,在实际使用中可以有 2000 多个用户并发连接到一个数据库实例上。尽管 Oracle 共享服务器体系结构限制 Oracle 数据库进程中运行的线程数量,但使用这种体系结构时一个数据库实例上仍可同时建立 10,000 多个连接。另外,网络多路复用和连接池特性也允许大型配置实现在一个数据实例上连接更多用户。最后,可以使用 Oracle 真正应用集群通过允许多台服务器访问相同的数据库文件来显著提高连接数量,从而增加用户连接的数量并提高吞吐量。


VLM 支持

最初在 Oracle8i 中引入的一个特定于 Windows 2000 的主要新特性是对特大内存 (Very Large Memory, VLM) 配置的支持。Oracle 数据库 10g 增强了该支持,并允许 Windows 上的数据库突破通常在 32 位 Windows 2000 和 Windows Server 2003 上存在的 3GB 地址空间限制。特别是,当运行在支持如此大的物理内存的计算机和操作系统上时,一个数据库实例现在可以访问高达 64GB 的数据库缓冲区。此外,Oracle 数据库 10g 中的该种支持与数据库内核中的数据库缓冲代码紧密集成,从而允许很有效地利用数据库缓冲区可用的大量 RAM。通过将一个数据库配置成具有大量缓冲区,可以减少磁盘的 I/O 活动,这是因为更多数据都缓存在了内存中。这会带来吞吐量和性能的相应提高。

实际上,Windows 版的 Oracle 数据库 10g 利用了内置在所有 Windows 2000 和 Windows Server 2003 内部的 Address Windowing Extensions (AWE)。AWE 是一组 API 调用,它们允许应用程序访问的地址空间比 Windows 2000 和 Windows Server 2003 应用程序通常可访问的 3GB RAM 更大。AWE 接口利用 Intel Xeon 体系结构,提供对一台机器中所有内存进行快速映射/取消映射的接口。

AWE 调用允许大量增加数据库缓冲区的使用,总量最高可以达到 64GB。这项支持完全是内存中的改变,没有更改或修改数据库文件本身。

regedit->HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1 ->新建->字符串值->AWE_WINDOW_MEMORY(值:104857600)


大页面支持 — Oracle 数据库 10g 中的新特性

大页面支持是 Oracle 数据库 10g 的一个新特性,它提升了 32 位和 64 位 Windows Server 2003 上内存密集型数据库实例的性能。通过利用新引入的操作系统支持,Oracle 数据库 10g 现在可以更有效地使用处理器内存寻址资源。特别是,当启用大页面支持时,系统中的 CPU 将能更快地访问 RAM 中的 Oracle 数据库缓冲区。CPU 在对数据库缓冲区寻址时使用 4MB 或 16MB 页面大小,而不是以 4KB(在 32 位机器上)或 8KB(在 64 位机器上)的增量对缓冲区寻址。要启用该新特性,应该在 Windows 注册表的 Oracle 键中将注册表变量 ORA_LPENABLE 设置为 1。当 Oracle 缓冲区缓存为几 GB 时,该特性尤其有用。较小的配置仍可在使用大页面时获得性能提高,但没有在数据库访问大量内存时那么明显。

纤程支持 — Oracle 数据库 10g 中的新特性

Windows 版 Oracle 数据库 10g 新增的另一个性能增强特性是作为 Oracle 数据库基础(与线程相比)的纤程支持。纤程是与线程类似的 Windows 概念,只不过纤程是用户调度而非操作系统调度的。这意味着当在 Oracle 数据库 10g 中启用纤程支持时,就不是操作系统决定运行哪些 Oracle 代码了,而是数据库自己执行纤程的调度。让数据库取代 Windows 执行纤程的调度可以更有效地基于当前数据库状态调度纤程。此外,从 CPU 的角度来看,在纤程之间转换比在线程间转换开销更小,这与线程转换比进程转换开销小的道理相同。虽然当使用纤程运行时不支持某些配置,但对于大多数用户负载,纤程是一种在运行大规模应用程序时提高性能和吞吐量的方法。打开或关闭纤程支持是通过一个配置文件来实现的,而默认的配置仍然是一个基于线程的数据库。

亲合性 (Affinity) 和优先权设置

当在 Windows 中运行时,Oracle 数据库 10g 支持修改数据库进程和进程中单个线程的优先权和亲合性设置。

通过修改 ORACLE_PRIORITY 注册表设置值,数据库管理员可以从总体上为单个后台线程分配不同的 Windows 优先权,也可以为前台线程分配优先权。同样,也可以修改整个 Oracle 进程的优先权。在某些情况下,这可能会略微提高某些应用程序的性能。例如,如果某个应用程序产生了大量日志文件活动,就会增加 LGWR 线程的优先权以便更好地处理所承担的工作。同样,如果大量地使用了复制,那些从远程数据库刷新数据或者向远程数据库刷新数据的线程也会提高其优先权。

与 ORACLE_PRIORITY 的设置非常相似,通过 ORACLE_AFFINITY 的注册表设置,数据库管理员可以将整个 Oracle 进程或进程中的单个线程分配给系统中特定的 CPU 或 CPU 组。同样,在某些情况下,这将有助于提高性能。例如,可以将 DBW0 连接到单个 CPU,这样,它就不会从一个 CPU 转移到另一个 CPU,在某种情况下这会使性能略微得到提高。此外,如果有其他应用程序在系统中运行,可以使用 ORACLE_AFFINITY 将 Oracle 限定在一个可用的 CPU 子集上,这样就可以为其他应用程序提供运行时间。

在 Windows 版 Oracle 数据库 10g 附带的 Windows 专用文档中更详细地介绍了 ORACLE_PRIORITY 和 ORACLE_PRIORITY 参数。

NUMA 支持 — Oracle 数据库 10g 的新特性

使用 Windows Server 2003 中新增的非统一内存访问 (Non-Uniform. Memory Access, NUMA) 支持,Oracle 数据库 10g 现在可以更好地利用高端 NUMA 硬件,其中服务器由数个计算“节点”组成。由于 NUMA 机器中的每个节点以不同的速度访问物理 RAM 的不同部分,因此本质上,数据库可以确定 NUMA 机器的拓扑结构,并相应地调整其调度、内存分配以及内部操作。特别是,当运行在 NUMA 机器的 Windows Server 2003 操作系统上时,Oracle 数据库 10g 在启动时自动将 ORACLE_AFFINITY 设置为适当的默认值,从而最大程度地利用计算机上的资源。此外,在分配 SGA 和 PGA 内存时数据库以 NUMA 敏感的方式分配内存,这样从服务器中所有不同节点就可以尽可能高效地访问计算机内存。最后,配置数据库写入器线程(或纤程)的数量,使每个节点拥有一个,同样可以增强性能。

64 位支持

Oracle 数据库性能及 Windows 可伸缩性的另一个进步是在基于 Intel Itanium 的计算机和 64 位 Windows Server 2003 上的 64 位 Oracle 数据库中实现的。由于是第一个为 64 位 Windows 提供数据库开发人员版的公司,Oracle 通过在发布 64 位 Windows Server 2003 的同一天发布 Oracle 数据库的生产版而继续支持 64 位 Windows 计算。Oracle 开发小组一直与这些技术的供应商紧密合作,从而确保了 Windows 版 Oracle 数据库在 64 位硬件和操作系统上以最佳方式运行。

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

转载于:http://blog.itpub.net/23135684/viewspace-625087/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值