資料庫叢集伺服器系統效能瓶頸分析(zt)

zhouwf0726發表於2019-04-18

1.引言
資料庫叢集伺服器產品採用叢集作為基礎的體系架構。由於資料
庫叢集伺服器平臺上部署的是Oracle RAC 資料庫, 所以我們就從
Oracle RAC 資料庫的通訊機制開始分析。RAC 作為Oracle 資料庫的
一個元件是從Oracle 9i 版本開始的, 其目的是最大限度的挖掘叢集
這一體系架構的潛力。在RAC 通訊機制中, 為了更多的消除磁碟IO
對系統效能的影響, Oracle RAC 通過一個叫Cache Fusion( 快取融合)
的機制, 即依靠軟體自身的機制來把各個節點的資料庫記憶體虛擬成一
個大的共享記憶體供Oracle 使用。
簡單而言, 資料庫軟體就是提供了一種對資料進行操作的平臺,
因而資料在磁碟、記憶體、處理器之間移動過程中所產生的瓶頸也是最
終系統體現出來的瓶頸。對於Oracle RAC 而言, 是如何對資料進行訪
問和操作的呢? 在RAC 節點相互通訊過程中, 某一正在工作的處理器
首先從自己節點所在記憶體讀寫資料, 如沒有會通過高速互連通道向其
他節點記憶體讀寫( 程式間通訊IPC) , 最後才向共享磁碟讀寫。這種數
據訪問順序的採用是因為從記憶體讀取資料的延遲要低於從其他節點
記憶體讀取資料的延遲, 而從其它節點讀取資料的延遲要低於從共享磁
盤讀取資料的延遲。這裡涉及到幾個關鍵的因素, 即記憶體訪問、程式間
通訊、磁碟IO 訪問, 下面將對這幾個因素逐一加以分析。
2.記憶體訪問
我們知道, 在資料庫訪問過程中, 資料是先從磁碟空間讀入記憶體,
然後供CPU 來調配使用的, 因而記憶體空間越大, 需要訪問的資料就能
更多的放在記憶體中, 從而提高實際的資料訪問處理速度。造成記憶體訪
問空間限制的原因在於對記憶體定址空間的限制, 在資料庫叢集伺服器
中, 節點採用的是32 位Xeon 處理器, 作業系統的有效記憶體定址空間
為4G, 除去作業系統自身所佔資源, 供Oracle 所支配的記憶體空間也就
在2G 左右。
為打消由於記憶體空間引起的系統瓶頸, 通常記憶體為滿配, 即以單
條最大容量的記憶體插滿伺服器的記憶體槽。以IA 架構伺服器的TPC- H
測試為例, IA 架構伺服器產品有16 個記憶體槽, 因而配置了16 個2G
的記憶體條, 整個系統記憶體空間達32G。但前提是系統支援64 位定址
( SP3000 採用64 位安騰處理器, 支援64 位定址空間) , 在32 位處理
器系統上就無能為力了。
不過記憶體訪問空間的瓶頸現在已經得到解決, 在Intel 推出Xeon
EM64T 之後, 對記憶體的定址空間突破了4G 的限制, 從而作業系統和
資料庫軟體就不存在記憶體支配空間的限制了。未來資料庫叢集伺服器
的節點記憶體將不再受限於4G 空間的限制, 將在一定程度上緩解由於
記憶體空間限制而引起的系統效能瓶頸的產生。
3.程式間通訊
從Oracle RAC 資料庫節點間的通訊機制可以看出, 資料需要頻
繁的通過高速互連裝置進行互動, 因而高速互連裝置效能的好壞也是
影響Oracle RAC 效能提升的主要瓶頸之一。目前比較常見的是採用
千兆乙太網作為RAC 節點間的高速互連裝置, 但從實際執行的情況
來看, 效能指標並不理想, 甚至出現了採用RAC 叢集系統的效能甚至
比採用單機的效能還要低的現象。由於RAC 節點間通訊機制是以
UDP 協議為基礎開發的, 而UDP/IP 協議棧的通訊延遲較高, 隨著
RAC 節點數目的增加, 節點間頻繁的通訊會導致Oracle RAC 資料庫
整體效能急劇下降, 所以尋求具有更高通訊效能的高速互連網路或協
議成為改善Oracle RAC 效能的手段之一, 而Oracle 公司為此問題的
解決也在做著不懈的努力。
InfiniBand 技術的出現使得RAC 通訊效能的明顯改善成為了可
能。Infiniband 技術的最大的特點就是擁有較高的通訊頻寬和較低的
通訊延遲, 在InfiniBand 的幾個本地協議中, uDAPL 協議是效率最高
的, 其頻寬高達6.4Gb/s, 延遲低至8us( 2004 年資料) , 但需要上層應用依據此協議重新改寫, 對於Oracle 這樣的資料庫系統, 工作量之大
可想而知。
與此同時, 基於InfiniBand 技術的另一個協議—— RDS 協議, 逐
漸得到了Oracle 的青睞。RDS 協議的全稱為Reliable Datagram
Sockets, 在InfiniBand 技術框架中是為取代UDP 協議而產生的( 正如
SDP 協議取代TCP 協議一樣) 。通過採用RDS 協議, Oracle RAC 資料
庫僅需改寫很少部分程式碼即可, 與uDAPL 協議相比, RDS 協議的效能
比前者略有降低( 5%左右) , 但卻極大的簡化了Oracle RAC 的開發工
作。經過前後5 個月的短暫時間, Oracle 即完成了基於RDS 協議的開
發和穩定性測試等工作, 在即將釋出的Oracle RAC 10.2.0.2 版本中,
將會實現對RDS 協議的全面支援。
採用RDS 協議後, 系統效能到底提升到什麼程度呢? 採用RDS 協
議後, 節點間通訊效能確有明顯的提高: 與千兆乙太網互連( TCP/IP)
相比, 節點資料吞吐量提高了一倍, 與此同時CPU 利用率和節點通訊
物理延遲降低了一倍。
4.磁碟IO 訪問
從過去20 年間到現在, CPU 處理速度增加了570 倍,而硬碟速度
僅增加了20 倍, 儲存系統的硬碟容量增長幅度遠大於硬碟轉速的增
長, 使硬碟單位容量的I/O 效能越來越低, 磁碟IO 效能已經成為嚴重
制約系統效能提升的瓶頸。伴隨著資料庫應用的快速發展、業務和數
據庫使用者的逐年擴大導致的併發容量暴增給本來已經是系統瓶頸的
儲存系統雪上加霜, 即使不斷的採取措施優化裝置, 無非是想自己的
硬碟轉得快一點, 但到最後還是收效甚微。
為了最大限度的降低磁碟IO 訪問瓶頸, 通常是採用增加磁碟數
量的方式, 以提高磁碟IO 的並行訪問效率。單純的增加磁碟的轉速以
提高IO 訪問效能, 或者增加磁碟數量提高並行訪問效率的做法, 都有
一定的侷限性。到底該如何解決儲存系統效能問題呢?
近幾年來, 電子儲存裝置Solid State Disk(固態磁碟)的出現為解
決這一技術難題提供了有效的解決方案, 並已經呈現出有逐步取代傳
統磁介質儲存裝置(機械裝置)的趨勢。SSD 採用DDRRAM作為儲存介
質、仿效傳統磁碟驅動器的設計、可被各種作業系統的檔案系統工具
進行卷設定和管理, 並提供工業標準的PCI 和FC 介面用於連線主機/
伺服器或儲存網路的儲存裝置, 可分為SSD 驅動器和SSD 盤陣列二
大塊, 是一種真正高效能的儲存。
固態硬碟丟棄了傳統硬碟的機械特性, 資料查詢時間、延遲時間
和尋道時間幾乎為零。眾所周知, 磁碟訪問時間=指令到達時間+尋道
時間+命中時間+機械延遲, 而硬碟的機械特性嚴重限制了資料輸入輸
出的效能。採用SSD 方式的固態硬碟, 效能要好於HDD 硬碟100 倍
以上, 效能提升非常明顯。
5.結束語
記憶體訪問、程式間通訊、磁碟IO 訪問三種因素所產生的硬體瓶頸
構成了Oracle RAC 資料庫整體效能的瓶頸, Intel EM64T 體系架構的
晶片組、高頻寬低延遲的互聯裝置以及固態硬碟的出現已經使系統性
能大大提升。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-485740/,如需轉載,請註明出處,否則將追究法律責任。

相關文章