亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

優化方案:ETL的過程原理和數據倉庫建設

2024-07-21 02:43:37
字體:
來源:轉載
供稿:網友
這篇論壇文章(賽迪網技術社區)根據筆者多年的數據倉庫實施經驗,同時結合ETL的過程原理和數據倉庫建設方法歸納總結了以下優化的方案,詳細內容請讀者參考下文:

1.引言

數據倉庫建設中的ETL(Extract, Transform, Load)是數據抽取、轉換和裝載到模型的過程,整個過程基本是通過控制用SQL語句編寫的存儲過程和函數的方式來實現對數據的直接操作,SQL語句的效率將直接影響到數據倉庫后臺的性能。

目前,國內的大中型企業基本都具有四年以上計算機信息系統應用經驗,積累了大量可分析的業務數據,這些信息系統中的數據需要通過搭建數據倉庫平臺才能得到科學的分析,這也是近幾年數據倉庫系統建設成為IT領域熱門話題的原因。

2.優化的思路分析

數據倉庫ETL過程的主要特點是:面對海量的數據進行抽?。环謺r段對大批量數據進行刪除、更新和插入操作;面對異常的數據進行規則化的清洗;大量的分析模型重算工作;有特定的過程處理時間規律性,一般整個ETL過程需要在每天的零點開始到6點之前完成。所以,針對ETL過程的優化主要是結合數據倉庫自身的特點,抓住需要優化的主要方面,針對不同的情況從如何采用高效的SQL入手來進行。

優化的實例分析

目前數據倉庫建設中的后臺數據庫大部分采用Oracle,以下的SQL采用Oracle的語法來說明,所有的測試在Oracle9i環境中通過,但其優化的方法和原理同樣適合除Oracle之外的其他數據庫。

3.1索引的正確使用

在海量數據表中,基本每個表都有一個或多個的索引來保證高效的查詢,在ETL過程中的索引需要遵循以下使用原則:

(1) 當插入的數據為數據表中的記錄數量10%以上時, 首先需要刪除該表的索引來提高數據的插入效率,當數據全部插入后再建立索引。

(2) 避免在索引列上使用函數或計算,在WHERE子句中,如果索引列是函數的一部分,優化器將不使用索引而使用全表掃描。舉例:

低效: SELECT * ROM DEPT WHERE SAL * 12 > 25000;

高效: SELECT * FROM DEPT WHERE SAL > 25000/12;

(3) 避免在索引列上使用NOT和”!=” , 索引只能告訴什么存在于表中,而不能告訴什么不存在于表中,當數據庫遇到NOT和”!=”時,就會停止使用索引轉而執行全表掃描。

(4) 索引列上用>=替代>

高效: SELECT * FROM EMP WHERE DEPTNO >=4

低效: SELECT * FROM EMP WHERE DEPTNO >3

兩者的區別在于,前者DBMS將直接跳到第一個DEPT等于4的記錄而后者將首先定位到DEPTNO=3的記錄并且向前掃描到第一個DEPT大于3的記錄。

(5) 函數的列啟用索引方法,如果一定要對使用函數的列啟用索引,Oracle9i以上版本新的功能:基于函數的索引(Function-Based Index)是一個較好的方案,但該類型索引的缺點是只能針對某個函數來建立和使用該函數。

CREATE INDEX EMP_I ON EMP (UPPER( ENAME));       

SELECT * FROM EMP WHERE UPPER(ENAME) = ‘BLACKSNAIL’;

3.2 游標的正確使用

當在海量數據表中進行數據的刪除、更新和插入操作時,用游標處理的效率是最慢的方式,但它在ETL過程中的使用又必不可少,而且使用有著及其重要的地位,所以游標的正確使用尤為重要。

對數據倉庫維表的數據進行維護時,因為需要保證維表ID的一致性,所以采用游標的是數據維護完整性的最好方式。由于它的效率低,如果按照普通的方式將無法處理大數據量的維表數據維護(一般是指10萬條記錄以上的維表),以下是處理這種情況的有效方式:

(1) 在數據抽取的源表中使用時間戳,這樣每天的維表數據維護只針對更新日期為最新時間的數據來進行,大大減少需要維護的數據記錄數。

(2) 在INSERT和UPDATE維表時都加上一個條件來過濾維表中已經存在的記錄,實例為:

INSERT INTO DIM_CUSTOMER SELECT * FROM ODS_CUSTOMER WHERE ODS_CUSTOMER.CODE NOT EXISTS (DIM_CUSTOMER.CODE)

