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

Oracle監控索引怎麼使用

2022-06-13   來源: Oracle 

  Oracle監控索引使用

  Oracle提供一個監控索引的方法來確定索引是否被使用如果索引沒有被使用就可以刪除它們以減少不必要的語句的開銷因為表上的大量不必要的索引可能會降低DML語句的性能給數據庫性能產生壓力所以生產環境上以根據業務增長情況定期監控分析數據庫索引的使用特別是一些大表上的索引提升數據庫事務提交的性能   查看表上的索引 SQL> Selectindex_nametable_namenum_rows From dba_indexes i Where itable_name =WEBSITE_VIEW_TB ;   INDEX_NAME                     TABLE_NAME                       NUM_ROWS CURRTIME_IDX                   WEBSITE_VIEW_TB                  ORDERNO_IDX                    WEBSITE_VIEW_TB                   ORDERSOURCE_IDX                WEBSITE_VIEW_TB                      開啟索引監控 SQL> ALTER INDEX CURRTIME_IDX MONITORING USAGE;   Index altered   查看索引監控 SQL> Select * From v$object_usage;   INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING             CURRTIME_IDX                   WEBSITE_VIEW_TB                YES          NO     // ::   注意 如果開啟了索引監控功能用v$object_usage視圖可以查看正在被監控的索引記錄USED列表示在開啟索引監控過程中索引是否被使用MONITORING列表示是否開啟了索引監控START_MONITORING表示開啟索引監控的開始時間END_MONITORING表示開啟索引監控的結束時間     執行查詢語句使用被監控的索引 SQL> Select Count(*) From logWEBSITE_VIEW_TB t    Where tcurrtime between to_date(yyyymmdd)And to_date(yyyymmdd);     COUNT(*)        可以看到記錄的USED列值變成了YES表示索引被使用過 SQL> Select * From v$object_usage;   INDEX_NAME                     TABLE_NAME                     MONITORING USED  START_MONITORING    END_MONITORING                            CURRTIME_IDX                   WEBSITE_VIEW_TB                YES         YES       // ::   分析完畢後關閉索引監控因為監控也會占用一定的資源 SQL> ALTER INDEX CURRTIME_IDX NOMONITORING USAGE;   Index altered   可以看到MONITORING列變為NOEND_MONITORING列被填充索引停止監控 SQL> Select * From v$object_usage;   INDEX_NAME                     TABLE_NAME                    MONITORING USED  START_MONITORING   END_MONITORING             CURRTIME_IDX                   WEBSITE_VIEW_TB               NO           YES      // ::      // ::   再次執行查詢監控記錄無變化 SQL> Select Count(*) From logWEBSITE_VIEW_TB t    Where tcurrtime between to_date(yyyymmdd) And to_date(yyyymmdd);     COUNT(*)        SQL> Select * From v$object_usage;   INDEX_NAME                     TABLE_NAME                     MONITORING USED  START_MONITORING    END_MONITORING             CURRTIME_IDX                   WEBSITE_VIEW_TB                NO           YES      // ::      // ::   再次開啟索引監控相應監控記錄值又發生了變化 SQL> ALTER INDEX CURRTIME_IDX MONITORING USAGE;   Index altered   SQL> Select * From v$object_usage;   INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING CURRTIME_IDX                   WEBSITE_VIEW_TB                YES        NO  // ::

  總結

雖然v$object_usage表能記錄索引監控和使用的狀態但它不能統計索引被使用的次數和頻率只記錄了在開啟索引監控的時間段索引是否被使用過這一點要值的注意
From:http://tw.wingwit.com/Article/program/Oracle/201311/19069.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.