數(shù)據(jù)倉庫Oracle系統(tǒng)概念(ppt-83頁)課件_第1頁
數(shù)據(jù)倉庫Oracle系統(tǒng)概念(ppt-83頁)課件_第2頁
數(shù)據(jù)倉庫Oracle系統(tǒng)概念(ppt-83頁)課件_第3頁
數(shù)據(jù)倉庫Oracle系統(tǒng)概念(ppt-83頁)課件_第4頁
數(shù)據(jù)倉庫Oracle系統(tǒng)概念(ppt-83頁)課件_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Oracle8 數(shù)據(jù)庫系統(tǒng)改進表的存取性能-索引與數(shù)據(jù)簇分區(qū)選件-分區(qū)表與分區(qū)索引并行選件-SQL語句并行處理新的數(shù)據(jù)類型(多媒體數(shù)據(jù)類型) 索引 索引在數(shù)據(jù)庫應(yīng)用中,性能主要取決于存取表中數(shù)據(jù)的速度。索引可以快速找到待定的表記錄。索引維護與應(yīng)用:索引對用戶透明當(dāng)有索引且能提高應(yīng)用的性能時,Oracle自動使用索引。Oracle自動更新索引以使其與表同步。索引類型B樹索引(系統(tǒng)自動為主碼和唯一完整性約束建立)位圖索引索引表,分區(qū)索引,反向鍵值索引 。SMITHALLENWARDJONESMARTINBLAKECLARKSCOTTKINGTURNERADAMSJAMESFORDMILLERB樹索

2、引create index 索引名 on 表名(列名) ADAMSALLENBLAKECLARKFORDJAMESJONESKINGMARTINMILLERSCOTTSMITHTURNERWARDMILLERTURNERBLAKEJAMESKINGROWID對于索引列的每一個可能的值,都有獨立的位圖項。在位圖項中的每一位代表一個 可能的ROWID, 為1意味著 該行包含關(guān)鍵值。例如:LOC列(3種取值)北京 (0 1 0 0 1 1 )天津 (1 0 0 0 0 0 )上海 (0 0 1 1 0 0 ) 第二個記錄 第一個記錄位圖函數(shù)可以將位的位置轉(zhuǎn)換為實際的ROWID 。 通過位圖索引的合并

