ORACLE索引聚簇表的數(shù)據(jù)加載
來(lái)源:易賢網(wǎng) 閱讀:810 次 日期:2014-08-25 11:13:41
溫馨提示:易賢網(wǎng)小編為您整理了“ORACLE索引聚簇表的數(shù)據(jù)加載”,方便廣大網(wǎng)友查閱!

一:首先介紹一下索引聚簇表的工作原理:

聚簇是指:如果一組表有一些共同的列,則將這樣一組表存儲(chǔ)在相同的數(shù)據(jù)庫(kù)塊中;聚簇還表示把相關(guān)的數(shù)據(jù)存儲(chǔ)在同一個(gè)塊上。利用聚簇,一個(gè)塊可能包含多個(gè)表的數(shù)據(jù)。概念上就是如果兩個(gè)或多個(gè)表經(jīng)常做鏈接操作,那么可以把需要的數(shù)據(jù)預(yù)先存儲(chǔ)在一起。聚簇還可以用于單個(gè)表,可以按某個(gè)列將數(shù)據(jù)分組存儲(chǔ)。

更加簡(jiǎn)單的說(shuō),比如說(shuō),EMP表和DEPT表,這兩個(gè)表存儲(chǔ)在不同的segment中,甚至有可能存儲(chǔ)在不同的TABLESPACE中,因此,他們的數(shù)據(jù)一定不會(huì)在同一個(gè)BLOCK里。而我們有會(huì)經(jīng)常對(duì)這兩個(gè)表做關(guān)聯(lián)查詢,比如說(shuō):select * from emp,dept where emp.deptno = dept.deptno .仔細(xì)想想,查詢主要是對(duì)BLOCK的操作,查詢的BLOCK越多,系統(tǒng)IO就消耗越大。如果我把這兩個(gè)表的數(shù)據(jù)聚集在少量的BLOCK里,查詢效率一定會(huì)提高不少。

比如我現(xiàn)在將值deptno=10的所有員工抽取出來(lái),并且把對(duì)應(yīng)的部門(mén)信息也存儲(chǔ)在這個(gè)BLOCK里(如果存不下了,可以為原來(lái)的塊串聯(lián)另外的塊)。這就是索引聚簇表的工作原理。

二:創(chuàng)建過(guò)程。

索引聚簇表是基于一個(gè)索引聚簇(index cluster)創(chuàng)建的。里面記錄的是各個(gè)聚簇鍵。聚簇鍵和我們用得做多的索引鍵不一樣,索引鍵指向的是一行數(shù)據(jù),聚簇鍵指向的是一個(gè)ORACLE BLOCK。我們可以先通過(guò)以下命令創(chuàng)建一個(gè)索引簇。

SQL> conn scott/tiger

已連接。

SQL> desc dept

名稱(chēng) 是否為空? 類(lèi)型

----------------------------------------- -------- ----------------------------

DEPTNO NOT NULL NUMBER(2)

DNAME VARCHAR2(14)

LOC VARCHAR2(13)

SQL> create cluster emp_dept_cluster

2 ( deptno number(2) )

3 size 1024

4 /

簇已創(chuàng)建。

這個(gè)名字可以用戶定義,不一定叫deptno,數(shù)據(jù)類(lèi)型必須和需要使用這個(gè)聚簇的數(shù)據(jù)類(lèi)型一致NUMBER(2)。在這里最關(guān)鍵的一個(gè)參數(shù)是size。這個(gè)選項(xiàng)原來(lái)告訴Oracle:我們希望與每個(gè)聚簇鍵值關(guān)聯(lián)大約1024字節(jié)的數(shù)據(jù)(1024對(duì)于一般的表一條數(shù)據(jù)沒(méi)問(wèn)題),Oracle會(huì)在用這個(gè)數(shù)據(jù)庫(kù)塊上設(shè)置來(lái)計(jì)算每個(gè)塊最 多能放下多少個(gè)聚簇鍵。假設(shè)塊大小為8KB,Oracle會(huì)在每個(gè)數(shù)據(jù)庫(kù)塊上放上最多7個(gè)聚簇鍵,也就是說(shuō),對(duì)應(yīng)部門(mén)10、20、30、40、50、60和70的數(shù)據(jù)會(huì)放在一個(gè)塊上,一旦插入部門(mén)80,就會(huì)使用一個(gè)新塊。存放的數(shù)據(jù)是和插入順序相關(guān)的。

因 此,SIZE測(cè)試控制著每塊上聚簇鍵的最大個(gè)數(shù)。這是對(duì)聚簇空間利用率影響最大的因素。如果把這個(gè)SIZE設(shè)置得太高,那么每個(gè)塊上的鍵就會(huì)很少(單位BLOCK可以存的聚簇鍵就少了),我們會(huì)不必要地使用更多的空間。如果設(shè)置得太低,又會(huì)導(dǎo)致數(shù)據(jù)過(guò)分串鏈(一個(gè)聚簇鍵不夠存放一條數(shù)據(jù)),這又與聚簇本來(lái)的目的不符,因?yàn)榫鄞卦臼菫榱税阉邢嚓P(guān)數(shù)據(jù)都存儲(chǔ)在一個(gè)塊上。

向聚簇中放數(shù)據(jù)之前,需要先對(duì)聚簇建立索引??梢袁F(xiàn)在就在聚簇中創(chuàng)建表,但是由于我們想同時(shí)創(chuàng)建和填充表,而有數(shù)據(jù)之前必須有一個(gè)聚簇索引,所以我們先來(lái)建立聚簇索引。

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:ORACLE索引聚簇表的數(shù)據(jù)加載
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)