熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

找到無用的索引

2013-11-13 16:03:36  來源: Oracle 

  DML 性能低下其中最嚴重的原因之一是無用索引的存在所有SQL的插入更新和刪除操作在它們需要在每一行數據被改變時修改大量索引的時候會變得更慢
  
  許多Oracle 管理人員只要看見在一個SQL 查詢的WHERE語句出現了一列的話就會為它分配索引雖然這個方法能夠讓SQL運行得更快速但是基於功能的Oracle 索引使得數據庫管理人員有可能在數據表的行上過度分配索引過度分配索引會嚴重影響關鍵Oracle 數據表的性能
  
  在Oraclei出現以前沒有辦法確定SQL查詢沒有使用的索引讓我們看看Oraclei提供了什麼樣的方法讓你找到這些索引並刪除它們
  
  過程是相當簡單的Oraclei有一個工具能夠讓你使用ALTER INDEX命令監視索引的使用然後你可以查找這些沒有使用的索引並從數據庫裡刪除它們
  
  下面是一段腳本它能夠打開一個系統中所有索引的監視功能
  
  set pages ;
  
  set heading off;
  
  spoolrun_monitorsql
  
  select
  
    alter index ||owner||||index_name|| monitoring usage;
  
  from
  
    dba_indexes
  
  where
  
    owner not in (SYSSYSTEMPERFSTAT)
  
  ;
  
  spool off;
  
  @run_monitor
  
  你需要等待一段時間直到在數據庫上運行了足夠多的SQL語句以後然後你就可以查詢新的V$OBJECT_USAGE視圖
  
  select
  
    index_name
  
    table_name
  
    mon
  
    used
  
  from
  
    v$object_usage;
  
  在下面我們可以看見V$OBJECT_USAGE有一列被稱作USED它的值是YES或者NO不幸的是它不會告訴你Oracle使用了這個索引多少次但是這個工具對於找出沒有使用的索引還是很有用的
  
  INDEX_NAME        TABLE_NAME     MON  USED
  
                     
  
  CUSTOMER_LAST_NAME_IDX  CUSTOMER  YES  NO
From:http://tw.wingwit.com/Article/program/Oracle/201311/17743.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.