3、簡化查詢條件, 從而過濾被訪問的數(shù)據(jù)集合。位圖索引d01合資d02合資d03合資d04外企d05國企d06合資dnotype天津北京上海上海北京北京loc select dno from depwhere type = 合資 and loc in (北京, 上海); 合資 北京 上海1 0 0 0 1 1 0 1d0210 1 1d030 AND 0 OR 1 = 00 1 0 01 1 0 1d06位圖索引的例子位圖索引建立位圖索引;create bitmap index dep_indexon dep(type) ;create bitmap index dep_indexon dep(d

4、oc) ;位圖索引適用于列的值取值不多的情況、索引列含有越多的值,位圖項就越多,需要存儲索引的空間也越大。由于Oracle必須展開一個位圖索引的方式,所以不適于經(jīng)常插入或更新數(shù)據(jù)的應(yīng)用。位圖索引典型地用于決策系統(tǒng)與數(shù)據(jù)倉庫應(yīng)用中查詢數(shù)據(jù)。簇(聚集)索引當(dāng)cluster建立后,必須建立簇索引后,被聚集 的表才能訪問。系統(tǒng)不會自動為簇建索引。例:create clusert dep_emp(depno char(3);create table dep(dno . ,dname . ,) cluster dep_emp(dno);create table emp(emp ,dno.) cluster

5、 dep_emp(dno);create index dep_emp_idx on cluster dep_emp; 簇(聚集)索引簇索引表的存儲e01 王山 男 d01 佳月公司 8200e02 張麗 女 d01 e10 孫軍 男 d02 運通公司 2034 d03 安合物業(yè) 6800 來自emp 來自dep cluster key 分區(qū)選件分區(qū)選件分區(qū)的原因表和索引迅速膨脹數(shù)據(jù)倉庫和決策支持的需要什么是分區(qū)大的表或索引可以拆分為小的易于管理的數(shù)據(jù)片斷, 例如將銷售表按銷售日期拆分成一系列數(shù)據(jù)片斷其中每一個片斷稱為一個分區(qū)(partition)被分區(qū)的表稱為分區(qū)表。數(shù)據(jù)倉庫的概念數(shù)據(jù)倉庫就是

6、面向主題的、集成的、穩(wěn)定的、不同時間的數(shù)據(jù)集合,用以支持經(jīng)營管理中的決策制定過程。主題是一個在較高層次將數(shù)據(jù)歸類的標(biāo)準(zhǔn),每一個主題對應(yīng)一個宏觀的分析領(lǐng)域數(shù)據(jù)倉庫的集成特性是指在數(shù)據(jù)進入數(shù)據(jù)倉庫之前,必須經(jīng)過數(shù)據(jù)加工和集成,統(tǒng)一原始數(shù)據(jù)中的矛盾之處,將原始數(shù)據(jù)結(jié)構(gòu)做一個從面向應(yīng)用向面向主題的轉(zhuǎn)變。數(shù)據(jù)倉庫的穩(wěn)定性是指數(shù)據(jù)倉庫反映的是歷史數(shù)據(jù)的內(nèi)容,而不是日常事務(wù)處理產(chǎn)生的數(shù)據(jù),進入數(shù)據(jù)倉庫后是極少或根本不修改的數(shù)據(jù)倉庫的概念數(shù)據(jù)倉庫最根本的特點是物理地存放數(shù)據(jù)。這些數(shù)據(jù)并不是最新的、專有的,而是來源于其它數(shù)據(jù)庫的。數(shù)據(jù)倉庫的建立并不是要取代數(shù)據(jù)庫,它要建立在一個較全面和完善的信息應(yīng)用的基礎(chǔ)上,用

7、于支持高層決策分析。而事務(wù)處理數(shù)據(jù)庫在企業(yè)的信息環(huán)境中承擔(dān)的是日常操作性的的任務(wù)。數(shù)據(jù)倉庫是數(shù)據(jù)庫技術(shù)的一種新的應(yīng)用,而且到目前為止,數(shù)據(jù)倉庫還是用數(shù)據(jù)庫管理系統(tǒng)來管理其中的數(shù)據(jù)。分區(qū)只有表和索引可以分區(qū)。分區(qū)對于應(yīng)用人員和用戶是透明的。分區(qū)可以控制數(shù)據(jù)的存儲地點:將數(shù)據(jù)分散存儲在多個磁盤上。將經(jīng)常使用的數(shù)據(jù)放在快速的磁盤上。分區(qū)可以有不同的物理屬性:分區(qū)可以有不同的存儲參數(shù)(tablespace, pctfree, pctused, 等等)分區(qū)表或索引可以跨表空間存儲, 分區(qū)不可以。同一模式對象的所有分區(qū)必須具有相同的邏輯屬性:相同的列, 數(shù)據(jù)類型, 約束。分區(qū)的作用增加了數(shù)據(jù)的可用性不同的

8、分區(qū)可以跨表空間存儲,可以進行分區(qū)級的備份和恢復(fù)。不同的分區(qū)可以跨表空間存儲, 降低了磁盤損壞帶來的數(shù)據(jù)不可用性。不可用的分區(qū)不會影響到對其它分區(qū)的查詢和維護提高了系統(tǒng)性能服務(wù)器可以進行智能的分區(qū)檢測跳過與查詢無關(guān)的分區(qū)訪問跳過不在線的分區(qū)在物理設(shè)備上負(fù)載均衡將數(shù)據(jù)分散存儲在多個磁盤上, 實現(xiàn)并行存取分區(qū)關(guān)鍵字分區(qū)關(guān)鍵字決定了劃分分區(qū)的依據(jù)只能是標(biāo)準(zhǔn)數(shù)據(jù)類型: Number, Date, Character(VARCHAR2, CHAR)可以是多至16個的列的聯(lián)合對關(guān)鍵字的修改不能導(dǎo)致記錄在分區(qū)之間的移動分區(qū)的數(shù)據(jù)范圍LESS THAN 子句指定每個分區(qū)的上限值。除第一個分區(qū)外,每一個分區(qū)都有

9、一個隱含的下限值(即前一個分區(qū)的上限值)。最后一個分區(qū)的上限值可以設(shè)定為 MAXVALUE必須按照升序排列來聲明分區(qū)。建立分區(qū)表例1 CREATE TABLE sales97(acct_no number(5), product_id number(12), qty number(8), sales_date date )PARTITION BY RANGE (sales_date) ( PARTITION p1 VALUES LESS THAN (to_date(01-4月-1997,dd-mon-yyyy) TABLESPACE p1_space, PARTITION p2 VALUES

10、LESS THAN (to_date(01-7月-1997,dd-mon-yyyy) TABLESPACE p2_space, PARTITION p3 VALUES LESS THAN (to_date(01-10月-1997,dd-mon-yyyy) TABLESPACE p3_space, PARTITION p4 VALUES LESS THAN (MAXVALUE) );建立分區(qū)表例2CREATE TABLE stu_score (stu_num NUMBER(5), score number not null,test_year number not null,test_month

11、 number not null,test_day number not null )PARTITION BY RANGE(test_year,test_month,test_day) ( PARTITION score_q1 VALUES LESS THAN (1997,07,01 ) TABLESPACE education1, PARTITION score_q2 VALUES LESS THAN (1998,02,01 ) TABLESPACE education2 )查看分區(qū)情況查分區(qū)表分區(qū)數(shù) select partition_count from user_part_tables

12、where table_name=SALES97PARTITION_COUNT 4查分區(qū)表分區(qū)劃分情況情況select partition_name ,tablespace_name, partition_position,high_valuefrom user_tab_partitionswhere table_name=STU_SCORE ;SCORE_Q1 EDUCATION1 1 1997, 07, 01 SCORE_Q2 EDUCACION2 2 1998, 02, 01建立分區(qū)注意事項設(shè)置分區(qū)的界限VALUES LESS THAN 定義了分區(qū)的上界VALUES LESS THAN

13、必須取值Number, Character, DateMAXVALUE定義分區(qū)的最上界任何合法的存儲子句均可用于分區(qū)(tablespace, pctfree.)沒有為單獨的分區(qū)設(shè)置存儲子句時, 使用基表的存儲子句在分區(qū)表中不能包含LONG類型的列。系統(tǒng)為每一分區(qū)設(shè)置一個隱含的CHECK約束(分區(qū)的最高限制是MAXVALUE時除外) 。聚集表不能分區(qū)分區(qū)表的訪問分區(qū)對表名的擴展: 模式名. 表名 PARTITION(分區(qū)名)例:SELECT * FROM sales97 WHERE qty 1000 AND sales_date BETWEEN 01-4月-97 AND 30-6月-97 ;指定

14、分區(qū)SELECT * FROM sales97 PARTITION (p2)WHERE qty 1000;INSERT INTO sales97 PARTITION (p4)SELECT * FROM lastest_data;注意:分區(qū)表名的不兼容性分區(qū)表的訪問分區(qū)值的檢查insert into stu_scorevalues(98007,50,1998,2,1);錯誤位于第1行:ORA-14400: 插入的分區(qū)鍵超出最高的合法分區(qū)鍵。使用別名select * from stu_score partition(score_q1) q1where q1.score85建立視圖create vi

15、ew sco_q1 asselect * from stu_score partition(score_q1);分區(qū)索引一般索引(非分區(qū)索引)CREATE INDEX sales97_idxON sales97 (sales_date);分區(qū)索引索引分區(qū)只有當(dāng)索引本身足夠大且適于分區(qū)時,索引分區(qū)才是有意義的。索引分區(qū)可提高可用性,提供并行索引掃描, 提高性能。選擇分區(qū)索引的主列(索引列)與選擇非分區(qū)索引主列沒有區(qū)別(根據(jù)where 子句的應(yīng)用)。分區(qū)索引策略一旦決定為表創(chuàng)建一個分區(qū)索引,必須決定如何組織、劃分該索引的分區(qū)。兩種選擇:全局分區(qū)索引(GLOBAL):按自定的索引關(guān)鍵字來分區(qū),對等分

16、區(qū)索引, 也稱局部索引 (LOCAL):創(chuàng)建與分區(qū)表的各分區(qū)一一對應(yīng)的索引分區(qū)GLOBAL分區(qū)表分區(qū)表非分區(qū)表LOCAL分區(qū)索引對等分區(qū)索引 非分區(qū)索引對等分區(qū)對象定義: 下列屬性完全一樣的兩個模式對象有相同的分區(qū)關(guān)鍵字相同數(shù)量的分區(qū)相同的分區(qū)界限使用對等分區(qū)的優(yōu)點:對等分區(qū)對象是主、細(xì)表。全部對應(yīng)的主細(xì)記錄在相應(yīng)的數(shù)據(jù)分區(qū)中,可很快完成兩個表的連接。在這種情況下,磁盤存取的減少類似于使用數(shù)據(jù)簇(聚集)來“予連接”主細(xì)表。對等分區(qū)的對象是表和索引:: 當(dāng)查詢時,特定索引分區(qū)中的全部鍵值只引用相應(yīng)表分區(qū)中的記錄。 當(dāng)一個分區(qū)不可用時只有相應(yīng)的分區(qū)索引不可用,不影響其他分區(qū)及分區(qū)索引,因此提高數(shù)據(jù)

17、可用性。 當(dāng)更新一個表分區(qū)的數(shù)據(jù)時,只須調(diào)整相應(yīng)的分區(qū)索引。分區(qū)表與對等分區(qū)索引建分區(qū)表CREATE TABLE sales97(acct_no NUMBER(5), product_id NUMBER(12), qty NUMBER(8), sales_date DATE)PARTITION BY RANGE (sales_date)(PARTITION q1 VALUES LESS THAN ,PARTITION q2 VALUES LESS THAN ,PARTITION q3 VALUES LESS THAN ,PARTITION q4 VALUES LESS THAN . ) ;建分

18、區(qū)索引與對應(yīng)分區(qū)表構(gòu)成對等分區(qū)對象,。使用LOCAL屬性CREATE INDEX sales_idx ON sales97(sales_date)LOCAL (PARTITION index_q1, PARTITION index_q2, PARTITION index_q3, PARTITION index_q4);全局分區(qū)索引與分區(qū)表不構(gòu)成對等分區(qū)對象, 按索引碼分區(qū), 而不是按表的分區(qū)關(guān)鍵字使用GLOBAL全局分區(qū)索引能夠包含相應(yīng)表全部分區(qū)的鍵值,在OLTP環(huán)境下提供比分區(qū)索引更好的性能。CREATE INDEX product_idx ON sales97 (product_id) G

19、LOBAL PARTITION BY RANGE (product_id) (PARTITION pidx1 VALUES LESS THAN(100) tablespace users, PARTITION pidx2 VALUES LESS THAN (200 ) tablespace students, PARTITION pidx3 VALUES LESS THAN(MAXVALUE);分區(qū)索引例對等分區(qū)索引(local)create index stu_idx (97,7,1 98,2,1)on stu_score(test_year,test_month,test_day)loca

20、l (partition index_q1, partition index_q2) ;全局分區(qū)索引(global)create index stu_g_idxon stu_score(stu_num)global partition by range (stu_num) (partition pidx1 values less than(95000) tablespace users, partition pidx2 values less than (96000 ) tablespace students, partition pidx3 values less than(maxvalue

21、) );查看分區(qū)索引select partition_name,high_value,statusfrom user_ind_partitionswhere index_name=STU_IDX; INDEX_Q1 1997, 07, 01 USABLEINDEX_Q2 1998, 02, 01 USABLEselect partition_name,high_value,statusfrom user_ind_partitionswhere index_name=STU_G_IDX; PIDX1 95000 USABLEPIDX2 96000 USABLEPIDX3 MAXVALUE USA

22、BLE分區(qū)表的管理分區(qū)可獨立管理,分區(qū)操作僅在單一分區(qū)上發(fā)生作用。分區(qū)級的操作:alter table Add 分區(qū)alter table Drop分區(qū) modify 分區(qū) Move 分區(qū) Split 分區(qū) Rename分區(qū) Exchange分區(qū) Imported/Exported Load 分區(qū)數(shù)據(jù)分區(qū)索引的管理分區(qū)索引的管理類似于分區(qū)表的管理alter index drop partition(只對global索引)alter index split partition (只對global索引)alter index rename partitionalter index rebuild

23、partition alter index modify partitionalter index unusablealter index stu_idx rebuild partition index_q1;alter index stu_g_idx rebuild partition pidx1;分區(qū)表的維護 - 增加分區(qū)ALTER TABLE stu_score ADD PARTITION score_q3 VALUES LESS THAN (1998,07,01) TABLESPACE students;常用來維護歷史數(shù)據(jù), 用來增加另外時間段的數(shù)據(jù)。用于在分區(qū)表的高端增加分區(qū)如果增加

24、的分區(qū)在分區(qū)表的中間,或最后分區(qū)邊界是MAXVALUE時在高端增加分區(qū),要用其他辦法(拆分分區(qū))如果分區(qū)表有對等分區(qū)索引,則分區(qū)索引會隨之增加(分區(qū)索引名用表分區(qū)名)。分區(qū)索引的自動調(diào)整select partition_name,high_value,status from user_ind_partitions where index_name=STU_IDX; INDEX_Q1 1997, 07, 01 USABLEINDEX_Q2 1998, 02, 01 USABLESCORE_Q3 1998, 07, 01 USABLE (改名之前)索引改名:alter index stu_idx

25、rename partition score_q3 to index_q3; select where index_name=STU_G_IDX; PIDX1 95000 USABLEPIDX2 96000 USABLE 沒有變化PIDX3 MAXVALUE USABLE分區(qū)表的維護刪除分區(qū)ALTER TABLE stu_score DROP PARTITION score_q3; 用于刪除歷史數(shù)據(jù)不想刪除分區(qū)中的數(shù)據(jù)時, 應(yīng)首先將分區(qū)數(shù)據(jù)合并到鄰近分區(qū)相應(yīng)分區(qū)索引將被刪除全局索引變?yōu)椴豢捎茫ㄐ枰貥?gòu))刪除分區(qū)索引select partition_name,high_value,statusf

26、rom user_ind_partitionswhere index_name=STU_IDX; INDEX_Q1 1997, 07, 01 USABLEINDEX_Q2 1998, 02, 01 USABLEselect partition_name,high_value,statusfrom user_ind_partitionswhere index_name=STU_G_IDX; PIDX1 95000 UN USABLEPIDX2 96000 UNUSABLEPIDX3 MAXVALUE UNUSABLE分區(qū)表操作刪除分區(qū)記錄ALTER TABLE stu_score TRUNCAT

27、E PARTITION score_q3;也可以使用SQL語句中的Delete刪除分區(qū)中的數(shù)據(jù),但會比較慢。表中數(shù)據(jù)清空以后,對等分區(qū)索引會自動變化。非對等分區(qū)索引和一般索引變?yōu)椴豢捎脿顟B(tài)。 SCORE_Q2 STUDENTS 1998, 02, 01 表分區(qū)SCORE_Q3 STUDENTS 1998, 07, 01SCORE_Q1 USERS 1997, 07, 01 INDEX_Q2 1998, 02, 01 USABLE 索引分區(qū)INDEX_Q1 1997, 07, 01 USABLEINDEX_Q3 1998, 07, 01 USABLE PIDX1 95000 UNUSABLE 全

28、局分區(qū)PIDX2 96000 UNUSABLEPIDX3 MAXVALUE UNUSABLE索引不可用可能使索引不可用(IU)的操作清除記錄的分區(qū)操作(TRUNCATE PARTITION)跳過局部索引(LOCAL)的 Import對數(shù)據(jù)庫的直接SQL*LOADER改變ROWID的分區(qū)操作(MOVE/SPLIT PARTITION)如果索引分區(qū)被標(biāo)記為IU, 用戶發(fā)出使用該索引分區(qū)的SELECT 或DML語句時, 將得到錯誤提示。這時需要重建索引。select * from stu_score where stu_num=950001錯誤位于第1行:ORA-01502: 索引 WXY.STU_

29、G_IDX 或這類索引的分區(qū)是在不可使用的狀態(tài)重建索引alter index rebuild partition可以為local或global分區(qū)索引重建某個分區(qū)。例alter index stu_g_idx rebuild partition pidx1;alter index stu_g_idx rebuild partition pidx2;alter index stu_g_idx rebuild partition pidx3;重建索引還可以改變表空間等其他存儲屬性。alter index stu_g_idx rebuild partition pidx1 tablespace st

30、udent2分區(qū)表的維護修改分區(qū)修改分區(qū)的物理屬性alter table stu_score modify partition score_q1 storage(maxextents 50);置分區(qū)表對應(yīng)的局部索引為不可用狀態(tài)。alter table stu_score modify partition score_q1 unusable local indexes ;, 用于插入和轉(zhuǎn)入數(shù)據(jù)。為使局部索引可用, 必須重建索引分區(qū)重建已被標(biāo)記為iu的局部分區(qū)索引alter table stu_score modify partition score_q1 rebuild unusable loc

31、al indexes分區(qū)表的操作重命名分區(qū)修改分區(qū)名ALTER TABLE stu_scoreRENAME PARTITION score_q3 to score_qq3;附:修改表名ALTER TABLE stu_scoreRENAME to student_score ;分區(qū)表的操作移動分區(qū)ALTER TABLE MOVE PARTITION移動表分區(qū)到另外一個數(shù)據(jù)段上。新的數(shù)據(jù)段產(chǎn)生, 舊的數(shù)據(jù)段刪除(可在原表空間,也可移到其他表空間。用于將分區(qū)移動到其它設(shè)備上,或用于減少分區(qū)碎片。相應(yīng)的分區(qū)索引和其他類型的索引都應(yīng)該重建。alter table stu_score move parti

32、tion score_q1 ;分區(qū)表的操作拆分分區(qū)ALTER TABLE SPLIT PARTITION將分區(qū)在分區(qū)范圍內(nèi)拆分為兩個分區(qū)創(chuàng)建了兩個分區(qū), 每一個新分區(qū)有單獨的數(shù)據(jù)段, 新的物理屬性, 舊分區(qū)被刪除相應(yīng)的局部索引也被SPLIT, 并被標(biāo)記為IU全局索引和非分區(qū)索引被標(biāo)記為IUalter table stu_score split partition score_q2 at (1997,10,1) into (partition score_q21, partition score_q22); 分區(qū)名 分區(qū)上限值 分區(qū)索引 SCORE_Q1 1997, 07, 01 INDEX_Q

33、1SCORE_Q21 1997, 10, 01 SCORE_Q21SCORE_Q22 1998, 02, 01 SCORE_Q22SCORE_Q3 1998, 07, 01 INDEX_Q3分區(qū)表的操作交換數(shù)據(jù)ALTER TABLE EXCHANGE PARTITION用于非分區(qū)表和分區(qū)表的一個分區(qū)之間的雙向交換??梢越粨Q數(shù)據(jù)和索引段物理屬性不變可以帶with validation 或without validation。當(dāng)數(shù)據(jù)不在分區(qū)范圍時, WITH VALIDATION將報錯。WITHOUT VALIDATION假定數(shù)據(jù)均在分區(qū)范圍。例:alter table stu_score exc

34、hange partition score_q1 with table stu_score97 without validation ;分區(qū)表操作合并分區(qū)使用IMPORT/EXPORT可以將鄰近分區(qū)合并為一個分區(qū)使用Export從低層分區(qū)取出要合并的數(shù)據(jù)使用SQL語句DROP已經(jīng)Exported的分區(qū)使用Import將取出的數(shù)據(jù)合并到鄰近分區(qū)使用SQL語句實現(xiàn)分區(qū)的合并insert into stu_tempselect * from stu_score partition(score_q1);alter table stu_score drop partition score_q1;inse

35、rt into stu_scoreselect * from stu_temp;SQL語句的并行處理什么是Oracle的并行并行服務(wù)器選項允許多個數(shù)據(jù)庫實例運行在一個松散耦合多處理器系統(tǒng)(或集群系統(tǒng))的不同接點上,同時存取一個 Oracle物理數(shù)據(jù)庫,從而為用戶提供了多種數(shù)據(jù)庫存取路徑。并行、容錯并行SQL語句處理將一個SQL語句(如查詢)分為幾個子任務(wù),然后啟動多個進程并行處理子任務(wù),并將結(jié)果快速返回給用戶。 利用多進程、多CPU,縮短語句執(zhí)行時間。SQL語句的并行執(zhí)行不需要并行服務(wù)器選項。串行處理掃描emp表掃描dep表連接排序CPUCPUCPUCPU查詢結(jié)果Select ename,ag

36、e,dnamefrom emp,depwhere emp.dno=dep.dnoorder by age;單個進程執(zhí)行一條SQL語句SQL語句的并行處理Select ename,age,dnamefrom emp,depwhere emp.dno=dep.dnoorder by age;掃描emp表掃描dep表連接排序CPUCPUCPUCPU查詢結(jié)果多個進程執(zhí)行一條SQL語句并行處理的條件軟件環(huán)境 并行SQL處理系統(tǒng)。一個并行的SQL處理系統(tǒng)接受一個SQL請求,智能地將它分解為幾個較小的可以并行的子任務(wù),然后使用所有空閑的CPU并行處理這些子任務(wù),以達到縮短總處理時間的目的。Oracle服務(wù)器

37、使用一種特殊的操作系統(tǒng)進程結(jié)構(gòu),并行處理對數(shù)據(jù)庫的某些請求。硬件 多CPU系統(tǒng)并行SQL語句的硬件環(huán)境SMP(symmetric multiprocessor )對稱多處理機CPUCPUCPU內(nèi)存可以被并行處理的操作select(掃描表) , update , delete insert select 連接操作(join)聚合操作(統(tǒng)計)not in , group by , order by select distinct , union create table as select create index , rebuild indexsplit partiton , move part

38、ition , rebuild index partition 從SQL語句中調(diào)用PL/SQL函數(shù)。并行機制-協(xié)調(diào)進程一個協(xié)調(diào)進程(coordinator)調(diào)度多個從屬進程(slave processes)并行執(zhí)行SQL語句。Select * from emp ;串行進程Emp表Select * from emp ;協(xié)調(diào)進程Emp表并行進程并行機制并行優(yōu)化器當(dāng)用戶執(zhí)行SQL語句時,優(yōu)化器確定是否以并行方式執(zhí)行語句,以及每一個操作的并行度是多少。并行進程池在啟動一個數(shù)據(jù)庫實例后,Oracle 建立一個并行進程池。當(dāng)開始并行操作時,協(xié)調(diào)進程從并行池中獲得并行進程資源,并把它們分配給有關(guān)操作。實行并

39、行步驟SQL語句的前臺進程變?yōu)椴⑿袇f(xié)調(diào)進程。協(xié)調(diào)進程根據(jù)并行度從并行池中獲得所需數(shù)量的從屬并行進程。系統(tǒng)將SQL語句化為一系列的操作,每個操作都盡可能地并行執(zhí)行。當(dāng)語句處理完畢,協(xié)調(diào)進程返回結(jié)果給用戶進程,并釋放從屬并行進程(回進程池)。并行方法塊并行按ROWID的范圍并行適用于查詢(包括select 語句和在 DML和DCL中的子查詢)。適用于move split 分區(qū),rebuild 分區(qū). 適用于分區(qū) / 非分區(qū)的表和索引。分區(qū)并行適用于對分區(qū)表和分區(qū)索引的操作。從屬進程并行適用于往非分區(qū)表中插入數(shù)據(jù)。插入記錄時, 將記錄分?jǐn)偟礁鱾€從屬進程分別插入因新記錄還沒有rowid,所以無法塊并行

