exp速度快命令優化

2021-06-23 05:41:44 字數 2750 閱讀 8628

conventional path export和direct path export

從oracle7的release7.3開始,oracle開始在exp工具中提供兩種方法匯出表的資料:direct path匯出和conventional path匯出。通過exp的引數direct來判斷選用那種匯出方式。這個引數有兩個值y/n,如果指定為y,則表明exp是使用direct path的模式匯出資料,指定為n,表明資料庫是用conventional path的模式匯出資料的。如果不明確指定direct的值,預設是n,也就是用conventional path的模式匯出資料

一、兩種匯出的模式在匯出的原理上是存在差別的。

ø         conventional path模式匯出相當於使用select語句從表中取出資料,資料從磁碟上先讀到buffer cache中,記錄被轉移到乙個評估檢測的緩衝區中,資料經過語法檢測後沒有問題,將資料傳給exp的客戶端,最後寫入匯出的檔案中。

ø         如果使用direct path模式匯出,資料直接從磁碟上讀取到匯出的pga中:記錄直接被轉換匯出會話的私有buffer中。這也就是意味著sql語句處理層被忽略掉了,因為資料已經是符合匯出的格式了,不需要其他的轉換處理了。資料直接被傳送給匯出的客戶端,最後寫入匯出檔案。

二、兩種匯出模式效能上也有一定的差異。

ø         direct path匯出模式速度上明顯快於conventional path匯出模式,因為direct path匯出模式忽略了sql語句處理這一層。

ø         當使用direct path匯出模式的時候,可以增大引數recordlength的值來提高匯出的效能。匯出的效能主要取決以下的因素:db_block_size、匯出表上列的型別、匯出檔案的i/o層(主要是指導出檔案盡量要和資料庫的資料檔案在不同的磁碟上,避免i/o上的競爭)。一般來說,引數recordlength設定為作業系統i/o的block size或者是db_block_size的整數倍,例如64k。

ø         使用哪種模式匯出資料都不會影響匯入資料,也就是說匯入資料的時間是一樣的。

三、兩種匯出模式都存在一些限制,在某些情況下只能使用其中的一種。

ø         direct path匯出模式只能使用命令列或者引數檔案的方式來匯出,不能使用互動式的方式匯出資料,只有conventional path匯出模式可以使用互動式的方式。

ø         direct path匯出模式不能用於匯出表空間,即設定引數transport_tablespaces=y,其他的full、user、table模式均可以使用direct path匯出模式。

ø         在oracle8i以前的版本裡面,如果表裡面存在lob的物件,是不能使用direct path匯出模式匯出表的,如果使用direct path匯出模式匯出表,那些存在lob物件的記錄是不會被匯出的。自從oracle8i之後,這種限制就被取消了。對於oracle8i之後的版本,如果使用direct path匯出模式匯出表,那些存在lob物件的記錄是會自動以conventional path匯出模式來匯出。但是如果你用低於oracle8i的客戶端的exp工具的direct path匯出模式匯出oracle8i以上的資料庫存在lob物件的表,那些包含lob的記錄還是同樣不會被匯出。

ø         exp工具中的query引數只能用於conventional path匯出模式,query引數允許匯出乙個表的滿足一定條件的部分記錄。

ø         exp工具中的buffer引數只能用於conventional path匯出模式,buffer引數設定了用於fetch記錄的快取的大小,以位元組為單位,即在array中最大數量的記錄。

ø         引數recordlength指定檔案記錄的最大長度,以位元組為單位,即匯出i/o的buffer,最大為64k。這個引數決定了在沒寫入匯出檔案中快取中堆積資料的多少。如果沒有設定這個引數,在大多數平台的預設值是1024位元組。

ø         只有當環境變數中的nls_lang設定成跟匯出資料庫中的字符集一致的時候才能使用direct path匯出模式匯出資料。如果環境變數中的nls_lang和資料庫的字符集不一致的時候,匯出就會報類似下面的錯誤:

exp-41 "export done in server's utf8, different from user's character set we8iso8859p1"       

exp-0 "export terminated unsuccessfully".

這種限制只對於oracle8i及其更低版本的oracle有效,oracle8i以上的版本不會出現此類錯誤。

四、兩種匯出模式在安全方面的一些差異。

ø         對於虛擬資料庫(virtual private database)和oracle label security如果強制使用conventional path匯出模式匯出資料,匯出會成功的中止,但是存在類似下面的提示警告:exp-79 "da

ta in table %s is protected. conventional path may on

ly be exporting partial table."  

ø         對於sys使用者和被授予了exempt access policy許可權的使用者,在匯出資料的時候是不受虛擬資料庫(virtual private database)和oracle label security的影響的,兩種匯出模式均可以使用。但是我們需要注意的是,exempt access policy的許可權很大,在管理資料庫使用者的時候一般不要輕易授予,但是這個許可權不會影響對傳統物件執行select、insert、delete、update的操作。

哪個訪問速度快!

看如下 訪問c,和p的資料,哪乙個更快,還是一樣?void main 這還有區別?有也,我也是看了別人的分析,才明白。c為陣列,指向棧記憶體,p為指標,指向堆記憶體 賦值方式不同 11 char c 1234567890 彙編 如下 0040d6c9 mov eax,string 123456789...

Redis 為什麼速度快

1 完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o 1 2 資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的 3 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...

Kafka為什麼速度快

磁碟讀寫的快慢取決於你怎麼使用它,也就是順序讀寫或者隨機讀寫。在順序讀寫的情況下,磁碟的順序讀寫速度和記憶體持平。如果不刪除硬碟肯定會被撐滿,所以kakfa提供了兩種策略來刪除日誌 log.cleanup.policy配置 1 基於時間 檢查當前日誌檔案中是否有保留時間超過設定的閾值來尋找可刪除的日...