TPCH的資料產生與匯入小結
來源:互聯網
上載者:User
qgen使用
qgen是產生22個查詢語句的產生器,啟動並執行同時需要dbgen queries下的22個sql模板和dbgendists.dss字典檔案。
首先按與dbgen相同的方法組建工程qgen,將得到的dbgenDebugqgen.exe,dbgenqueries下的22個sql查詢範本和dbgendists.dss字典檔案移動到建立的檔案夾to_query中。
然後開啟cmd,cd到to_query目錄,執行指令如下
qgen–d 1 > d1.sql
指令解釋:-d代表產生default格式的sql語句,1代表使用dbgenqueries下的第1個模板,> d1.sql代表利用具名管道將控制台的輸出重新導向到目前的目錄的d1.sql中。
最後,產生的sql語句還有一定的問題,需要做一些修改。結尾有set rowcount -1 go語句的將之去掉,將substring函數修改為substr函數,將表別名前面的as關鍵字去掉,將子查詢構成的別名後的列名移動到子查詢的select子句。
按照該格式一共需要產生22個default 的sql檔案,然後在sqlplus中set timing on開啟計時器,@剛才產生的sql檔案,進行測試
如果是需要強制並行查詢,則在sqlplus中設定
altersession force parallel query
無論原始表是否開啟了並行,設定了什麼並行度,查詢最佳化工具都採用並行查詢。
sqlldr補充
首先,sqlldr的載入有2種模式,常規路徑和直接路徑,前者要將資料轉化為INSERT語句,通過SGA區載入,後者將資料在記憶體中組成資料庫的資料區塊格式,直接寫入資料檔案,避免了語句解釋和記錄日誌的開銷,因此在類似資料倉儲的大量資料匯入時,一般採用直接路徑載入。
然後,載入方式除INSERT外,還可以取值APPEND、REPLACE和TRUNCATE。要執行INSERT,必須保證表為空白,否則sqlldr報錯,不能繼續執行。如果想向表中增加記錄,可以指定載入選項為APPEND;為了替換表中已有的資料,可以使用REPLACE或TRUNCATE。REPLACE使用DELETE語句刪除全部記錄;因此,如果要載入的表中已經包含許多記錄,這個操作執行得很慢。TRUNCATE使用 TRUNCATE SQL命令,執行更快,因為它不必物理地刪除每一行。但是TRUNCATE不能回退。要小心地設定這個選項,有時候其他參數也會影響這個選項。
最後,如果同一個表有多個外部資料檔案,那麼通過設定Parallel參數=TRUE,採用並行載入,可以提高載入速度,例如:
sqlldr scott/tiger control=lineitem.ctldirect=true parallel=true 內容來自17jquery
注意Parallel參數只是表示允許多個sqlldr進程同時載入,而不是對當前語句採用並行方式,也就是說,一個sqlldr命令只能串列載入。
Windows作業系統不支援&文法的後台進程,但是可以用開啟多個cmd視窗,分別執行多個不同的sqlldr語句的方式,也能達到相同的效果。需要指出的是,伺服器的I/O能力對載入有巨大的影響,如果讀寫的I/O頻寬已經用滿,那麼實際上就是sqlldr在等待I/O完成,那麼此刻再啟動多個sqlldr也不會提高載入效能。
EXP/IMP使用
匯入(IMP)/匯出(EXP)是ORACLE倖存的最古老的兩個作業系統命令列工具,Exp/Imp是一個好的轉儲工具,特別是在小型資料庫的轉儲,資料表空間的遷移,表的抽取,檢測邏輯和物理衝突等中有不小的功勞。它作為小型資料庫的物理備份後的一個邏輯輔助備份,也是不錯的手段。對于越來越大的資料庫,特別是TB級資料庫和越來越多資料倉儲的出現,EXP/IMP越來越力不從心了,這個時候,資料庫的備份都轉向了RMAN和第三方工具。
簡單的來說,exp和imp可以將oracle中的資料庫,表等內容匯出成檔案,既可以稱作備份,又可以做多台電腦間資料庫的移植,例如:
exp scott/tiger@orcl file=d:expfile.dmp tables=(PART) 17jquery.com
imp scott/tiger@orcl file=d:expfile.dmp tables=(PART)關鍵字:tpc-h, oracle TPC-H資料產生與