40、。并行計劃優(yōu)化器確定了一條語句的執(zhí)行計劃協(xié)調(diào)器決定計劃中的每一個操作的并行方法塊并行、分區(qū)并行 優(yōu)化器確定執(zhí)行計劃中操作的執(zhí)行順序 語句的數(shù)據(jù)流操作之間的并行需要其他操作輸出的操作稱為父操作父操作子操作 : 消費者 生產(chǎn)者兩種并行一個操作的并行 intro-operation 并行數(shù)據(jù)流中不同操作之間的并行 inter-operation 并行并行模式Select * from emp order by ename ; (無索引)如果并行度為4,意味著對于任何給定的操作,可以激活4個并行進程 。實際上8個進程執(zhí)行該語句。 Intro inter intro用戶進程協(xié)調(diào)進程A-GH-MN-ST-

41、ZscanscanscanscanEmp表并行度指定為執(zhí)行一個單一操作而啟動的進程數(shù)叫并行度語句級指定 PARALLEL子句 PARALLEL (DEGREE 4) 語句提示hint /* + parallel(emp ,3) */表和索引級在建表和索引的語句中指定。隱含指定基于CPU數(shù)、存儲表的設(shè)備(磁盤)數(shù)、分區(qū)數(shù)等并行度確定并行協(xié)調(diào)程序決定并行度的依據(jù):檢查在 SQL語句中的hint或parallel 子句。檢查在表和索引定義語句中的指定。使用隱含并行度指定。一旦確定并行度,它將成為有關(guān)操作的并行度,即協(xié)調(diào)進程為一操作申請的并行進程數(shù)。而實際進程數(shù)還取決于進程池中的可用資源。并行子句語法

