程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle索引監控

oracle索引監控

編輯:Oracle教程

索引對於在大量數據裡檢索出少量數據庫的查詢操作來說是高效的,但是對於DML操作來說,卻是負面的:①其對於insert 操作的反面影響最大,該表的索引越多,更新的索引越多,insert 操作越慢。②對於delete來說,大量數據定位刪除少量數據的時候,通過索引定位刪除是高效的,但如果刪除數據量過多,或者有過多列有索引的時候,其他索引列因為數據的刪除有會更新來說,索引是負面的。③對於update的負面影響最小,具體修改某一列時只會更新該列上的index。

所以說,沒有被使用過的index在數據庫中一定是低效,具有負面影響的,我們通過對索引的監控來查看索引是否在監控的時間段內被使用過。

索引監控:
alter index index_name monitoring usage;
查看是否在開始監控後被使用過:
select * from v$object_usage;
停止索引監控:
alter index index_name nomonitoring usage;

下面通過實驗看一下:
SQL> create table t_id as select rownum id from dual connect by level<10000;

Table created

SQL> create index ind_t_id on t_id(id);

Index created

SQL> alter index ind_t_id monitoring usage;

Index altered

SQL> select * from v$object_usage where index_name='IND_T_ID';

INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IND_T_ID T_ID YES NO 04/24/2014 13:27:39

SQL> select * from t_id where id=999;

ID
----------
999

SQL> select * from v$object_usage where index_name='IND_T_ID';

INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IND_T_ID T_ID YES YES 04/24/2014 13:27:39

SQL> alter index ind_t_id nomonitoring usage;

Index altered

SQL> select * from v$object_usage where index_name='IND_T_ID';

INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IND_T_ID T_ID NO YES 04/24/2014 13:27:39 04/24/2014 13:29:13

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved