nologgin和append
-nologging:
開啟了nologging,在歸檔和非歸檔模式下都有隻有append才能減少redo的生成.
-hints append :
使用append hint可以減少redo資訊的產生,可以較快的插入資料,資料遷移。
但是使用了append後,會阻塞其他session對TABLE的DML操作。它在上面加了個
LMODE為6級的鎖,用這個的時候一定要小心。在append操作完畢之後要儘快提交或者rollback。
不管表是否在nologging下,只要是direct insert,就不會對資料內容生成undo,也就是不會為insert而記錄rowid
-----------------------------------------------
Oracle插入資料有兩種模式:常規路徑和直接路徑。
常規路徑插入:Oracle會使用表中的空閒空間,並同時維護完整性約束。
直接路徑插入:Oracle直接在高水位線以外分配空間,直接對資料檔案進行寫操作,繞過了資料緩衝區,而且不維護完整性約束。
直接路徑插入不寫回滾只寫少量的重做日誌,因此具有最高的插入效率。
直接路徑插入,是在高水點之上分配臨時段,將資料插入時進此臨時段中。在提交後將高水點提升至臨時段之上。
在並行DML模式中,直接路徑插入是模式模式,要設定並行DML:
資料庫必須是企業版;
並行在session中enable並行DML;
目標表必須設定了並行屬性,或者在執行插入時指定並行提示。
直接路徑插入的其他考慮因素:
索引維護:Oracle在直接插入結束的時候維護索引,為了避免維護索引的效能影響,可以先刪除索引,等插入完
成會在重新建立。--(注意,這裡維護索引的時候應該是產生了undo)上面這種設想已經得到驗證,看到這樣一句話
直接路徑插入時,不產生表塊的回滾資訊,依賴高水點實現回滾。但時,如果表有索引,將會產生索引的回滾資訊,
而且索引的塊會被讀時Buffer cache。也就是說,資料不能“直接插入”進索引。
空間佔用:由於並行插入不使用表中現有空間,而在高水位線以外直接分配空間,所以直接路徑插入會比常規路
徑插入佔用更多的空間,在並行插入的情況下更加明顯。
鎖機制:在直接路徑插入過程中,Oracle在表上放置獨佔鎖。因此,使用者在直接路徑插入操作的同時對錶的插入、
更新、刪除以及索引的建立和重建操作都是被禁止的。使用者可以執行查詢操作,查詢會返回插入以前的資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10678398/viewspace-720575/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DG主庫忘記force logging情況下,insert append了nologgin表操作APP
- jQuery的append和appendTojQueryAPP
- nolog和append的使用APP
- oracle nologging和appendOracleAPP
- nologging和insert /*+append*/APP
- append和nologging的案例APP
- 聊聊Append、nologging和Redo LogAPP
- URLSearchParams append()APP
- jQuery append()jQueryAPP
- golang appendGolangAPP
- Append HintAPP
- append2 給append 新增回撥方法APP
- go中陣列,切片和append的玄學Go陣列APP
- CTAS和insert append的一個測試APP
- python append()PythonAPP
- URLSearchParams append() 方法APP
- jquery中append、prepend, before和after方法的區別jQueryAPP
- Parallel DML和append將在表上產生exclusive lockParallelAPP
- append()與html() 區別APPHTML
- Python3中列表方法append()和extend()的區別PythonAPP
- SAP ABAP Append structure 介紹APPStruct
- [原創]append_values hintAPP
- 使用 append 方法追加元素APP
- APPEND載入與DELETE操作APPdelete
- Nologging and append testAPP
- 【廖雪峰python入門筆記】list新增元素_append()和insert()Python筆記APP
- insert /*+ append */直接路徑插入APP
- append與 appendTo的區別APP
- APPEND,bulk collect,正常插入比較APP
- nologging與append ztAPP
- 臨時表的APPEND方式插入APP
- insert 中append 用法詳解APP
- [Bash] Append the content at the beginning of the fileAPP
- 歸檔模式下的 nologging和/*+ append */引數 效能測試模式APP
- 列表中的append,extend,+=,+的區別APP
- [golang]slice的坑:從append到共享GolangAPP
- PostgreSQLjson任意位置append功能實現SQLJSONAPP
- 【最佳化】hints之/*+append*/作業APP