42、Parallel子句語法(在DDL語句中使用)用于create table ,create index , create clusteralter table, alter indexrebuild ,alter clusteralter databaserecoverhint 指定(在DML語句中使用)/*+ parallel(表名,并行度) */noparallellparallell()degreeinstancesintegerdefault并行執(zhí)行SQL語句例以并行度4同時執(zhí)行掃描和更新 update /* + parallel(emp, 4) */ empset sal = sal

43、 + 100 where age50 ;以并行度3執(zhí)行插入語句insert /* + parallel(emp2, 3) */into emp2 select /* + parallel(emp1, 5) */ from emp1;以并行度4執(zhí)行刪除語句delete /* + parallel(tab1, 4) */ from tab1where col1 50 and col150;采用表定義隱含并行度值(5)select * from emp2 where age50;采用系統(tǒng)隱含值select * from emp1 where age50;PARALLEL( DEGREE 1 INST

44、ANCES 1)等同于 NOPARALLELdegree 單實例中的并行instances 實例間的并行(沒有并行服務(wù)器時忽略)兩種并行度分別在并行服務(wù)器的5個實例上各啟動5個恢復(fù)進程, 共25個進程。ALTER DATABASE RECOVERTABLESPACE binkyPARALLEL (DEGREE 5 INSTANCES 5);改變EMP1表的預(yù)定義并行度ALTER TABLE emp1PARALLEL (DEGREE 2);并行DML模式為使并行DML生效,會話需要PARALLEL DML模式(特殊的鎖、空間分配等)ALTER SESSION ENABLE PARALLEL DM

