自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

oracle重建索引的實現(xiàn)

數(shù)據(jù)庫 Oracle
oracle重建索引有很多種方式,下文講講為您詳細介紹幾種方式異同以及優(yōu)缺點,如果您對此方面感興趣的話,不妨一看。

oracle重建索引是我們經(jīng)常會用到的操作,下面就將為您詳細介紹oracle重建索引的實現(xiàn)方法,希望對您能夠有所幫助。

oracle重建索引有多種方式,如drop and re-create、rebuild、rebuild online等。下面簡單比較這幾種方式異同以及優(yōu)缺點:

首先建立測試表及數(shù)據(jù):

  1. SQL> CREATE TABLE TEST AS SELECT CITYCODE C1 FROM CITIZENINFO2;  
  2.  
  3. Table created  
  4.  
  5. SQL> ALTER TABLE TEST MODIFY C1 NOT NULL;  
  6.  
  7. Table altered  
  8.  
  9. SQL> SELECT COUNT(1) FROM TEST;  
  10.  
  11. COUNT(1)  
  12. ----------  
  13. 16000000  
  14.  

一、drop and re-create和rebuild

首先看看正常建立索引時,對表的加鎖情況。

  1. suk@ORACLE9I> @show_sid  
  2.  
  3. SID  
  4. ----------  
  5. 14  
  6.  
  7. suk@ORACLE9I> CREATE INDEX IDX_TEST_C1 ON TEST(C1);  

索引已創(chuàng)建。

  1. SQL> SELECT OBJECT_NAME,LMODE FROM V$LOCK L,DBA_OBJECTS O WHERE O.OBJECT_ID=L.ID1 AND L.TYPE='TM' AND SID=14;  
  2.  
  3. OBJECT_NAME LMODE  
  4. ------------------------------ ----------  
  5. OBJ$ 3  
  6. TEST 4  

可見,普通情況下建立索引時,oracle會對基表加share鎖,由于share鎖和 row-X是不兼容的,也就是說,在建立索引期間,無法對基表進行DML操作。

對于刪除重建索引的方法就不介紹了,它與上面的描述是一樣的,下面我們看看用rebuild的方式建立索引有什么特別。

  1. suk@ORACLE9I> ALTER INDEX IDX_TEST_C1 REBUILD; 

索引已更改。

另開一個會話,查詢此時test的加鎖情況:

  1. SQL> SELECT OBJECT_NAME,LMODE FROM V$LOCK L,DBA_OBJECTS O WHERE O.OBJECT_ID=L.ID1 AND L.TYPE='TM' AND SID=14;  
  2.  
  3. OBJECT_NAME LMODE  
  4. ------------------------------ ----------  
  5. TEST 4  

可見,rebuild的方式對基表的加鎖方式與CREATE時是一樣的。

另開一個會話,在索引正在rebuild時,執(zhí)行如下SQL:

  1. suk@ORACLE9I> SET AUTOTRACE TRACE  
  2. suk@ORACLE9I> SELECT /*+ INDEX(TEST) */ COUNT(1) FROM TEST WHERE ROWNUM<10

執(zhí)行計劃

  1. ----------------------------------------------------------  
  2. SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=1)  
  3. 0 SORT (AGGREGATE)  
  4. 1 COUNT (STOPKEY)  
  5. 2 INDEX (FULL SCAN) OF 'IDX_TEST_C1' (NON-UNIQUE) (Cost=  
  6. 26 Card=1986621

可以看到oracle重建索引時,查詢?nèi)匀豢梢允褂门f索引。實際上,oracle在rebuild時,在創(chuàng)建新索引過程中,并不會刪除舊索引,直到新索引rebuild成功。

從這點可以知道rebuild比刪除重建的一個好處是不會影響原有的SQL查詢,但也正由于此,用rebuild方式建立索引需要相應(yīng)表空間的空閑空間是刪除重建方式的2倍。
 

 

 

【編輯推薦】

利用替換變量提高Oracle交互性

ORACLE系統(tǒng)表和數(shù)據(jù)字典視圖

帶您了解Oracle文件系統(tǒng)機制

詳解四大類Oracle索引掃描

Oracle查詢重復(fù)記錄的三種方法

 

責任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-11-16 09:49:22

Oracle重建索引

2009-10-21 16:34:03

Oracle用戶名重建索引

2009-08-05 13:32:07

Oracle按用戶名重

2019-08-20 22:06:32

Oracle數(shù)據(jù)庫索引

2011-07-27 13:22:35

檢查索引碎片Oracle數(shù)據(jù)庫重建索引

2010-10-29 13:50:21

oracle日志文件

2011-05-26 10:11:24

Oracle數(shù)據(jù)庫索引

2011-07-04 10:19:41

索引ONLINE

2018-01-18 16:10:42

數(shù)據(jù)庫MySQLOracle

2010-10-26 17:34:03

Oracle索引

2024-03-26 09:29:27

MySQLDDL

2010-04-19 16:09:22

Oracle控制文件

2010-10-26 16:33:54

創(chuàng)建Oracle索引

2009-10-22 16:25:53

Oracle UNDO

2015-09-02 13:38:38

Windows 10搜索索引

2010-10-27 13:47:50

Oracle索引

2010-10-26 17:17:37

創(chuàng)建ORACLE索引

2011-05-20 11:33:06

ORACLE索引約束

2010-07-26 09:34:24

SQL Server性

2009-11-17 13:49:46

Oracle prim
點贊
收藏

51CTO技術(shù)棧公眾號