文章詳情頁(yè)
在Oracle中監(jiān)控和跟蹤索引使用情況
瀏覽:8日期:2023-11-15 18:43:03
在 Oracle9i 之前,監(jiān)控索引使用的唯一方法是執(zhí)行他們的程序庫(kù)緩中的所有SQL,然后手工記下所有被使用的索引。 最近的研究發(fā)現(xiàn) Oracle 數(shù)據(jù)庫(kù)所使用的索引從來(lái)沒(méi)有達(dá)到過(guò)可用索引數(shù)的1/4,或者其用法與其開(kāi)始設(shè)計(jì)的意圖不相同。未用的索引浪費(fèi)空間,而且還會(huì)降低 DML 的速度,尤其是 UPDATE 和 INSERT 語(yǔ)句。 Oracle9i提供一個(gè)簡(jiǎn)單的方法來(lái)打開(kāi)和關(guān)閉索引使用跟蹤,那就是MONITORING USAGE 子句: alter index cust_name_idx monitoring usage;alter index cust_name_idxnomonitoring usage; 這個(gè)命令使用V$OBJECT_USAGE 視圖和 USAGE 字段來(lái)判定索引是否被訪問(wèn)過(guò)。你可能期望 USAGE 字段是一個(gè)數(shù)字值,這樣你就可以知道索引被使用的次數(shù),但不幸的是,它的取值只為YES 或NO。 但不管怎樣,假如你接手一個(gè)以前開(kāi)發(fā)的數(shù)據(jù)庫(kù),而且老數(shù)據(jù)庫(kù)在沒(méi)有考慮到 SQL 訪問(wèn)表的情況下創(chuàng)建了索引,那么這個(gè)工具對(duì)你是很有用的。INDEX MONITORING 特性的開(kāi)銷非常小,而對(duì)定位和丟棄不需要的索引很有幫助。 下面是一個(gè)打開(kāi)整個(gè)方案的索引監(jiān)控的簡(jiǎn)單 SQL*Plus 腳本: 在 Oracle9i 之前,監(jiān)控索引使用的唯一方法是執(zhí)行他們的程序庫(kù)緩中的所有SQL,然后手工記下所有被使用的索引。 set pages 999set heading offspool run_mon.sqlselect 'alter index ' index_name ' monitoring usage;'from dba_indexeswhere owner = 'SCOTT';spool off@run_mon
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
