既然 DB2 9 發布了,現在是時候對它的最新特性之一 —— pureXML® 進行測試驅動了。為此,建立了一個類比的經紀業務環境。這個環境具有以下特徵:
高事務量和並發性
小的事務大小
大量小型 XML 文檔
可變的 XML 文檔結構 —— 測試包含符合 FIXML 的資料,FIXML 是 Financial Information eXchangeFIX)標準的金融業 XML 實現。
請記住,XML 應用程式大致分成以下兩類:
面向資料的高資料量,小文檔,這個測試就是針對這種情況)
面向文檔的可變資料量,大文檔)
另外,涉及 XML 的資料庫應用程式也是各種各樣的,包括以下情況:
以 XML 形式發布關係資料
用 XML 全文本搜尋進行內容和文件管理
合并不同的資料來源
表單處理
對 Web 服務和面向服務體繫結構SOA)的後端支援
基於訊息的交易處理和基於 XML 的線上交易處理OLTP),尤其是在金融業中
本文在一個基於 XML 的交易處理情境中進行效能度量,這個情境類比一個面向資料的金融應用程式。測試裝置包括最新的 POWER5 伺服器p5 560Q)以及 AIX 5.3 和 TotalStorage DS8100 磁碟系統。
DB2 9 和 XML
DB2 9 中新的 XML 支援包括純 XML 儲存、XML 索引、XQuery、SQL/XML 和進階的 XML 模式處理。“純” 意味著以標註上類型的樹的形式儲存和處理 XML 文檔,這與商業關聯式資料庫中以前的任何技術都不同。尤其是,pureXML 與將 XML 儲存為大對象BLOB 或 CLOB)或者將 XML 分解到關係表中的技術有顯著差異。更多的資訊請參考以前的文章 “What's new in DB2 Viper” developerWorks,2006 年 2 月)和 “Native XML Support in DB2 Universal Database”。
測試情境:線上經紀業務
這個測試情境對線上經紀業務進行建模。我們曾經協助金融公司採用 XML。這些經曆協助我們理解了他們的資料和處理特徵。這個情境有意地進行了簡化,但是在文檔、事務和 XML 模式方面仍然具有代表性。
這個情境中主要的邏輯資料實體如下見圖 1):
Customer: 一個客戶可以有一個或多個帳號account)。
Account: 每個帳號包含一個或多個持有物holding)。
Holding: 某一證券 的數量。
Security: 某一持有物的標識符例如,股票名稱)。
Order: 為一個帳號 買賣一種證券 的訂單。
文檔處理和大小因文件類型而異:
對於每個客戶,有一個 CustAcc 文檔,其中包含這個客戶的所有客戶資訊、帳號資訊和持有物資訊。CustAcc 文檔的大小在 4KB 和 20KB 之間。
使用 FIXML 4.4 表示訂單。FIXML 是用於交易相關訊息比如買賣訂單)的行業標準 XML 模式www.fixprotocol.org)。訂單文檔的大小是 1KB 到 2KB。訂單文檔有許多屬性,而且資料節點的比例很高。
證券文檔20833 個)使用實際的證券符號和名稱,表示在美國交易的大多數股票和共同基金。它們的大小在 3KB 和 10KB 之間。
使用 Toxgene 資料產生器為這三個模式產生執行個體文檔。關於 Toxgene 資料產生器的更多資訊,請參考 ToXgene - the ToX XML Data Generator。
測試裝置和配置
測試在以下裝置上運行:
處理器: IBM System p5 560Q,使用 8 個處理器的邏輯分區LPAR),這是一個中等的 IBM System p5 560Q。8 個處理器以 1.5GHz 的頻率運行。
記憶體: 32GB
作業系統: AIX 5L v5.3 TL04系統類別型:9116-561,兩個 4 晶片模組)
並發多線程提供 16 個並發執行線程或邏輯處理器。
安裝了一個多重路徑子系統裝置驅動程式SDD)。這個特性可以改進儲存伺服器訪問,比如改進資料可用性和儲存伺服器上跨光纖通道適配器的動態 I/O Server Load Balancer。
儲存: IBM TotalStorage DS8100,通過 4 個光纖通道適配器串連到 LPAR。
AIX 配置
在安裝 DB2 期間,會自動執行所有必需的作業系統參數調整。設定了以下的虛擬記憶體管理參數,從而更好地控制檔案系統快取使用的記憶體量:
vmo -o minperm%=5
vmo -o maxclient%=15
vmo -o maxperm%=15
另外,為了防止在資料裝載期間試圖緩衝輸入檔案,在掛裝命令中使用 -o cio 選項,用 JFS2 檔案系統的並發 I/O 特性掛裝包含原始 XML 輸入檔案的檔案系統。
儲存配置
使用 TotalStorage DS8100 的標準預設配置。DS8100 在內部基本上是一個 POWER5 eServer p5 570。與之前的 ESS 使用 SSA 迴圈不同,DS8100 磁碟互連是一個 Switched Fiber Channel Arbitrated LoopFC-AL),可以提供更快的資料訪問和高可用性。DS8100 配置了 128 個磁碟,在這些磁碟上建立了 16 個卷。在其中,8 個卷64 個磁碟)分配給這個 LPAR。4 個卷使用 6+Parity+Spare 設定為 388GB。另外 4 個卷使用 7+Parity 設定為 452GB。建立了一個跨越所有 8 個卷的卷組VG)。在這個卷組上定義了 DB2 資料庫的所有儲存群組件,包括資料表空間、日誌和備份。表 1 總結了配置。
表 1. 儲存配置
方面 |
配置 |
處理器 |
兩個處理器,每個附帶 pSeries POWER5 1.9 GHz 兩路 CEC |
記憶體緩衝) |
32GB |
磁碟互連 |
Switched FC-AL |
磁碟數量 |
128 個只有 64 個由主機 LPAR 使用) |
磁碟大小/速度 |
73 GB,15000 RPM |
DB2 配置
DB2 9 包含許多新特性,包括新的自治自調整功能。在這個測試中,利用了其中幾種自治功能,包括:
自動儲存管理
自調整記憶體管理
因為啟動了 DB2 的自調整記憶體管理器STMM),它會連續調整一系列 DB2 配置參數的設定。在測試回合期間 STMM 管理和調整的一些關鍵的 DB2 配置參數見表 2。要意識到的重要情況是,STMM 會根據正在啟動並執行工作負載類型比如純插入、純查詢或混合型工作負載)自主地修改這些值。
表 2. 資料庫配置,自調整
DB 配置參數名 |
初始設定 |
SELF_TUNING_MEM |
ON預設值) |
DATABASE_MEMORY |
AUTOMATIC預設值) |
SORTHEAP |
156 |
SHEAPTHRES_SHR |
10000 |
LOCKLIST |
53000 |
MAXLOCKS |
80 |
PCKCACHESZ |
27000 |
緩衝池名 |
初始設定 |
IBMDEFAULTBP |
1100000 |
CATBP |
4000 |
TEMPBP |
1000 |
DBA 只需要執行很少的資料庫配置任務,見表 3。
表 3. 資料庫配置,手工
方面 |
配置/設定 |
資料庫 |
Unicode。所有資料表空間採用自動儲存。DB2 日誌在單獨的條帶上 |
記憶體 |
為所有測試啟用 STMM |
頁面大小 |
16K資料表空間和緩衝池) |
表和索引 |
3 個表:CustAcc、order、security。24 個 XML 索引:10 個在 CustAcc 上,5 個在 order 上,9 個在 security 上 |
資料表空間 |
一共 6 個資料表空間:3 個表各有一個資料表空間,每個表的索引各有一個資料表空間。對所有資料表空間禁用檔案系統快取 |
緩衝池 |
一共 3 個緩衝池:預設緩衝池、用於編目資料表空間的緩衝池和用於暫存資料表空間的緩衝池 |
工作負載
設計、執行並度量了三種 XML 工作負載:
插入唯寫)
查詢唯讀)
混合讀-寫)
這些工作負載都具有很高的並發性。工作負載由一個 Java 驅動程式執行,這個程式產生一個到 n 個並發線程。每個線程類比一個使用者,該使用者串連到資料庫並提交一個事務流,而不考慮次數。每個事務流是以加權方式從一系列事務模板中隨機播放的一系列事務。每個事務被分配一個權重,這個權重決定這個事務在工作負載中的百分比。在運行時,事務中的參數標誌替換為具體的值,這些值是從可配置的隨機值分布和輸入列表中提取的。
插入工作負載:唯寫
插入工作負載用大約 100GB 的原始 XML 資料填充資料庫:
600 萬個 CustAcc 文檔
3000 萬個訂單
20833 種證券
首先,83 個並發使用者插入所有證券。然後,分階段插入 CustAcc 和訂單文檔,從而檢驗插入效能是可伸縮的。在每個階段使用 100 個並發使用者,見表 4。
表 4. 分階段的資料庫填充
階段 |
資料庫中的 CustAcc 文檔數量 |
資料庫中的訂單文檔數量 |
1 |
100,000 |
500,000 |
2.1 |
200,000 |
1,000,000 |
2.2 |
300,000 |
1,500,000 |
2.3 |
400,000 |
2,000,000 |
2.4 |
500,000 |
2,500,000 |
2.5 |
600,000 |
3,000,000 |
3.1 |
1,000,000 |
5,000,000 |
3.2 |
1,500,000 |
7,500,000 |
3.3 |
2,000,000 |
10,000,000 |
4.1 |
2,500,000 |
12,500,000 |
4.2 |
3,000,000 |
15,000,000 |
4.3 |
3,500,000 |
17,500,000 |
4.4 |
4,000,000 |
20,000,000 |
5.1 |
4,500,000 |
22,500,000 |
5.2 |
5,000,000 |
25,000,000 |
5.3 |
5,500,000 |
27,500,000 |
5.4 |
6,000,000 |
30,000,000 |