成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Oracle數(shù)據(jù)貨場(chǎng)中三種優(yōu)化:分區(qū)、維度和物化視圖

數(shù)據(jù)庫 Oracle
本文主要介紹了Oracle數(shù)據(jù)貨場(chǎng)中的三種優(yōu)化:對(duì)分區(qū)的優(yōu)化、維度優(yōu)化和物化視圖的優(yōu)化,并給出了詳細(xì)的優(yōu)化代碼,希望對(duì)您有所幫助。

我們?cè)谧鰯?shù)據(jù)庫的項(xiàng)目時(shí),對(duì)數(shù)據(jù)貨場(chǎng)的優(yōu)化,大約的原理只有兩個(gè):一是數(shù)據(jù)分塊儲(chǔ)藏,便于數(shù)據(jù)的轉(zhuǎn)儲(chǔ)和管教;二是其中處理,長(zhǎng)進(jìn)數(shù)據(jù)供給的速度。本文主要介紹了Oracle數(shù)據(jù)貨場(chǎng)中的三種優(yōu)化:對(duì)分區(qū)的優(yōu)化、維度優(yōu)化和物化視圖的優(yōu)化,基上面兩個(gè)大約的原理,借助于數(shù)據(jù)貨場(chǎng)的觀念,羅列數(shù)據(jù)庫的優(yōu)化措施:
1.分區(qū)
在數(shù)據(jù)貨場(chǎng)中,事實(shí)表,索引表,維度表分處于三個(gè)不同的表空間其中(在安排的時(shí)候,良好是安排到不同的磁盤上)。這么子做的起因即便便于并發(fā)壟斷,其實(shí)數(shù)據(jù)貨場(chǎng)和等閑的數(shù)據(jù)庫之間未曾嚴(yán)厲的界限,重要還是安排上,當(dāng)然oracle本身會(huì)為數(shù)據(jù)貨場(chǎng)中的“事實(shí)表”生成“知識(shí)庫”等壟斷,保證更快的數(shù)據(jù)供給效率,其實(shí)能夠借助于job和表面過程來調(diào)動(dòng)存儲(chǔ)過程告終。基于這個(gè)思路,本項(xiàng)目數(shù)據(jù)庫中的索引將和事實(shí)表離別維護(hù),當(dāng)然這稱不上分區(qū)()。懇摯的分區(qū)是指下面的內(nèi)容。
分區(qū)即便partition/subpartition,對(duì)于事實(shí)表本身來說,以月為單位作partition掛載到不同表空間上。翔實(shí)的示例如下:

  1. create table T_LOGNODE_RECORD  
  2. (  
  3. ……  
  4. CALLIN_HH NUMBER(2) not null,  
  5. CALLIN_DD NUMBER(2) not null,  
  6. CALLIN_MONTH NUMBER(2) not null,  
  7. CALLIN_YEAR NUMBER(4) not null,  
  8. MONTH_MOD NUMBER(1) not null  
  9. )  
  10. PARTITION BY LIST (MONTH_MOD)  
  11. (  
  12. PARTITION P0 VALUES (0) TABLESPACE TS0,  
  13. PARTITION P1 VALUES (1) TABLESPACE TS1,  
  14. PARTITION P2 VALUES (DEFAULT) TABLESPACE TS2  
  15. ); 