(3) 使用顯式的游標(CURSORs) ,因為使用隱式的游標將會執行兩次操作,第一次檢索記錄,第二次檢查TOO MANY ROWS 這個EXCEPTION,而顯式游標不執行第二次操作。

3.3數據抽取和上載時的SQL優化

◆3.3.1 WHERE子句中的連接順序

ORACLE采用自下而上的順序解析WHERE子句,根據這個原理,表之間的連接必須寫在其它WHERE條件之前,那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾。

低效:SELECT * FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);

高效:SELECT * FROM EMP E WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;

◆3.3.2 刪除全表時用TRUNCATE替代DELETE

當DELETE刪除表中的記錄時,有回滾段(rollback segments ) 用來存放可以被恢復的信息,而當運用TRUNCATE時,回滾段不再存放任何可被恢復的信息,所以執行時間也會很短。同時需要注意TRUNCATE只在刪除全表時適用,因為TRUNCATE是DDL而不是DML。

◆3.3.3 盡量多使用COMMIT

ETL中同一個過程的數據操作步驟很多,數據倉庫采用的是數據抽取后分析模型重算的原理,所以對數據的COMMIT不像業務系統為保證數據的完整和一致性而需要某個操作過程全部完成才能進行,只要有可能就在程序中對每個DELETE、INSERT和UPDATE操作盡量多使用COMMIT, 這樣系統性能會因為COMMIT所釋放的資源而大大提高。

◆3.3.4 用EXISTS替代IN

在許多基于基礎表的查詢中,為了滿足一個條件往往需要對另一個表進行聯接,例如在ETL過程寫數據到模型時經常需要關聯10個左右的維表,在這種情況下,使用EXISTS而不用IN將提高查詢的效率。

◆3.3.5 用NOT EXISTS替代NOT IN

子查詢中,NOT IN子句將執行一個內部的排序和合并,無論在哪種情況下,NOT IN都是最低效的,因為它對子查詢中的表執行了一個全表遍歷。用NOT EXISTS替代NOT IN將提高查詢的效率。

◆3.3.6 優化GROUP BY

提高GROUP BY 語句的效率,可以通過將不需要的記錄在GROUP BY 之前過濾掉。

低效: SELECT JOB , AVG(SAL) FROM EMP GROUP BY JOB HAVING JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’

高效: SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’ GROUP BY JOB

◆3.3.7 有條件的使用UNION-ALL 替換UNION

ETL過程針對多表連接操作的情況很多,有條件的使用UNION-ALL 替換UNION的前提是:所連接的各個表中無主關鍵字相同的記錄,因為UNION ALL 將重復輸出兩個結果集合中相同記錄。

當SQL語句需要UNION兩個查詢結果集合時,這兩個結果集合會以UNION-ALL的方式被合并,然后在輸出最終結果前進行排序。如果用UNION ALL替代UNION,這樣排序就不是必要了,效率就會因此得到提高3-5倍

◆ 3.3.8 分離表和索引

