RAC学习笔记(2)-DB2和Oracle体系结构
閱讀RAC和DB2的區別(資料來源為Oracle方面,所以可能有偏頗,我會再去Ibm那里找Db2與Oracle的對比,呵呵)
幾個體系結構
Shared Nothing 結構
https://p-blog.csdn.net/images/p_blog_csdn_net/eting1987/EntryImages/20090719/RAC2.png
數據庫被分區到集群的每個節點上。每個節點都有一個數據的唯一子集(保存著所有數據的一部分),所有訪問這些數據的都要到這個節點。數據并行操作的性能,取決于數據被合理的分區。每個分區被各自的處理器進行管理。
系統可以使用雙磁盤子系統,保留一個物理備份,來防止某個節點錯誤影響系統可用性。不過此時依然會顯著的降低整體性能。
DB2的Shared-Nothing
DB2不是純粹的Shared_Nothing, 它為了可用性,使用了Shared-Disk的數據庫,它的Shared-Nothing指的是在運行期間對數據的所有權,而不是物理上的關系。如果某個子集使用的皮率很高,則會降低整個系統的吞吐量和性能。
Orace 的RAC則讓磁盤可以被所有的節點鏈接來解決這個問題。
Shared Disk 結構
https://p-blog.csdn.net/images/p_blog_csdn_net/eting1987/EntryImages/20090719/RAC3.png
數據庫文件在所有的節點間邏輯共享。每個實例都可以訪問所有的數據。共享磁盤訪問可以通過硬件鏈接或者操作系統層提供一個所有節點上設備的單一視圖。如果多個節點同時鏈接相同的數據塊,事務共享磁盤數據庫系統使用磁盤I/O來同步多個節點的數據訪問,比如通過一個寫入塊的鎖來防止其他節點訪問同樣的數據塊。
磁盤可以進行分區管理,不過如果沒有很好的分區,則會顯著的影響性能,并增加維護連續數據緩沖區的開銷。
RAC的Shared-Cache結構
https://p-blog.csdn.net/images/p_blog_csdn_net/eting1987/EntryImages/20090719/RAC4.png
RAC使用了Cache Fusionb, 一個共享一致性緩沖技術d的技術,通過高速的內部連接的來維持共享一致性緩沖。Cache Fusion利用了集群里面所有節點的緩沖來服務于數據庫事務。
在RAC里更新操作不需要磁盤I/O來同步數據,引文本地節點可以從集群的別的節點緩沖里獲得需要的數據。
部署
Oracle不僅提供了一個單一的標準的Oracle數據庫給用戶,也包括維護工具和把單個數據庫的經驗用到真個集群里面。所有的標準備份還原操作適用于RAC.所有的SQL操作,包括DDL語言和完整性檢查,都適用于單個實例或者集群配置。
從一個單一的實例可以通過EM(Enterprise Manager 11g)工具簡單的融合進入一個已經創建,并且RAC已經安裝的系統。數據文件無需修改。增加或者刪除一個節點,不需要任何的數據修改或者分區。
DB2則復雜的多,需要在一個新增的幾點上移動數據。所有數據需要先卸載然后在在每個邏輯節點上重新加載。每次在集群增加一個節點都需要分區。
DB2的分區
分區指邏輯的節點和他擁有的數據。每個分區有自己的緩沖池(Buffer pool), 包緩沖(oackage cache)等。 一個分區只能直接訪問數據的一個子集。
給一個擁有上千的表格的應用進行分區是一個復雜的任務。而且應用可能經常變化。為了保證負載在集群環境所有節點的均衡,經常需要重新分區。
DB2的節點組(nodegroups)
每個節點、分區被指派一個節點組。每個表空間(Tablespace)被指派一個節點組。當表格創建后,將直白一個由一個或多個列組合成的分區關鍵字。所有插入到表格的數據,數據行的分區值被Hash到一個Hash Table里面。然后根據當前的分區映射指派一個分區。默認的分區映射在一個節點組的各分區間均分數據。
盡管DB2在沒有指定分區關鍵字(Key)是,會自動根據主鍵或者第一個不是很長的字段進行分區,必須為一個訪問量大的表格檢測一個最佳的分區關鍵字的情況依然可能在幾個競爭參數時發生。
分區關鍵字需要均勻的在所偶的邏輯節點上分布數據。這需要熟悉表格的定義和列的使用方法。在某些情況下,及時熟悉也不可能做到均勻分布。
在關聯(Join)字段,你需要小心的選擇分區關鍵字,來實現(co-located) Join,也就是可以在同一個節點執行而不需要其它的內部分區的通訊。 Co-locate 是 DB2的性能關鍵。在一些情況下,不能Co-locate所有的關聯數據。雖然現在的告訴內部數據鏈接加少了其重要性,但減少信息的流通量依然對于居群數據庫性能非常重要。
存取分區數據,(比如表格大小,經常查詢用到的),需要檢測分區關鍵字,如果沒有合適的 co-location 列,你可以在每個節點創建一個備份。當然更新所有復制的數據將導致性能降低。
所有的唯一鍵和主鍵,是分區關鍵字的超集(SuperSet).也就意味著,如果你的強制唯一約束的列不是分區列,你的應用需要改變。
DB2提供了 Design Advisor 在創建數據庫或者合并非分區數據庫到分區數據庫時如何分區的推薦和建議。不過最后還是得DBA手工進行實現。提供的建議也需要DBA根據負載情況進行調整,避免數據傾斜和熱點區域,他們都影響性能。
總結
以上是生活随笔為你收集整理的RAC学习笔记(2)-DB2和Oracle体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 青柠起始页样式书写+清新风格登录界面——
- 下一篇: p5绘图板