上述的代碼中以MONTH_MOD字段作為分區(qū)規(guī)范,將T_LOGNODE_RECORD分到三個(gè)不同的表空間(TS0,TS1,TS2)中,這里有一個(gè)技巧,MONTH_MOD = 月份mod3,這么子能夠無須要人工的維護(hù)哪個(gè)月分入哪個(gè)分區(qū)。當(dāng)然容易的以月作為分區(qū)爾后,對(duì)于我們目前的數(shù)據(jù)庫來說還是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)榧幢闶且粋€(gè)月的數(shù)據(jù)依舊是很宏偉的,那么必需我們做SUBPARTITION,做法的示例為:

  1. create table T_LOGNODE_RECORD  
  2. (  
  3. ……  
  4. CALLIN_DD NUMBER(2) not null,  
  5. MONTH_MOD NUMBER(1) not null  
  6. )  
  7. PARTITION BY RANGE(MONTH_MOD)  
  8. SUBPARTITION BY LIST(CALLIN_DD)  
  9. SUBPARTITION TEMPLATE  
  10. (  
  11. SUBPARTITION SUBP1 values (1),  
  12. SUBPARTITION SUBP2 values (2),  
  13. SUBPARTITION SUBP3 values (3)  
  14. )  
  15. (  
  16. PARTITION P0 VALUES less than (1),  
  17. PARTITION P1 VALUES less than (2),  
  18. PARTITION P2 VALUES less than (3)  
  19. ); 

分區(qū)措施有三種:RANGE(范圍),LIST(列表分區(qū)),HASH(哈希分區(qū)),必需解釋的HASH分區(qū),是oracle調(diào)用內(nèi)置的hash函數(shù)來告終對(duì)數(shù)據(jù)的平衡散布,保證分區(qū)內(nèi)部的數(shù)據(jù)量雷同,因而只必需制訂分區(qū)的數(shù)量即可。
對(duì)于復(fù)合分區(qū)來說。不是所有分區(qū)款式都能夠嵌套的,oracle只扶持范圍列表分區(qū),范圍哈希分區(qū),尤其的范圍分區(qū)能夠扶持多個(gè)字段range by(field1,field2)。對(duì)于本項(xiàng)目管用到的分區(qū)措施,只有示例中給出的兩種,至于分區(qū)的利益,請(qǐng)察看google,^_^。給出壟斷的sql示例如下:

  1. select * from T_LOGNODE_RECORD partition(P0)  
  2. update T_LOGNODE_RECORD partition(P0) t set…… 

