專利名稱::一種對(duì)于Oracle大數(shù)據(jù)量存儲(chǔ)的優(yōu)化方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種基于Oracle數(shù)據(jù)庫在大數(shù)據(jù)量存儲(chǔ)情況下,對(duì)于數(shù)據(jù)存儲(chǔ)提供一種優(yōu)化解決方案,提高數(shù)據(jù)安全與查詢效率。具體地說是一種對(duì)于Oracle大數(shù)據(jù)量存儲(chǔ)的優(yōu)化方法。
背景技術(shù):
:伴隨著3G網(wǎng)絡(luò)的逐步擴(kuò)張,電信網(wǎng)絡(luò)不斷發(fā)展,站點(diǎn)、小區(qū)數(shù)量進(jìn)一步增加,通信業(yè)務(wù)數(shù)據(jù)規(guī)模也越來越大,這就對(duì)于數(shù)據(jù)存儲(chǔ)的安全及查詢速度上有進(jìn)一步的要求。并且對(duì)于通信行業(yè)來說,實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)性能數(shù)據(jù)對(duì)于客戶感知甚至預(yù)測(cè)網(wǎng)絡(luò)風(fēng)險(xiǎn)是非常重要的。數(shù)據(jù)量的增大無疑會(huì)延遲數(shù)據(jù)的查詢,導(dǎo)致數(shù)據(jù)實(shí)時(shí)性不能保證。為了加快數(shù)據(jù)展現(xiàn)速度,優(yōu)化存儲(chǔ)顯得非常必要。傳統(tǒng)數(shù)據(jù)庫存儲(chǔ)是將數(shù)據(jù)全部存儲(chǔ)在表中,單靠索引來提高查詢速度。但是對(duì)于有限的磁盤I/o來說,大數(shù)據(jù)量情況下依然會(huì)發(fā)生數(shù)據(jù)阻塞。所以選取好的存儲(chǔ)策略,平衡I/o分配,對(duì)于實(shí)時(shí)數(shù)據(jù)的展現(xiàn)是非常必要的。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種對(duì)于Oracle大數(shù)據(jù)量存儲(chǔ)的優(yōu)化方法。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,采用Oracle分區(qū)策略,以提高數(shù)據(jù)查詢速度,,Oracle提供的分區(qū)方式有Range、List、Hash以及上述幾種方法的組合,根據(jù)電信網(wǎng)絡(luò)數(shù)據(jù)的特點(diǎn),每天都會(huì)有性能數(shù)據(jù)產(chǎn)生,所以按照日期進(jìn)行Range分區(qū)是首選,然后將不同周期的日期分區(qū)劃分在不同的物理磁盤上;在電信領(lǐng)域,網(wǎng)元是根據(jù)地區(qū)來進(jìn)行劃分的,在時(shí)間上劃分分區(qū)之后,根據(jù)網(wǎng)元所屬的地區(qū)不同按地區(qū)再進(jìn)行Oracle子分區(qū),這樣在時(shí)間和空間兩個(gè)維度上進(jìn)行分區(qū)之后,要定位一個(gè)網(wǎng)元實(shí)體在某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)就非常簡(jiǎn)單了;具體優(yōu)化方法如下在數(shù)據(jù)庫中建立多個(gè)數(shù)據(jù)表空間,將表分區(qū)分散在各個(gè)表空間中,然后將表空間的數(shù)據(jù)文件分散在不同的磁盤上,這樣就保證了各個(gè)分區(qū)的數(shù)據(jù)分散在各個(gè)磁盤上,查詢數(shù)據(jù)只從特定的表分區(qū)中查詢,保證并發(fā)時(shí)可以從各個(gè)磁盤上獲取數(shù)據(jù),平衡了1/0的吞吐,具體sql如下CreatetableINDICAT0R_20000(MOENTITYIDVARCHAR2(128),STARTDAYNUMBER(8)notnull,STARTTIMENUMBER(6)notnull,PERIODNUMBERnotnull,BHIDVARCHAR2(1200),INSTANCEIDNUMBER(2),INDICAT0R_20000_001NUMBER,INDICAT0R_20000_002NUMBER,INDICAT0R_20000_003NUMBER,INDICAT0R_20000_004NUMBER,INDICAT0R_20000_005NUMBER,INDICAT0R_20000_006NUMBER,INDICAT0R_20000_007NUMBER,INDICAT0R_20000_008NUMBER,INDICAT0R_20000_009NUMBER,INDICAT0R_20000_010NUMBER)partitionbyrange(startday)subpartitionbylist(moentityid)(partitionp_20000_20110816valueslessthan(20110817)(subpartitionp_20000_20110816_rlvalues(,mol,),subpartitionp_20000_20110816_r2values(default)))tablespacetabspacel;通過以上sql,建立了在tabspacel表空間的表INDICAT0R_20000,這個(gè)表是通過日期進(jìn)行Range分區(qū),然后在每個(gè)分區(qū)中根據(jù)地區(qū)來區(qū)分子分區(qū),首先使分區(qū)分散在不同的表空間內(nèi),然后根據(jù)時(shí)間和空間來逐級(jí)縮小查詢范圍,以提高查詢速度。本法明的有益效果是采用本文檔的Oracle存儲(chǔ)策略,可以有效地在大數(shù)據(jù)量情況下提高查詢速度,節(jié)約成本,使系統(tǒng)性能得到大幅度提升??梢詫?duì)于Oracle大數(shù)據(jù)量存儲(chǔ)的優(yōu)化方案。支持大數(shù)據(jù)量的存儲(chǔ)。提高大數(shù)據(jù)量環(huán)境下的數(shù)據(jù)查詢速度。提高數(shù)據(jù)存儲(chǔ)安全性。為了解決這個(gè)問題,就需要在系統(tǒng)并行訪問的情況下平衡1/0,這樣就需要將一個(gè)表劃分開。如果多個(gè)程序并行訪問數(shù)據(jù)不是指向的同一個(gè)分區(qū),可以把這些分區(qū)劃分到不同的物理磁盤上。放在不同的磁盤上,可以有效降低磁盤1/0沖突,由以前的單通道傳輸數(shù)據(jù),變成多通道傳輸,最大發(fā)揮Oracle分區(qū)表的優(yōu)勢(shì),此時(shí)磁盤的吞吐量就會(huì)成倍提升,如附圖I所示。同時(shí)分區(qū)劃分在不同的磁盤上,也可以保護(hù)數(shù)據(jù)的作用,如果有一塊磁盤出了問題,也不會(huì)影響其他數(shù)據(jù)的訪問,提高了數(shù)據(jù)的安全性。附圖I為Oracle大數(shù)據(jù)量存儲(chǔ)的優(yōu)化示意圖。具體實(shí)施例方式參照說明書附圖對(duì)本發(fā)明的方法作以下詳細(xì)地說明。Oracle本身提供了分區(qū)表的概念,就是用來將原本大數(shù)據(jù)量分散在不同的表分區(qū)中,這樣查詢的時(shí)候僅僅在分區(qū)中查詢而不必對(duì)整個(gè)表進(jìn)行查詢。通過劃分分區(qū),可以將百萬、千萬級(jí)的數(shù)據(jù)量拆分成小部分,每次在一小部分中進(jìn)行查詢操作。但是,在有限的磁盤I/o情況下,多個(gè)程序在并行訪問下系統(tǒng)1/0就會(huì)成為瓶頸。為了解決這個(gè)問題,就需要在系統(tǒng)并行訪問的情況下平衡1/0,這樣就需要將一個(gè)表劃分開。如果多個(gè)程序并行訪問數(shù)據(jù)不是指向的同一個(gè)分區(qū),可以把這些分區(qū)劃分到不同的物理磁盤上。放在不同的磁盤上,可以有效降低磁盤I/o沖突,由以前的單通道傳輸數(shù)據(jù),變成多通道傳輸,最大發(fā)揮Oracle分區(qū)表的優(yōu)勢(shì),此時(shí)磁盤的吞吐量就會(huì)成倍提升,如附圖I所示。同時(shí)分區(qū)劃分在不同的磁盤上,也可以保護(hù)數(shù)據(jù)的作用,如果有一塊磁盤出了問題,也不會(huì)影響其他數(shù)據(jù)的訪問,提高了數(shù)據(jù)的安全性。采用Oracle分區(qū)策略,可提高數(shù)據(jù)查詢速度,需要采取好的分區(qū)策略。Oracle提供的分區(qū)方式有Range、List、Hash以及上述幾種方法的組合等。根據(jù)電信網(wǎng)絡(luò)數(shù)據(jù)的特點(diǎn),每天都會(huì)有性能數(shù)據(jù)產(chǎn)生,所以按照日期進(jìn)行Range分區(qū)是首選。然后可以將不同周期的日期分區(qū)劃分在不同的物理磁盤上。比如數(shù)據(jù)在數(shù)據(jù)庫中保存周期是I年,則可以將分區(qū)按季度劃分在不同磁盤上;數(shù)據(jù)保存周期是I個(gè)月,則可以將分區(qū)按周劃分在不同的磁盤上等。此外,在電信領(lǐng)域,網(wǎng)元是可以根據(jù)地區(qū)來進(jìn)行劃分的。在時(shí)間上劃分分區(qū)之后,可以根據(jù)網(wǎng)元所屬的地區(qū)不同按地區(qū)再進(jìn)行Oracle子分區(qū)。這樣在時(shí)間和空間兩個(gè)維度上進(jìn)行分區(qū)之后,要定位一個(gè)網(wǎng)元實(shí)體在某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)就非常簡(jiǎn)單了。在電信領(lǐng)域中,小區(qū)或載頻級(jí)別的網(wǎng)元數(shù)據(jù)數(shù)據(jù)量很大,在基站數(shù)10000左右,小區(qū)可以達(dá)到30000-40000的數(shù)據(jù)量,如果按一天24小時(shí)60分鐘粒度的數(shù)據(jù)來計(jì)算,每天就會(huì)有百萬級(jí)別的數(shù)據(jù)需要存儲(chǔ),索引每天數(shù)據(jù)更新開銷都比較大,如果不進(jìn)行分區(qū),數(shù)據(jù)查詢速度會(huì)成為瓶頸。下面結(jié)合電信領(lǐng)域網(wǎng)絡(luò)管理進(jìn)行具體應(yīng)用。可以在數(shù)據(jù)庫中建立多個(gè)數(shù)據(jù)表空間,將表分區(qū)分散在各個(gè)表空間中,然后將表空間的數(shù)據(jù)文件分散在不同的磁盤上,這樣就保證了各個(gè)分區(qū)的數(shù)據(jù)分散在各個(gè)磁盤上,查詢數(shù)據(jù)只從特定的表分區(qū)中查詢,保證并發(fā)時(shí)可以從各個(gè)磁盤上獲取數(shù)據(jù),平衡了I/o的吞吐。具體sql如下CreatetableINDICAT0R_20000(MOENTITYIDVARCHAR2(128),STARTDAYNUMBER(8)notnull,STARTTIMENUMBER(6)notnull,PERIODNUMBERnotnull,BHIDVARCHAR2(1200),INSTANCEIDNUMBER(2),INDICAT0R_20000_001NUMBER,INDICAT0R_20000_002NUMBER,INDICAT0R_20000_003NUMBER,INDICAT0R_20000_004NUMBER,INDICAT0R_20000_005NUMBER,INDICAT0R_20000_006NUMBER,INDICAT0R_20000_007NUMBER,INDICAT0R_20000_008NUMBER,INDICAT0R_20000_009NUMBER,INDICAT0R_20000_010NUMBER)partitionbyrange(startday)subpartitionbylist(moentityid)(partitionp_20000_20110816valueslessthan(20110817)(subpartitionp_20000_20110816_rlvalues(,mol,),subpartitionp_20000_20110816_r2values(default)))tablespacetabspacel;通過以上sql,建立了在tabspacel表空間的表INDICAT0R_20000,這個(gè)表是通過日期進(jìn)行Range分區(qū),然后在每個(gè)分區(qū)中根據(jù)地區(qū)來區(qū)分子分區(qū)。首先使分區(qū)分散在不同的表空間內(nèi),然后根據(jù)時(shí)間和空間來逐級(jí)縮小查詢范圍,可提高查詢速度。除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。權(quán)利要求1.一種對(duì)于Oracle大數(shù)據(jù)量存儲(chǔ)的優(yōu)化方法,其特征在于采用Oracle分區(qū)策略,以提高數(shù)據(jù)查詢速度,,Oracle提供的分區(qū)方式有Range、List、Hash以及上述幾種方法的組合,根據(jù)電信網(wǎng)絡(luò)數(shù)據(jù)的特點(diǎn),每天都會(huì)有性能數(shù)據(jù)產(chǎn)生,所以按照日期進(jìn)行Range分區(qū)是首選,然后將不同周期的日期分區(qū)劃分在不同的物理磁盤上;在電信領(lǐng)域,網(wǎng)元是根據(jù)地區(qū)來進(jìn)行劃分的,在時(shí)間上劃分分區(qū)之后,根據(jù)網(wǎng)元所屬的地區(qū)不同按地區(qū)再進(jìn)行Oracle子分區(qū),這樣在時(shí)間和空間兩個(gè)維度上進(jìn)行分區(qū)之后,要定位一個(gè)網(wǎng)元實(shí)體在某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)就非常簡(jiǎn)單了;具體優(yōu)化方法如下在數(shù)據(jù)庫中建立多個(gè)數(shù)據(jù)表空間,將表分區(qū)分散在各個(gè)表空間中,然后將表空間的數(shù)據(jù)文件分散在不同的磁盤上,這樣就保證了各個(gè)分區(qū)的數(shù)據(jù)分散在各個(gè)磁盤上,查詢數(shù)據(jù)只從特定的表分區(qū)中查詢,保證并發(fā)時(shí)可以從各個(gè)磁盤上獲取數(shù)據(jù),平衡了I/O的吞吐,具體sql如下CreatetableINDICAT0R_20000(MOENTITYIDVARCHAR2(128),STARTDAYNUMBER(8)notnull,STARTTIMENUMBER(6)notnull,PERIODNUMBERnotnull,BHIDVARCHAR2(1200),INSTANCEIDNUMBER(2),INDICAT0R_20000_001NUMBER,INDICAT0R_20000_002NUMBER,INDICAT0R_20000_003NUMBER,INDICAT0R_20000_004NUMBER,INDICAT0R_20000_005NUMBER,INDICAT0R_20000_006NUMBER,INDICAT0R_20000_007NUMBER,INDICAT0R_20000_008NUMBER,INDICAT0R_20000_009NUMBER,INDICAT0R_20000_010NUMBER)partitionbyrange(startday)subpartitionbylist(moentityid)(partitionp_20000_20110816valueslessthan(20110817)(subpartitionp_20000_20110816_rlvalues(,mol,),subpartitionp_20000_20110816_r2values(default)))tablespacetabspacel;通過以上sql,建立了在tabspacel表空間的表INDICAT0R_20000,這個(gè)表是通過日期進(jìn)行Range分區(qū),然后在每個(gè)分區(qū)中根據(jù)地區(qū)來區(qū)分子分區(qū),首先使分區(qū)分散在不同的表空間內(nèi),然后根據(jù)時(shí)間和空間來逐級(jí)縮小查詢范圍,以提高查詢速度。全文摘要本發(fā)明涉及Oracle在做大數(shù)據(jù)量存儲(chǔ)時(shí)的一種優(yōu)化方案。本發(fā)明適用于數(shù)據(jù)存儲(chǔ)量較大且經(jīng)常查詢,需要進(jìn)行大量數(shù)據(jù)運(yùn)算時(shí)使用。能夠通過利用Oracle分區(qū)方式來,平衡I/O提高系統(tǒng)數(shù)據(jù)吞吐量,對(duì)節(jié)約查詢時(shí)間,節(jié)省成本有一定幫助。文檔編號(hào)G06F17/30GK102662968SQ201210060789公開日2012年9月12日申請(qǐng)日期2012年3月9日優(yōu)先權(quán)日2012年3月9日發(fā)明者張毅申請(qǐng)人:浪潮通信信息系統(tǒng)有限公司