OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能
有個(gè)誤區(qū):Oracle的表分區(qū)會(huì)增加查詢性能,因?yàn)橹恍枰诓糠謹(jǐn)?shù)據(jù)里查了;會(huì)增加降低插入性能,因?yàn)槎嗔艘徊街付ǚ謪^(qū)的操作。實(shí)際情況并非如此,至少在OLTP系統(tǒng)中,分區(qū)不一定會(huì)增加查詢性能,但很可能會(huì)增加插入性能。
引用Tom大神的《Oracle編程藝術(shù)》的一段話,很好地解釋了分區(qū)對OLTP系統(tǒng)的性能影響:
在OLTP系統(tǒng)中,不應(yīng)該把分區(qū)當(dāng)作一種大幅改善查詢性能的方法。實(shí)際上,在一個(gè)傳統(tǒng)的OLTP系統(tǒng)中,你必須很小心地應(yīng)用分區(qū),提防著不要對運(yùn)行時(shí)性能產(chǎn)生負(fù)面作用。在傳統(tǒng)的OLTP系統(tǒng)中,大多數(shù)查詢很可能幾乎立即返回,而且大多數(shù)數(shù)據(jù)庫獲取可能都通過一個(gè)很小的索引區(qū)間掃描來完成。因此,以上所列分區(qū)性能方面可能 的主要優(yōu)點(diǎn)在OLTP系統(tǒng)中表現(xiàn)不出來。分區(qū)消除只在大對象全面掃描時(shí)才有用,因?yàn)橥ㄟ^分區(qū)消除,你可以避免對對象的很大部分做全面掃描。不過,在一個(gè)OLTP環(huán) 境中,本來就不是對大對象全面掃描(如果真是如此,則說明肯定存在嚴(yán)重的設(shè)計(jì)缺陷)。即使對索引進(jìn)行了分區(qū),就算是真的能在速度上有所提高,通過掃描較小 索引所得到的性能提升也是微乎其微的。如果某些查詢使用了一個(gè)索引,而且它們根本無法消除任何分區(qū),你可能會(huì)發(fā)現(xiàn),完成分區(qū)之后查詢實(shí)際上運(yùn)行得反而更慢 了,因?yàn)槟悻F(xiàn)在要掃描5、10或20個(gè)更小的索引,而不是一個(gè)較大的索引。稍后討論各種可用的分區(qū)索引時(shí)還會(huì)更詳細(xì)地討論這個(gè)內(nèi)容。盡管如此,有分區(qū)的OLTP系統(tǒng)確實(shí)也有可能得到效率提示。例如,可以用分區(qū)來減少競爭,從而提高并發(fā)度。可以利用分區(qū)將一個(gè)表的修改分布到多個(gè)物理分區(qū)上。并不是只有一個(gè)表段和一個(gè)索引段,而是可以有10個(gè)表分區(qū)和20個(gè)索引分區(qū)。這就像有20個(gè)表而不是1個(gè)表,相應(yīng)地,修改期間就能減少對這個(gè)共享資源的競爭。事實(shí)上在一個(gè)OLTP系統(tǒng)中,查詢已經(jīng)有以下特點(diǎn):即索引訪問相當(dāng)快,因此,分區(qū)不會(huì)讓索引訪問的速度有太大的提高(甚至根本沒有任何提高)。這并不是說要絕對避免在OLTP系統(tǒng)中使用分區(qū);而只是說不要指望通過分區(qū)來提供大幅的性能提升。盡管有效情況下分區(qū)能夠改善查詢的性能,但是這些情況在大多數(shù)OLTP應(yīng)用中并不成立。不過在OLTP系統(tǒng)中,你還是可以得到另外兩個(gè)可能的好處:減輕管理負(fù)擔(dān)以及有更高的可用性上面這段話在實(shí)際項(xiàng)目中得到了驗(yàn)證。項(xiàng)目中使用了Oracle RAC環(huán)境,在原先的AWR報(bào)表的Top Timed Event中,gc buffer busy高達(dá)70%,而DB CPU只有5%,buffer nowait只有93%,然后很快鎖定到TOP等待對象均為索引對象。當(dāng)時(shí)另一個(gè)有趣的現(xiàn)象,單機(jī)的響應(yīng)時(shí)間只有RAC的40%。
解決上面問題的方法有:
- 去除不必要的索引
- 全局索引分區(qū),并把分區(qū)分散到多個(gè)表空間中,每個(gè)表空間又有多個(gè)數(shù)據(jù)文件
- 自增長序列索引改為反向索引
這么做以后,效果顯著,Top Timed Event中,gc buffer busy已經(jīng)看不到了,其他集群等待時(shí)間的總和也不超過總時(shí)間的10%,DB CPU已經(jīng)超過了50%,提交SQL的執(zhí)行時(shí)間提高了10倍,buffer nowait也提高到了99.99%。再通過autotrace觀察查詢性能,發(fā)現(xiàn)對于查詢單值的情況,響應(yīng)時(shí)間幾乎沒有變化,而且也不必在查詢時(shí)指定分區(qū)。
轉(zhuǎn)載于:https://www.cnblogs.com/todsong/archive/2012/10/10/2719098.html
總結(jié)
以上是生活随笔為你收集整理的OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net 中chartlet 统计
- 下一篇: GRUB引导另一个主分区