總是將你的表和索引建立在不同的表空間內,決不要將不屬于ORACLE內部系統的對象存放到SYSTEM表空間里。同時確保數據表空間和索引表空間置與不同的硬盤控制卡控制的硬盤上。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美综合在线视频| 国产精品久久久久久婷婷天堂| 亚洲天堂第一页| 欧美日韩一区二区免费在线观看| 欧美性色视频在线| 亚洲国产小视频在线观看| 午夜精品久久久久久99热| 日韩亚洲一区二区| 日韩激情在线视频| 欧美极品在线视频| 亲子乱一区二区三区电影| 韩曰欧美视频免费观看| 久久久国产在线视频| 亚洲a∨日韩av高清在线观看| 北条麻妃99精品青青久久| 欧美日韩亚洲国产一区| 精品激情国产视频| 欧美最猛性xxxxx免费| 亚洲成在人线av| 日韩av在线精品| 欧美成人精品一区二区| 91精品视频大全| 欧美黑人又粗大| 亚洲精品在线不卡| 亚洲国内精品在线| 国产精品老女人视频| 欧美超级免费视 在线| 久久香蕉精品香蕉| 欧美性生交xxxxx久久久| 性色av一区二区三区红粉影视| 91久久久久久国产精品| 久久久999精品免费| 欧美午夜视频在线观看| 一本一道久久a久久精品逆3p| 亚洲美女av黄| 日韩在线一区二区三区免费视频| 性欧美办公室18xxxxhd| 91产国在线观看动作片喷水| 亚洲激情中文字幕| 久久伊人91精品综合网站| 亚洲一区二区三区xxx视频| 久久精品色欧美aⅴ一区二区| 国产精品亚洲美女av网站| 久久久噜噜噜久久久| 久久亚洲一区二区三区四区五区高| 久久久综合av| 日本精品性网站在线观看| 亚洲综合在线播放| 国产裸体写真av一区二区| 久99九色视频在线观看| 欧美日韩免费观看中文| 日韩欧美aⅴ综合网站发布| 欧美性xxxx极品hd欧美风情| 亲子乱一区二区三区电影| 8090成年在线看片午夜| 这里只有精品视频| 亚洲免费视频网站| 久久好看免费视频| 日韩有码片在线观看| 国产区精品视频| 精品国产一区二区三区久久狼5月| 精品国产一区二区在线| 狠狠做深爱婷婷久久综合一区| 国产日韩换脸av一区在线观看| 国产精品人人做人人爽| 成人写真视频福利网| 欧美精品在线第一页| 久久久久久噜噜噜久久久精品| 久久免费视频观看| 国产精品久久久久久久av电影| 欧美精品18videosex性欧美| 国产精品免费一区二区三区都可以| 日韩在线观看成人| 欧美激情高清视频| 亚洲毛片一区二区| 久久夜精品香蕉| 6080yy精品一区二区三区| 国产精品久久久久福利| 日韩欧美亚洲范冰冰与中字| 亚洲色在线视频| www.久久久久久.com| 国产欧美一区二区三区四区| 久久亚洲精品小早川怜子66| 亚洲欧美日韩高清| 成人久久18免费网站图片| 国产精品久久久久久久久久| 秋霞成人午夜鲁丝一区二区三区| 欧美日韩一区二区三区| 日韩精品免费在线| 亚洲人成电影网站色xx| 亚洲国产精品99久久| 亚洲精品久久在线| 欧美猛交免费看| 国产日韩精品一区二区| 国产一区二区三区直播精品电影| 91精品国产综合久久香蕉的用户体验| 欧美激情亚洲自拍| 91精品国产91久久| 亚洲国产古装精品网站| 日韩中文字幕精品| 欧美日韩国产色| 国产福利精品视频| 亚洲第一男人av| 亚洲成人激情小说| 亚洲影院在线看| 日韩成人在线播放| 亚洲国产精品va在看黑人| 亚洲第一精品夜夜躁人人爽| 欧美日韩成人精品| 国产精品老牛影院在线观看| 情事1991在线| 国产一区二区欧美日韩| 国产精品第三页| 国产成人97精品免费看片| 亚洲国产精品va在线看黑人| 国产精品久在线观看| 国产精品一区二区在线| 91av视频在线免费观看| 国产精品视频专区| 国产欧美精品va在线观看| 亚洲女人天堂色在线7777| 91亚洲va在线va天堂va国| 91精品国产综合久久香蕉的用户体验| 久久精品一偷一偷国产| 精品久久久免费| 久久久久久久国产精品| 色av中文字幕一区| 国产一区二区三区在线观看视频| 久久伊人精品一区二区三区| 国产精品欧美在线| 伊人一区二区三区久久精品| 久久久久久久国产精品视频| 97视频免费在线观看| 国产欧美日韩中文字幕| 成人精品视频在线| 91精品久久久久久久久中文字幕| 日韩国产高清污视频在线观看| 欧美激情视频免费观看| 国产精品视频区1| 国内伊人久久久久久网站视频| 欧美人成在线视频| 亚洲欧美中文日韩在线| 日本一区二三区好的精华液| 2024亚洲男人天堂| 韩国v欧美v日本v亚洲| 欧美成人精品在线视频| 欧美极品少妇xxxxⅹ免费视频| 国产精品爽爽爽| 91chinesevideo永久地址| 成人午夜在线视频一区| 亚洲乱码国产乱码精品精天堂| 亚洲成人av资源网| 欧美性xxxxx| 亚洲日本aⅴ片在线观看香蕉| 亚洲成人精品av| 日韩美女写真福利在线观看| 国产一区二区三区在线播放免费观看| 久久久91精品| 97人人做人人爱| 日韩av电影在线播放| 国产精品久久久久影院日本| 一区二区三区日韩在线| 欧美性生活大片免费观看网址| 国产欧美在线播放|