insert語句未曾波及。當(dāng)然上述的壟斷能夠像等閑的Sql語句一樣,不指定分區(qū)也能夠舉行,但在查詢的時(shí)候請(qǐng)盡量能確定分區(qū)和子分區(qū)subpartition,這么子會(huì)讓查詢的速度長(zhǎng)進(jìn)百倍。能夠剔除指定的分區(qū)drop可能truncate, EXPORT和IMPORT分區(qū)中數(shù)據(jù),然而當(dāng)舉行分區(qū)的剔除壟斷的時(shí)候,會(huì)使大局的索引(index)實(shí)效,必需重興發(fā)生。
2.維度
Dimension這個(gè)算是oracle的進(jìn)階功能了,在PLSQL Developer未曾措施找到這個(gè)對(duì)象(然而能夠厲行語句來生成該對(duì)象,然而無法舉行后期的維護(hù)),只能在Toad中有它的身影。它是闡明數(shù)據(jù)維度字段之間的大小聯(lián)系。標(biāo)兵的慷慨是下面的年月日了。

  1. create table DIM_TIME  
  2. (  
  3. D_YEAR VARCHAR2(4) not null,  
  4. D_QUATER VARCHAR2(2) not null,  
  5. D_MONTH VARCHAR2(2) not null,  
  6. D_DAY DATE not null  
  7. )  
  8. CREATE DIMENSION DIM_TIME  
  9. LEVEL YEAR IS (DIM_TIME.D_YEAR)  
  10. LEVEL QUATER IS (DIM_TIME.D_QUATER)  
  11. LEVEL MONTH IS (DIM_TIME.D_MONTH)  
  12. LEVEL DAY IS (DIM_TIME.D_DAY)  
  13. HIERARCHY Y_Q_M_D  
  14. (  
  15. DAY CHILD OF  
  16. MONTH CHILD OF  
  17. QUATER CHILD OF YEAR  
  18. )  
  19. HIERARCHY Y_M_D  
  20. (  
  21. DAY CHILD OF  
  22. MONTH CHILD OF YEAR  

發(fā)生了兩條繼承聯(lián)系Y_Q_M_D和Y_M_D。當(dāng)DIM_TIME本身的普查,以及與其他表作聯(lián)合查詢?nèi)缓髤R總時(shí),月的匯總數(shù)據(jù)積極以日匯總的數(shù)據(jù)為基礎(chǔ),這么子大大長(zhǎng)進(jìn)數(shù)據(jù)匯總的速度。
可感受一張表發(fā)生多個(gè)維度表,一個(gè)維度中能夠有多個(gè)繼承聯(lián)系。維度極大程度上長(zhǎng)進(jìn)了數(shù)據(jù)匯總的速度,使我們這個(gè)項(xiàng)目標(biāo)數(shù)據(jù)普查分析的利器。
3.  物化視圖(快照)
物化視圖MATERIALIZED VIEW。劃算開心的是PLSQL Developer和Toad上同時(shí)具有了這個(gè)對(duì)象的存在(Toad上可能將這個(gè)稱為快照snapshots),然而令人煩悶的事情發(fā)生了,在PLSQL Developer上寫成的MATERIALIZED VIEW在Toad中無法分辨,看來還要兩個(gè)都用能力夠。
物化視圖,望文生義具有視圖的屬性,它是發(fā)生在切實(shí)表的基礎(chǔ)上,將切實(shí)表中的數(shù)據(jù)籠統(tǒng)揭示,甚至創(chuàng)立的措施都幾乎一樣。然而它成為物化,就意味著它是實(shí)體對(duì)象,從某種含義上將,它更像一個(gè)其中表,能夠像表格一樣直接查詢其中的數(shù)據(jù)(甚至就在table列表中能夠看到它),然而它不但僅是其中表,因?yàn)樗軌虿霸急淼臄?shù)據(jù),并且oracle能夠積極將針對(duì)原始表的查詢匯總語句直接重定向到物化視圖上,來晉級(jí)查詢的速度。

  1. CREATE MATERIALIZED VIEW MV_LOG_RECORD  
  2. REFRESH FORCE  
  3. ON DEMAND  
  4. ENABLE QUERY REWRITE  
  5. AS  
  6. SELECT tcmy8.com. NODE_ID, Count(*) as Call_Times  
  7. from T_LOGNODE_RECORD t  
  8. GROUP BY t. T_LOGNODE_RECORD 

上面的SQL語句就曾經(jīng)在T_LOGNODE_RECORD表上發(fā)生一個(gè)物化視圖。REFRESH的參數(shù) FORCE表示迫使刷新,還能夠抉擇的參數(shù)有fast和complete兩種,fast是最快的刷新措施,表示增量刷新(要做到增量刷新,定然在物化視圖中包括單一性的標(biāo)明的字符,如主鍵和rowid等,當(dāng)然即便包括了也無須定能夠做到迅速刷新,因?yàn)槲覀冺?xiàng)目中未曾波及到要刷新的物化視圖,在此就不多言了);complete表示全面的數(shù)據(jù)刷新,重新生成物化視圖;force是抉擇性的刷新,依據(jù)切實(shí)的情形來抉擇是force還是complete。
ON DEMAND表示刷新引發(fā)的條件。上面的物化視圖只有在用戶發(fā)動(dòng)查詢哀求時(shí),才會(huì)去刷新數(shù)據(jù),即刻原始表中的數(shù)據(jù)取到物化視圖的表中。還有一種措施即便 ON COMMIT,當(dāng)用戶壟斷原始數(shù)據(jù)時(shí),就刷新對(duì)應(yīng)的物化視圖,這種措施合乎對(duì)于及時(shí)性要求高的項(xiàng)目。萬一必需做定時(shí)的刷新,即將用到下面的措施lr.lrheicha.com:
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1/48。
物化視圖是能夠橫亙多個(gè)表的,也能夠直接的查詢物化試圖,例如你能夠:
Select * from MV_LOG_RECORD.

