101、如何監控oracle的索引是否使用

 很多軟件開發過程中,沒有注意合理規劃索引,造成一個表上有N多個索引,爲後續的維護和優化帶來麻煩。因此有時候需要監控已有的索引是否在使用,oracle提供了監控索引是否使用的工具,很簡單,簡要介紹一下。

首先,我們如果是監控一個表上的所有索引,可以這樣先生成監控的命令:

SQL> select 'alter index '||index_name||' monitoring usage;' from user_indexes where table_name=upper('mpaymentappl');

 

'ALTERINDEX'||INDEX_NAME||'MONITORINGUSAGE;'
------------------------------------------------------------
alter index IDX_MPAYMENTAPPL_BCODE monitoring usage;
alter index MPAYMENTAPPL_FLAGS monitoring usage;
alter index MPAYMENTAPPL_PAICODE monitoring usage;

 

然後執行這些腳本就開始監控了,監控信息可通過V$OBJECT_USAGE查看,通過used列可知道這個索引是否被使用:

 

SQL> select * from V$OBJECT_USAGE;


INDEX_NAME                     TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
------------------------------ ------------------------------ --- --- ------------------- -------------------
IDX_MPAYMENTAPPL_BCODE         MPAYMENTAPPL                   YES NO  03/24/2010 10:55:27
MPAYMENTAPPL_FLAGS             MPAYMENTAPPL                   YES NO  03/24/2010 10:55:27
MPAYMENTAPPL_PAICODE           MPAYMENTAPPL                   YES NO  03/24/2010 10:55:28

 

取消監控某個索引:

SQL> ALTER INDEX MPAYMENTAPPL_FLAGS NOMONITORING USAGE;

Index altered.

SQL> select * from V$OBJECT_USAGE
2  /

INDEX_NAME                     TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
------------------------------ ------------------------------ --- --- ------------------- -------------------
IDX_MPAYMENTAPPL_BCODE         MPAYMENTAPPL                   YES NO  03/24/2010 10:55:27
MPAYMENTAPPL_FLAGS             MPAYMENTAPPL                   NO  NO  03/24/2010 10:55:27 03/24/2010 10:57:19
MPAYMENTAPPL_PAICODE           MPAYMENTAPPL                   YES NO  03/24/2010 10:55:28

 

 

那些持續關注一定時間沒有使用的索引就可以刪除了,以提高DML操作效率

 

 

實際工作中,我們可以選擇暫時禁用索引功能,來提高數據表插入、修改效率。因爲,在索引起作用的情況下,大量數據的DML操作會帶來很多的索引更新和Redo Log的生成。這在批量數據加載的時候是不需要的。所以,可以暫時禁用索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章