45、L;一個事物可以包含多個修改不同表的并行DML, 但對于某個表作了并行DML修改后, 不能在此事務(wù)中再對該表作任何形式的訪問。查詢(包括DML語句中的子查詢)和DDL語句不受此影響。其他約束在并行DML操作中不支持觸發(fā)器對自身的引用和連帶刪除必須被禁止并行插入刪除和修改不支持包含對象類型的表不支持聚集表復(fù)制功能中不支持并行DML并行工作 的平衡適當(dāng)指定并行度可以優(yōu)化性能、平衡并行操作例:emp表有10個分區(qū)并行度=1并行度=5 并行度=10并行度=9并行度=4處理時間 不等于 分區(qū)數(shù) / 進程數(shù)大型對象-新數(shù)據(jù)類型支持多媒體數(shù)據(jù) 大型對象-多媒體數(shù)據(jù)類型三種類型的LOB二進制LOB (BLOB

46、):無結(jié)構(gòu)的二進制大對象字符LOB (CLOB):字符數(shù)據(jù)(不支持變寬字符集)二進制文件 (BFILE):最大長度由OS定對于LOB類型數(shù)據(jù),表的列值為一定位器值,標(biāo)明數(shù)據(jù)存放的位置:BLOB和CLOB :指向一個分開的由數(shù)據(jù)庫分配的保存LOB的位置。 BFILE:指向一個外部文件。LOB數(shù)據(jù)沒有必要與一般數(shù)據(jù)存放在一起。僅在需要時才訪問它們。LOB可以是對象類型的屬性每行只能有一個 LONG LONG在線存儲 LONG = 2G LONG不能復(fù)制 LONG不能記錄日志OCI可以處理該類型數(shù)據(jù)。varchar2 4k字符比較每行可以包含多個 LOBLOB可以離線存儲LOB select * f

