online 建立index的時候,oracle會等待insert , update的行(假設不超過table的30% ) c
Linux AS2.1 , 3.0 系統
版本有 :
Oracle 8.1.6.0 , Oracle8.1.7.0 , Oracle92.0.1 ,
Oracle 9.2.0.4
主題: ONLINE 建立 INDEX 時Oracle做了什麼 ?
以前建立大的索引大多數時候是在沒有 transaction 狀態下加入的,當然也沒有使用online 選項 。偶爾小一些的表,在20秒內能加入的我們都沒有使用online 選項 。
online 建立index的時候,是以什麼機制來建立的? oracle會等待insert , update的行( 假設這些行不超過table 行的30% ) commit或rollback之後才建立嗎? 如果是,那麼如果一直都有這個表上的少量資料update 及insert , 那麼建立這樣的索引會很慢 。 如果不是, 那麼當需要建立index的列的某些行由原來的值“ASIA_CHINA” 更新為“USA” 的時候,它在INDEX葉子結點上又是如何更新的 ; 還是說它的INDEX 根本還沒有被建立, 而是儲存在其他臨時的地方 ?
我們在做測試的時候, 同樣的表及資料量,其他環境也一樣, online加入index會比非online 加入慢很多 。
線上建立INDEX的文章 。
************************************************************************************
Creating an Index Online
Previously, when creating an index on a table there has always been a DML S-lock on that table during the index build operation, which meant you could not perform. DML operations on the base table during the build.
Now, with the ever-increasing size of tables and necessity for continuous operations, you can create and rebuild indexes online--meaning you can update base tables at the same time you are building or rebuilding indexes on that table. Note, though, that there are still DML SS-locks, which means you cannot perform. other DDL operations during an online index build.
The following statements perform. online index build operations:
ALTER INDEX emp_name REBUILD ONLINE;
CREATE INDEX emp_name ON emp (mgr, emp1, emp2, emp3) ONLINE;
--------------------------------------------------------------------------------
Note:
While you can perform. DML operations during an online index build, Oracle recommends that you do not perform. major/large DML operations during this procedure. For example, if you wish to load rows that total up to 30% of the size of an existing table, you should perform. this load before the online index build.
--------------------------------------------------------------------------------
**************************************************************************************
版本有 :
Oracle 8.1.6.0 , Oracle8.1.7.0 , Oracle92.0.1 ,
Oracle 9.2.0.4
主題: ONLINE 建立 INDEX 時Oracle做了什麼 ?
以前建立大的索引大多數時候是在沒有 transaction 狀態下加入的,當然也沒有使用online 選項 。偶爾小一些的表,在20秒內能加入的我們都沒有使用online 選項 。
online 建立index的時候,是以什麼機制來建立的? oracle會等待insert , update的行( 假設這些行不超過table 行的30% ) commit或rollback之後才建立嗎? 如果是,那麼如果一直都有這個表上的少量資料update 及insert , 那麼建立這樣的索引會很慢 。 如果不是, 那麼當需要建立index的列的某些行由原來的值“ASIA_CHINA” 更新為“USA” 的時候,它在INDEX葉子結點上又是如何更新的 ; 還是說它的INDEX 根本還沒有被建立, 而是儲存在其他臨時的地方 ?
我們在做測試的時候, 同樣的表及資料量,其他環境也一樣, online加入index會比非online 加入慢很多 。
線上建立INDEX的文章 。
************************************************************************************
Creating an Index Online
Previously, when creating an index on a table there has always been a DML S-lock on that table during the index build operation, which meant you could not perform. DML operations on the base table during the build.
Now, with the ever-increasing size of tables and necessity for continuous operations, you can create and rebuild indexes online--meaning you can update base tables at the same time you are building or rebuilding indexes on that table. Note, though, that there are still DML SS-locks, which means you cannot perform. other DDL operations during an online index build.
The following statements perform. online index build operations:
ALTER INDEX emp_name REBUILD ONLINE;
CREATE INDEX emp_name ON emp (mgr, emp1, emp2, emp3) ONLINE;
--------------------------------------------------------------------------------
Note:
While you can perform. DML operations during an online index build, Oracle recommends that you do not perform. major/large DML operations during this procedure. For example, if you wish to load rows that total up to 30% of the size of an existing table, you should perform. this load before the online index build.
--------------------------------------------------------------------------------
**************************************************************************************
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-521325/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- insert的時候使用append會不會影響到表的大小APP
- Drop table時候會徹底刪除index, Truncate 時候會清除index 但是index資料還是保留在HIndex
- best practice of rebuild your partition table local index online by using: "update indexes"RebuildIndex
- Index online operation的過程 ztIndex
- RDSforMySQLInnoDB行鎖等待和鎖等待超時的處理ORMMySql
- 面試的時候別再說你不會設計模式了面試設計模式
- 建立index時候要用到排序空間Index排序
- 建立index 使用Online導致的問題Index
- GreatSQL 中為什麼 Update 不會被鎖等待SQL
- 建立index 指定parallel,但是impdp時候匯入卻不是我建立的語句?IndexParallel
- index有時候可能會比表大!Index
- ES(Elastic Search)update操作設定無 docment時進行insertAST
- mysql 在delete、insert、update 時,page的變化MySqldelete
- oracle 繁忙時候建立索引Oracle索引
- ORACLE的Copy命令和create table,insert into的比較Oracle
- Oracle會話超時退出設定Oracle會話
- Oracle模擬MySQL的show index from table命令OracleMySqlIndex
- MySQL建立表的時候建立聯合索引的方法MySql索引
- 在使用alter system switch log的時候無時間限制的等待
- [20130909]12C執行計劃的TABLE ACCESS BY INDEX ROWID BATCHED.txtIndexBAT
- rebuild index online和create index online及沒有online的區別RebuildIndex
- session是什麼時候建立的Session
- update global indexes的online的程度研究Index
- 【Oracle】並行等待之PX Deq: Table Q NormalOracle並行ORM
- 通過oracle dbms_job建立tableOracle
- enable table lock 的enqueue等待ENQ
- [20130910]12C執行計劃的TABLE ACCESS BY INDEX ROWID BATCHED(補充).txtIndexBAT
- index rebuild online的問題IndexRebuild
- 關於oracle with table as 建立臨時表的用法示例以及使用with as 的優點Oracle
- ?ORACLE會話超時Oracle會話
- oracle中用Create Table建立表時,Storage中引數的含義!Oracle
- Creating an Index Online - 線上建立索引Index索引
- 誰遇到過執行 monkey 的時候報 filenotfound 的報錯
- C++結構體作為map的key的時候需要過載C++結構體
- "Alter index rebuild online parallel n"會修改索引的degree屬性IndexRebuildParallel索引
- oracle-11g建立使用者名稱的時候預設區分大小寫Oracle
- 你是什麼時候”突然”學會程式設計的程式設計
- Oracle EBS總賬與會計假設Oracle