Oracle利用Windows的高階特性增強效能

尛樣兒發表於2010-01-13

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章