Oracle認(rèn)證實(shí)用技巧
數(shù)據(jù)庫(kù)人員手邊系列:Oracle認(rèn)證實(shí)用技巧,DML 性能低下,其中最嚴(yán)重的原因之一是無用索引的存在。所有SQL的插入,更新和刪除操作在它們需要在每一行數(shù)據(jù)被改變時(shí)修改大量索引的時(shí)候會(huì)變得更慢。許多Oracle 人員只要看見在一個(gè)SQL 查詢的WHERE語(yǔ)句出現(xiàn)了一列的話就會(huì)為它分配索引。
oracle的幾個(gè)使用技巧
1.找出無用索引:
DML 性能低下,其中最嚴(yán)重的原因之一是無用索引的存在。所有SQL的插入,
更新和刪除操作在它們需要在每一行數(shù)據(jù)被改變時(shí)修改大量索引的時(shí)候會(huì)變得更慢。
許多Oracle 人員只要看見在一個(gè)SQL 查詢的WHERE語(yǔ)句出現(xiàn)了一列的話就會(huì)為它分配索引。
雖然這個(gè)方法能夠讓SQL運(yùn)行得更快速,但是基于功能的Oracle 索引使得數(shù)據(jù)庫(kù)管理人
員有可能在數(shù)據(jù)表的行上過度分配索引。過度分配索引會(huì)嚴(yán)重影響關(guān)鍵Oracle 數(shù)據(jù)表的性能。
在Oracle9i出現(xiàn)以前,沒有辦法確定SQL查詢沒有使用的索引。
Oracle9i有一個(gè)工具能夠讓你使用ALTER INDEX命令監(jiān)視索引的使用。
然后你可以查找這些沒有使用的索引并從數(shù)據(jù)庫(kù)里刪除它們。
下面是一段腳本,它能夠打開一個(gè)系統(tǒng)中所有索引的監(jiān)視功能:
spool run_monitor.sql
select ’alter index ’||owner||’.’||index_name||’ monitoring usage;’
from dba_indexes
where owner not in (’SYS’,’SYSTEM’);
spool off;
@run_monitor
你需要等待一段時(shí)間直到在數(shù)據(jù)庫(kù)上運(yùn)行了足夠多的SQL語(yǔ)句以后,然后你就可以查詢新的V$OBJECT_USAGE視圖。
select index_name,table_name,mon,used
from v$object_usage;
在下面,我們可以看見V$OBJECT_USAGE有一列被稱作USED,它的值是YES或者NO。
它不會(huì)告訴你Oracle使用了這個(gè)索引多少次,但是這個(gè)工具對(duì)于找出沒有使用的索引還是很有用的。
SQL> select * from v$object_usage where rownum < 10;
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
ASD DIM_ACCT_ITEM_TYPE_TEMP YES NO 01/15/2004 13:50:59
IDX_ACCOUNT_ACCESSORY_TARIFF1 ACCOUNT_ACCESSORY_TARIFF YES NO 01/15/2004 13:50:59
IDX_ACCOUNT_QUOTA_LOG1 ACCOUNT_QUOTA_LOG YES NO 01/15/2004 13:50:59
Oracle認(rèn)證技巧就為大家介紹這么多,如果大家有更多更好的方法,要拿出來與大家一起分享,不要一個(gè)人獨(dú)吞哦。
【編輯推薦】