Share nothing理論

Share nothing理論

開發者在線 Builder.com.cn 更新時間:2007-10-06作者:中國IT實驗室 來源:中國IT實驗室

本文關鍵詞: Oracle

  Share nothing理論在數據庫設計和優化中的實踐應用

  首先介紹share nothing概念。最早接觸它是在 DataBaseManagentSystem一書的並行數據庫章節中。

  並行數據庫要求儘可能的去並行執行數據庫操作,從而提高性能。在並行計算體系結構實現中有很多可選的體系結構。包括:

  share-memory:多個cpu共享同一片內存,cpu之間通過內部通訊機制(interconnection network)進行通訊;

  share-disk  : 每一個cpu使用自己的私有內存區域,通過內部通訊機制直接訪問所有磁盤系統。

  Share-nothing: 每一個cpu都有私有內存區域和私有磁盤空間,而且2個cpu不能訪問相同磁盤空間,cpu之間的通訊通過網絡連接。3種體系結構如下圖:

  Share disk                         share nothing                          share memory

3種計算機體系結構

  shared memory 體系結構的cpu之間通過主存進行通訊,具有很高的效率;但當更多的cpu被添加到主機上時,內存競爭contetion就成爲瓶頸,cpu越多,瓶頸越厲害。Shared disk也存在同樣問題,因爲磁盤系統由 Interconnection Network 連接在一起。

  Shared memory和shared disk的基本問題是interference:當添加更多的cpu,系統反而減慢,因爲增加了對內存訪問(memroy access)和網絡帶寬(network bandwidth)的競爭。這樣shared nothing體系得到了廣泛的推廣。

  Shared nothing體系是數據庫穩定增長,當隨着事務數量不斷增加,增加額外的cpu和主存就可以保證每個事務處理時間不變。

  總的來說,shared nothing降低了競爭資源的等待時間,從而提高了性能。反過來,如果一個數據庫應用系統要獲得良好的可擴展的性能,它從設計和優化上就要考慮shared nothing體系結構。Share nothing means few contention.它在oracle數據庫設計和優化上有很多相同之處。

  Share nothing 對數據庫應用主要體現在多用戶並行訪問系統時候,優化數據庫操作的response time上。如果數據庫操作能夠順利獲得所需要的資源,不發生等待事件,自然可以減少response time. 同時也體現在操作儘量少佔用資源上,避免浪費時間在無用功上。

  如Sequence的實現方式。如果使用Oracle Sequence ,oracle可以緩存sequence,這樣最小的降低多個Session獲得唯一序列的競爭。如果設計爲實體化表存儲sequence value方式,每次獲得sequence value都需要鎖住紀錄,這樣產生了嚴重資源競爭,導致hot block.同時增加了Response time.

  如存儲過程的使用,也體現着share nothing原理。將多個sql 封裝在存儲過程中,避免了不必要的SQL*Net message from/to client, SQL*Net data from/to client 等等待事件。這體現了設計良好的應用使用最少的資源完成工作。

  如在優化sql/表結構設計上,share nothing意味着降低查詢的執行成本―― I/O和cpu usage.這主要體現在降低consistent gets上。

  在物理設計上,share nothing體現在避免磁盤熱點塊,協調進程對磁盤的競爭,平衡磁盤利用率上。

發佈了36 篇原創文章 · 獲贊 24 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章