真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

    oracle分區(qū)表目前已經(jīng)很普遍的應(yīng)用于我們的生產(chǎn)系統(tǒng),但是在日常需要維護分區(qū)表的時候,一些對于分區(qū)表的基本操作的時候,我們難免會對分區(qū)表上的索引是否失效有些擔(dān)心,那么今天我就帶大家看下具體哪些操作會導(dǎo)致分區(qū)表上的索引失效。

鄒城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

為了控制篇幅,本次實驗只針對RANGE分區(qū),其他兩種分區(qū)請有興趣的同學(xué)自行測試哦~~~

1、分區(qū)表索引的分類

  熟悉分區(qū)表的人都應(yīng)該知道,oracle分區(qū)表的索引類型分為兩種,一種是Local索引又稱本地索引,一種是Global索引也叫全局索引。本次實驗不具體介紹這兩種索引對分區(qū)表訪問所產(chǎn)生的性能問題方面的差異,只介紹一些常用的DDL操作對分區(qū)表上的索引的一些影響。

如果想要知道兩種索引的性能差異,請期待下期的文章分享哦~~~~

2、針對分區(qū)表做各種DDL操作,查看對索引的影響
2.1創(chuàng)建分區(qū)表,并創(chuàng)建全局索引和分區(qū)索引

createtable tmp_test_range

(

 idnumber,

 id_localnumber,

 namevarchar2(30),

 int_datedate,

 bzvarchar2(20)

)

PARTITIONBYRANGE(int_date)

--interval(numtodsinterval (1,'DAY'))

(

partition P201511valueslessthan(to_date('20151201','yyyymmdd')),

partition P20151201valueslessthan(to_date('20151202','yyyymmdd')),

partition P20151203valueslessthan(to_date('20151203','yyyymmdd')),

partition P20151204valueslessthan(to_date('20151204','yyyymmdd')),

partition P20151205valueslessthan(to_date('20151205','yyyymmdd')),

partition P20151206valueslessthan(to_date('20151206','yyyymmdd')),

partition P20151207valueslessthan(to_date('20151207','yyyymmdd'))

);

向分區(qū)表中插入數(shù)據(jù):

declare

 v_datedate:= to_date('20151127','yyyy-mm-dd');

begin

 for cin1 ..9loop

   for din1 ..100loop

     insertinto tmp_test_rangevalues(c|| d,c||d,'測試數(shù)據(jù)', v_date,'BZ');

   endloop;

   v_date:= v_date+1;

 endloop;

 commit;

end;

創(chuàng)建索引:

分別在ID,ID_LOCAL和創(chuàng)建一個全局索引和分區(qū)索引

createindex I_TMP_TEST_RANGE_Gon tmp_test_range(id)nologging;

createindex I_TMP_TEST_RANGE_Lon tmp_test_range(id_local)nologgingLOCAL;
查看索引的狀態(tài):

local索引:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

Global索引:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

2.2  DDL操作對全局索引的影響:

好了,前面的基礎(chǔ)工作已經(jīng)準備完畢,下面我們開始做一些DDL操作,看下對全局索引的影響。

添加分區(qū)和對其中一個分區(qū)重命名:

ALTERTABLE tmp_test_rangeADDPARTITION P20151208valueslessthan(to_date('20151208','yyyymmdd'));

 

ALTERTABLE tmp_test_rangeRENAMEPARTITION P20151207TO P20151207_2;

查看索引情況:

Global

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響 

Local索引:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

總結(jié):添加分區(qū)和對分區(qū)重新命名并不會導(dǎo)致Global和local索引失效。

刪除表中的分區(qū):

ALTERTABLE tmp_test_rangeDROPPARTITION P20151208;

清空其中一個分區(qū)中的數(shù)據(jù):

ALTERTABLE tmp_test_rangeTRUNCATEPARTITION P201511;

查看索引情況:

local索引會將被刪除的分區(qū)上的local索引刪除,不會影響到其他分區(qū)的索引。

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

Global索引:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

OK,經(jīng)過上面的實驗可能你很容易就能得出結(jié)論說,刪除分區(qū)不會導(dǎo)致Global索引失效,其實不然,讓我們看一種其他情況:

查看某個分區(qū)的數(shù)據(jù)(P201511),看下圖是存在數(shù)據(jù)的:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

現(xiàn)在對分區(qū)進行刪除:

altertable tmp_test_rangedroppartition P201511;

或者:
ALTERTABLE tmp_test_rangeTRUNCATEPARTITION P201518;

查看Global索引:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

唉,還是失效了,所以在刪除分區(qū)表中的分區(qū)的時候,一定要確認有沒有數(shù)據(jù)存在。

總結(jié):

刪除分區(qū)表中的分區(qū)的時候 或者truncate 分區(qū)中的數(shù)據(jù)時,一定要確認分區(qū)中是否有數(shù)據(jù)存在,如果沒有數(shù)據(jù)不會導(dǎo)致Global失效,反之則會導(dǎo)致Global索引失效。而對其他分區(qū)上的local索引都不會造成影響。