47、rom person;列或?qū)傩灶愋蜔o法通過 SQL*Plus 顯示更新LOB數(shù)據(jù)自動加行鎖不適用于LOB數(shù)據(jù)。要讀加鎖select pname from personwhere pname=張大年 for update ;update personset resume=新簡歷 where pname =張大年 ;update personset homepage= bfilename(person_dir,zhang.html)where pname=張大年 ;排他鎖僅在更新內(nèi)部存儲的LOB數(shù)據(jù)時必要處理LOB數(shù)據(jù)的接口ORACLE提供大量的操縱LOB數(shù)據(jù)的接口DBMS_LOB包 包含一系列函

48、數(shù)和過程 OCI也包含大量API檢查LOB數(shù)據(jù)的函數(shù)和過程COMPARE 比較兩個LOB數(shù)據(jù) GETLENGTH 執(zhí)行sql 的length 函數(shù) INSTR 查找字符串位置,執(zhí)行sql 的instr 函數(shù) READ 讀入一段LOB值 SUBSTR LOB數(shù)據(jù)取子串,執(zhí)行sql 的substr 函數(shù)處理LOB數(shù)據(jù)的接口改變LOB數(shù)據(jù)的函數(shù)和過程APPEND 把一個LOB數(shù)據(jù)追加到另一LOB數(shù)據(jù)后COPY 將一個LOB值的指定部分拷貝到另一LOB列ERASE 刪除部分或全部LOB值 LOADFROMFILETRIM 執(zhí)行sql 的rtrim 函數(shù)。刪除最右邊的指定串 WRITE 在LOB數(shù)據(jù)中的

