oracle中監控表中的索引是否使用
在oracle中,合理規劃索引,避免為後續的維護和優化帶來麻煩。因此有時候需要監控已有的索引是否在使用,oracle提供了監控索引是否使用的工具:monitoring
首先,我們如果是監控一個表上的所有索引,可以這樣先生成監控的命令:
SQL> select 'alter index '||index_name||' monitoring usage;' from user_indexes where table_name='MIDDLE_記錄表';'ALTERINDEX'||INDEX_NAME||'MON
------------------------------------------------------------
alter index IDX_BQ_SYNC_TIME monitoring usage;
alter index IDX_BQ_lrsj monitoring usage;
alter index IDX_BQ_CODE monitoring usage;
alter index IDX_BQ_SYNC_BZ monitoring usage;
然後執行這些指令碼就開始監控了,監控資訊可通過V$OBJECT_USAGE檢視,通過used列可知道這個索引是否被使用:
SQL> select * from V$object_Usage;
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IDX_BQ_SYNC_TIME MIDDLE_記錄表 YES NO 12/11/2016 15:00:55
IDX_BQ_lrsj MIDDLE_記錄表 YES NO 12/11/2016 15:00:55
IDX_BQ_BILLCODE MIDDLE_記錄表 YES NO 12/11/2016 15:00:55
IDX_BQ_SYNC_BZ MIDDLE_記錄表 YES NO 12/11/2016 15:00:55
取消監控某個索引:
SQL> ALTER INDEX IDX_BQ_lrsj NOMONITORING USAGE;
Index altered.
SQL> select * from V$OBJECT_USAGE;
那些持續關注一定時間沒有使用的索引就可以刪除了,以提高DML操作效率
實際工作中,我們可以選擇暫時禁用索引功能,來提高資料表插入、修改效率。因為,在索引起作用的情況下,大量資料的DML操作會帶來很多的索引更新和Redo Log的生成。這在批量資料載入的時候是不需要的。所以,可以暫時禁用索引。