Oracle Cluster 應用情境分析

來源:互聯網
上載者:User

Oracle中普通的表稱為堆表(heap table),堆表中的資料是無序存放的,往往在使用一段時間後,資料就變得非常無序。如所示,索引中相同的key對應的資料存放在不同的block中,這時,如果要通過索引查詢某個key的資料,就需要訪問很多不同的block,代價非常高。

Oracle中有一個統計資訊clustering factor,它就是用來反映索引中索引值在表中的有序程度,clustering factor的值如果接近表的blocks的數量,表明資料在表中的是有序的,而如果這個值接近表的行數,則表明表中的資料是無序存放的。因為clustring factor對於索引查詢的影響很大,所以在CBO計算cost時,這個值非常重要。

我們可以通過建立一個單表的hash cluster,將相同索引值的資料物理存放在一起,達到提高效能的目的。建立cluster有兩個最重要的參數:hashkeys和size,前者表示cluster中有多少個不同的索引值,後者表示每個索引值需要分配的空間。因為hash cluster的空間是預先分配的,這兩個值的正確設定對cluster的效能影響非常大。hashkeys設定過大,會造成空間浪費,而如果設定過小,則會產生大量的hash碰撞,極大影響效能。size也是一樣,設定過大會浪費空間,而設定過小,資料超過預先分配的空間時,會通過連結方式存放在溢出段中,影響效能。而這兩個值一旦設定,就無法更改,除非重建cluster。

hash cluster簡單的說就是通過預先分配空間的方式,將相同key的資料存放在一起,以提高查詢效能的一種手段,所以準確的設定hashkeys和size參數是使用hash cluster的關鍵,使用的前提是key的數量是可以估算的,而且每個key的資料是基本平均的。但是,在實際使用的環境中,資料量的變化往往是不可預知的,這也造成hash cluster的應用情境非常有限。

Index cluster和hash cluster類似,只不過index cluster是通過索引實現資料定位,而且index cluster的空間是動態分配的,但是同樣存在正確設定size參數的問題,設定過大過小都會產生效能問題。

個人觀點:Oracle cluster更適合相對待用資料的儲存,對於OLTP應用來說,cluster在大部分情況下都不太適用,因為我們都無法預估到資料量的變化,根本無法合理設定cluster的參數。

任何技術都要找到合適的應用情境,有利一定有弊,有些技術確實是看上去很美,但是並不實用,而有些方案看上去很土,但是可以解決問題,找到最合適的就好。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.