49、指定點寫入數(shù)據(jù)處理BFILE的接口DBMS_LOB包中有關(guān)BFILE的函數(shù)/ 過程FILEOPEN 打開文件以讀入數(shù)據(jù)FILECLOSE 關(guān)閉打開的文件FILECLOSEALL 關(guān)閉所有打開的文件FILEEXISTS 確定BFILE定位器所引用的文件是否存在。FILEGETNAME 獲得一個BFILE定位器所引用的外部文件的名稱。判斷一個外部文件是否打開FILEISOPENLOB數(shù)據(jù)處理(讀)Declare locator_var CLOB ; 要操作的 LOB定位器 BLOB amount_var integer ; 要讀入的字符數(shù) offset_var integer ; 讀操作的起始點

50、output_var varchar2(10) ; 讀入數(shù)據(jù)變量 RAWbegin amount_var :=10 ; offset_var := 1 ; select resume into locator_var from person where pname=張大年 ; DBMS_LOB.READ( locator_var , amount_var , offset_var , output_var ) ; DBMS_OUTPUT.PUT_LINE(start of resume: | output_var ) ;end ;LOB數(shù)據(jù)處理(寫)Declare locator_var CL

51、OB ; 要操作的 LOB定位器 amount_var integer ; 要寫入的字符數(shù) offset_var integer ; 寫操作的起始點 buffer_var varchar2(12) ; 寫入內(nèi)容變量 begin amount_var :=12 ; offset_var := 10 ; buffer_var := add new text ; select resume into locator_var from person where pname=張大年 for update ;DBMS_LOB.WRITE( locator_var , amount_var , offset

52、_var , buffer_var ) ;commit ;end ;LOB數(shù)據(jù)處理varchar2和raw的最大長度為32767 SUBSTR函數(shù)output_var := DBMS_LOB.SUBSTR( locator_var , amount_var , offset_var ) ;GETLENGTH函數(shù)declare locator_var CLOB ; length_var ineger ; begin select resume into locator_var from person where pname=張大年 ; length_var:=DBMS_LOB.GETLENGTH

