日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Oracle索引聚簇表的數(shù)據(jù)加載的創(chuàng)建

Oracle索引聚簇表的數(shù)據(jù)加載,你可能對(duì)其并不熟悉,那么如果你閱讀了以下的文章,你可能對(duì)Oracle索引聚簇表的數(shù)據(jù)加載會(huì)有一個(gè)全新的認(rèn)識(shí),以下文章就是對(duì)Oracle索引聚簇表的數(shù)據(jù)加載的工作原理的描述。

目前成都創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、江口網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

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

聚簇是指:如果一組表有一些共同的列,則將這樣一組表存儲(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)單的說,比如說,EMP表和DEPT表,這兩個(gè)表存儲(chǔ)在不同的segment中,甚至有可能存儲(chǔ)在不同的TABLESPACE中,因此,他們的數(shù)據(jù)一定不會(huì)在同一個(gè)BLOCK里。而我們有會(huì)經(jīng)常對(duì)這兩個(gè)表做關(guān)聯(lián)查詢,比如說: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的所有員工抽取出來,并且把對(duì)應(yīng)的部門信息也存儲(chǔ)在這個(gè)BLOCK里(如果存不下了,可以為原來的塊串聯(lián)另外的塊)。這就是Oracle索引聚簇表的工作原理。

二:創(chuàng)建過程

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

 

 
 
 
  1. SQL> conn scott/tiger 

已連接。

 

 
 
 
  1. SQL> desc dept 

名稱 是否為空? 類型

 

 
 
 
  1. DEPTNO NOT NULL NUMBER(2)  
  2. DNAME VARCHAR2(14)  
  3. LOC VARCHAR2(13)  
  4. SQL> create cluster emp_dept_cluster  
  5. ( deptno number(2) )  
  6. size 1024  
  7. /  

 

簇已創(chuàng)建。

這個(gè)名字可以用戶定義,不一定叫deptno,數(shù)據(jù)類型必須和需要使用這個(gè)聚簇的數(shù)據(jù)類型一致NUMBER(2)。在這里最關(guān)鍵的一個(gè)參數(shù)是size。這個(gè)選項(xiàng)原來告訴Oracle:我們希望與每個(gè)聚簇鍵值關(guān)聯(lián)大約1024字節(jié)的數(shù)據(jù)(1024對(duì)于一般的表一條數(shù)據(jù)沒問題),Oracle會(huì)在用這個(gè)數(shù)據(jù)庫(kù)塊上設(shè)置來計(jì)算每個(gè)塊最 多能放下多少個(gè)聚簇鍵。

假設(shè)塊大小為8KB,Oracle會(huì)在每個(gè)數(shù)據(jù)庫(kù)塊上放上最多7個(gè)聚簇鍵,也就是說,對(duì)應(yīng)部門10、20、30、40、50、60和70的數(shù)據(jù)會(huì)放在一個(gè)塊上,一旦插入部門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ù)過分串鏈(一個(gè)聚簇鍵不夠存放一條數(shù)據(jù)),這又與聚簇本來的目的不符,因?yàn)榫鄞卦臼菫榱税阉邢嚓P(guān)數(shù)據(jù)都存儲(chǔ)在一個(gè)塊上。

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

聚簇索引的任務(wù)是拿到一個(gè)聚簇鍵值,然后返回包含這個(gè)鍵的塊的塊地址。實(shí)際上這是一個(gè)主鍵,其中每個(gè)聚簇鍵值指向 聚簇本身中的一個(gè)塊。因此,我們請(qǐng)求部門10的數(shù)據(jù)時(shí),Oracle會(huì)讀取聚簇鍵,確定相應(yīng)的塊地址,然后讀取數(shù)據(jù)。聚簇鍵索引如下創(chuàng)建:

 

 
 
 
  1. SQL> create index emp_dept_cluster_idx  
  2. on cluster emp_dept_cluster  
  3. /  

 

索引已創(chuàng)建。

現(xiàn)在可以創(chuàng)建表了:

 

 
 
 
  1. SQL> conn segment_study/liugao 

已連接。

 

 
 
 
  1. SQL> create table dept  
  2. ( deptno number(2) primary key, 3 dname varchar2(14),  
  3. loc varchar2(13)  
  4. )  
  5. cluster emp_dept_cluster(deptno)  
  6. /  

 

表已創(chuàng)建。

 

 
 
 
  1. SQL> create table emp  
  2. ( empno number primary key, 3 ename varchar2(10), 
    4 job varchar2(9), 5 mgr number, 6 hiredate date, 
    7 sal number, 8 comm number,  
  3. deptno number(2) constraint emp_fk references dept(deptno)  
  4. )  
  5. cluster emp_dept_cluster(deptno)  
  6. /  

 

表已創(chuàng)建。我們可以通過一下SQL語(yǔ)句查看創(chuàng)建:

 

 
 
 
  1. SQL> select cluster_name, table_name  
  2. from user_tables  
  3. where cluster_name is not null  
  4. order by 1;  
  5. CLUSTER_NAME TABLE_NAME  
  6. EMP_DEPT_CLUSTER DEPT  
  7. EMP_DEPT_CLUSTER EMP  

 

現(xiàn)在,聚簇,聚簇索引,聚簇索引表都已經(jīng)建立完成。上述的相關(guān)內(nèi)容就是對(duì)Oracle索引聚簇表的數(shù)據(jù)加載的描述,希望會(huì)給你帶來一些幫助在此方面。

【編輯推薦】

  1. Oracle數(shù)據(jù)庫(kù)中表的連接方式的講解
  2. Oracle數(shù)據(jù)庫(kù)中表的不同的連接方式描述
  3. Oracle使用游標(biāo)觸發(fā)器存儲(chǔ)實(shí)操
  4. Oracle自增字段的實(shí)際應(yīng)用
  5. 配置Oracle RAC中應(yīng)注意的問題有哪些

 


標(biāo)題名稱:Oracle索引聚簇表的數(shù)據(jù)加載的創(chuàng)建
標(biāo)題路徑:http://m.5511xx.com/article/dpjchpi.html