合并分區(qū):

合并分區(qū)有兩種方式,一種是維護索引的,一種是不維護索引。我們先來看不維護索引的。

ALTERTABLE tmp_test_rangeMERGEPARTITIONS P201511,P20151201INTOPARTITION P20151208;

查看索引的情況:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

總結(jié):Global索引,做合并分區(qū)操作的時候會導(dǎo)致Global索引失效,所以操作的時候一定要當心哦?。。?/p>

local索引不會維護合并后的分區(qū),但是不會影響其他的分區(qū),合并分區(qū)操作還會將原來被合并的分區(qū)刪除。

當然oracle也提供了合并分區(qū)的時候維護索引的操作,當大家在線上操作的時候,請使用下面的語句對分區(qū)做合并。

ALTERTABLE tmp_test_rangeMERGEPARTITIONS P201511,P20151201INTOPARTITION P20151208update indexes ;

這樣就不會在做合并分區(qū)操作的時候,導(dǎo)致索引失效了。

拆分分區(qū):

拆分分區(qū)同樣也是有兩種方式,一種是直接拆分并不維護索引,另一種是帶維護索引的拆分方式。具體操作見下面的實驗:

我們先看維護索引的方式拆分:

ALTERTABLE tmp_test_rangeSPLITPARTITION P201511at(date'2015-11-28')   INTO(PARTITION TAB_PARTOTION_05,PARTITION TAB_PARTOTION_OTHERE)updateindexes;

查看索引的情況:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

果然使用update indexes的方式進行拆分Global索引和local索引都是正常的。那下面我們再來看下不維護索引的方式:

ALTERTABLE tmp_test_rangeSPLITPARTITION P201511at(date'2015-11-28')

   INTO(PARTITION TAB_PARTOTION_05,PARTITION TAB_PARTOTION_OTHERE);

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

還是沒有令我們失望,使用這種直接拆分的方式兩種索引都有失效的情況發(fā)生,

local索引在新增的兩個分區(qū)上的索引失效,Global索引還是不負眾望的失效了。

總結(jié):

對分區(qū)表進行拆分分區(qū)的時候如果不加參數(shù) update indexes會導(dǎo)致新增分區(qū)上的local索引失效,Global索引失效。采用update indexes的方式這兩種索引都不會失效。

交換分區(qū):

交換分區(qū)同樣也是有兩種方式,一種是自動維護索引的,一種是直接交換分區(qū)不做維護索引操作,顯然第二種方式會導(dǎo)致索引失效。具體見下面的實驗(下面兩個不要同時操作):

ALTERTABLE tmp_test_rangeEXCHANGEPARTITION P201511WITHTABLE tmp_test_range_2;

 

ALTERTABLE tmp_test_rangeEXCHANGEPARTITION P201511 WITHTABLE tmp_test_range_2updateINDEXES;

 

查看兩個索引情況:

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響

果不其然,交換分區(qū)還是會導(dǎo)致Global索引失效,local索引還是被交換的分區(qū)上的索引失效。所以在做交換分區(qū)的時候,我們還是可以使用update indexes來維護索引Global索引,但是對于local索引即使使用update indexes也會導(dǎo)致local索引失效,還是要再重新維護。

3、總結(jié):

好了,上面我們說了那么多,讓我們總結(jié)一下,具體哪些操作會對分區(qū)表上的索引有一定的影響。

 兩種索引都不會產(chǎn)生影響的操作:

1.添加分區(qū)

2.刪除分區(qū)(分區(qū)中沒有數(shù)據(jù))

3.對分區(qū)重命名


會產(chǎn)生影響的:

1.合并分區(qū)

新增分區(qū)上的local索引失效

Global索引失效

PS:使用update indexes的方式可以避免索引失效的發(fā)生(包括local索引和Global索引)。

2、拆分分區(qū)

拆分出來的分區(qū)上的local索引失效

Global索引失效

PS:使用update indexes的方式可以避免索引失效的發(fā)生(包括local索引和Global索引)。

3、分區(qū)交換

被交換分區(qū)上的local索引失效

Global索引失效

PS:使用update indexes的方式可以避免Global索引失效的發(fā)生,不能避免local索引失效。

4、刪除分區(qū) 或者truncate分區(qū)中的數(shù)據(jù) 時,如果被刪除的分區(qū)上有數(shù)據(jù)存在,會導(dǎo)致Global索引失效。

 

通過上面的實驗我們可以看出對于分區(qū)表來說,且不論性能如何,就單單對方便數(shù)據(jù)管理來說,還是創(chuàng)建local索引更加方便對分區(qū)表中數(shù)據(jù)的管理。

author:馮棟華



本文題目:oracle分區(qū)表的常規(guī)操作導(dǎo)致對索引的影響
轉(zhuǎn)載注明:http://weahome.cn/article/pdssoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部