53、(locator_var); DBMS_OUTPUT.PUT_LINE(length of LOB is | length_var ) ;end ;加載LOB數(shù)據(jù)DBMS_LOADFROMFILE(desc_lob IN OUT BLOB|CLOB|NCLOB,src_lob IN BFILE ,amount IN INTEGER ,從源文件讀取的字節(jié)數(shù)desc_offset IN INTEGER, 目標(biāo)文件寫入位置,單位字節(jié)/字符src_offset IN INTEGER ) 源文件讀出位置,單位:字節(jié)LOB數(shù)據(jù)處理注意事項在對BFILE列處理時,如果出現(xiàn)例外,應(yīng)該在例外處理部分調(diào)用FILE

54、CLOSE包過程。當(dāng)刪除LOB列時BLOB和CLOB:定位器和LOB值都將被刪除BFILE:僅刪除定位器。(外部文件要手工刪除)(第14講)考場作文開拓文路能力分解層次(網(wǎng)友來稿)江蘇省鎮(zhèn)江中學(xué) 陳乃香說明:本系列稿共24講,20XX年1月6日開始在資源上連載【要義解說】文章主旨確立以后,就應(yīng)該恰當(dāng)?shù)胤纸鈱哟?,使幾個層次構(gòu)成一個有機的整體,形成一篇完整的文章。如何分解層次主要取決于表現(xiàn)主旨的需要?!静呗越庾x】一般說來,記人敘事的文章常按時間順序分解層次,寫景狀物的文章常按時間順序、空間順序分解層次;說明文根據(jù)說明對象的特點,可按時間順序、空間順序或邏輯順序分解層次;議論文主要根據(jù)“提出問題分析

55、問題解決問題”順序來分解層次。當(dāng)然,分解層次不是一層不變的固定模式,而應(yīng)該富于變化。文章的層次,也常常有些外在的形式:1小標(biāo)題式。即圍繞話題把一篇文章劃分為幾個相對獨立的部分,再給它們加上一個簡潔、恰當(dāng)?shù)男?biāo)題。如世界改變了模樣四個小標(biāo)題:壽命變“長”了、世界變“小”了、勞動變“輕”了、文明變“綠”了。 2序號式。序號式作文與小標(biāo)題作文有相同的特點。序號可以是“一、二、三”,可以是“A、B、C”,也可以是“甲、乙、丙”從全文看,序號式干凈、明快;但從題目上看,卻看不出文章內(nèi)容,只是標(biāo)明了層次與部分。有時序號式作文,也適用于敘述性文章,為故事情節(jié)的展開,提供了明晰的層次。 3總分式。如高考佳作人生也是一張答卷。開頭:“人生就是一張答卷。它上面有選擇題、填空題、判斷題和問答題,但它又不同于一般的答卷。一般的答卷用手來書寫,人生的答卷卻要用行動來書寫。”主體部分每段首句分別為:選擇題是對人生進行正確的取舍,填空題是充實自己的人生,判斷題是表明自己的人生態(tài)度,問答題是考驗自己解決問題的能力。這份“試卷”設(shè)計得合理而且實在,每個人的人生都是不同的,這就意味著這份人生試卷的“答案是豐富多彩的”。分解層次,應(yīng)追求作文美學(xué)的三個價值取向:一要勻稱美。什么材料在前,什么材料在后,要合理安排;什么材料詳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論