歸納
在上述的三種措施中,屬于數(shù)據(jù)庫功能優(yōu)化的重要手段,當(dāng)然還有許多能夠做的細(xì)節(jié)的優(yōu)化,例如盡量不要在你要查詢的字段上面批準(zhǔn)為空,盡量將聯(lián)合查詢的聯(lián)系扼制為number型等等。
對(duì)了,萬一做了維度表,做了物化試圖,你去查詢?cè)急淼臅r(shí)候速度定然會(huì)添置么?答案是“不”,你要做的一個(gè)重要的事情,即便告訴oracle,它能夠積極的優(yōu)化查詢,語句如下:

  1. ALTER SESSION SET QUERY_REWRITE_ENABLED=TRUE;  
  2. ALTER SESSION SET QUERY_REWRITE_INTEGRITY=TRUSTED

關(guān)于Oracle數(shù)據(jù)貨場(chǎng)中三種優(yōu)化的知識(shí)就介紹到這里了,希望能夠帶給您一些收獲,謝謝!

【編輯推薦】

  1. 解決Linux下sqlplus無響應(yīng)的三種方法
  2. Oracle 9i在AIX5L系統(tǒng)上的詳細(xì)安裝過程
  3. Oracle 數(shù)據(jù)庫如何設(shè)置歸檔模式與非歸檔模式
  4. Oracle數(shù)據(jù)庫利用日志挖掘來恢復(fù)誤刪除的數(shù)據(jù)
  5. Linux環(huán)境下Oracle10G和Oracle11G并存的安裝和配置
責(zé)任編輯:趙鵬 來源: 新浪博客
相關(guān)推薦

2021-11-29 06:57:50

App使用屬性

2010-04-26 12:19:28

Oracle 數(shù)據(jù)庫

2024-07-16 14:15:09

2009-11-17 15:59:25

Oracle物化視圖

2010-04-02 13:15:01

Oracle跟蹤

2010-04-12 16:35:15

Oracle數(shù)據(jù)庫

2024-02-26 13:47:00

C#Socket數(shù)據(jù)接收

2009-11-17 16:47:09

Oracle物化視圖日

2009-05-06 11:09:10

Oracle物化視圖數(shù)據(jù)庫

2010-10-28 10:27:35

oracle賦權(quán)

2018-01-17 15:02:28

VMware網(wǎng)絡(luò)連接

2010-11-19 10:11:49

Oracle物化視圖

2012-03-26 12:23:25

JavaSwing

2010-07-07 09:14:35

SQL Server數(shù)

2010-05-04 10:20:17

Oracle物化視圖

2017-01-05 16:19:12

C++正則表達(dá)式

2009-06-09 16:53:22

Java Swing處理方法比較

2009-07-01 17:22:05

連接字符串

2010-11-19 14:51:09

Oracle數(shù)據(jù)庫關(guān)閉

2011-05-26 13:16:37

Oracle數(shù)據(jù)庫備份
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产视频一区二区在线观看 | 福利国产 | 亚洲午夜精品一区二区三区他趣 | 亚洲成人精品在线 | 亚洲一二三区精品 | 久久手机在线视频 | 一区二区三区视频在线免费观看 | 成人国产精品免费观看 | 伊人久久综合 | 成人美女免费网站视频 | 欧美在线| 天天干,夜夜操 | 热re99久久精品国产99热 | 中文字幕1区| 久久久久网站 | 日韩精品国产精品 | 日韩欧美在线观看 | 日韩免费视频一区二区 | 色在线免费 | 91久操视频 | 久久综合av| 成人久久18免费网站图片 | 欧美日韩一区二区三区四区 | 久在线 | 国产日韩欧美 | 亚洲区一区二 | 在线视频国产一区 | 蜜桃视频在线观看免费视频网站www | 国产精品伦一区二区三级视频 | 成人午夜精品一区二区三区 | 久久国产精品色av免费观看 | 亚洲成av人片在线观看无码 | 免费在线性爱视频 | www.激情.com | 伊人精品在线 | 国产精品v | 午夜寂寞福利视频 | 国产精品美女久久久久久久久久久 | 九九热这里 | 日本精品一区二区三区视频 | 97国产在线视频 |