Select cümlelerimiz daha hızlı netice versin diye tablolarımıza indexler ekleriz. Index oluşturmanın temel amacı performans artışı olmasına rağmen bazen indexler tersine bir neticede verebilir. Bir index tablo üzerinde yapılan insert,update işlemlerini yavaşlatabilir ve gereksiz yere kaynaklarımızı tüketebilir. Böylece kullanılmayan indexleri kaldırmak isteriz. Index monitoring bize bu aşamada yardımcı olur ve gerçekten kullanılan bir indexi drop etmemizi engeller.
Gereksiz bir indexi bulabilmek için öncelikle monitoring işlemini başlatmalıyız.
ALTER INDEX index_1 MONITORING USAGE;
Monitör işlemini durdurmak için
ALTER INDEX index_1 NOMONITORING USAGE;
Monitör işleminin neticesini görmek için
SELECT index_name, table_name, monitoring, used, start_monitoring, end_monitoring FROM v$object_usage WHERE index_name = 'index_1' ORDER BY index_name;
Tek bir index için yapacağınız işlemler bunlar.
Eğer tüm indexleri izlemek istiyorsanız aşağıdaki gibi bir script yazmanız gerekebilir.
DECLARE CURSOR cr_index IS SELECT index_name FROM user_indexes index_rec cr_index%ROWTYPE; BEGIN FOR index_rec IN cr_index LOOP EXECUTE IMMEDIATE 'alter index '||index_rec.index_name||' monitoring usage'; END LOOP; END;
Tüm indexler için monitor işlemini durdurmak isterseniz
DECLARE CURSOR cr_index IS SELECT index_name FROM user_indexes index_rec cr_index%ROWTYPE; BEGIN FOR index_rec IN cr_index LOOP EXECUTE IMMEDIATE 'alter index '||index_rec.index_name||' nomonitoring usage'; END LOOP; END;
Eğer TOAD kullanıyorsanız bu işlemleri Database->Monitor-> Index Monitoring menüsü yardımı ile yapabilirsiniz.
Bu yöntemi kullanarak kullanılmayan indexleri bulup onlardan rahatlıkla kurtulabilirsiniz.
No comments yet.
RSS feed for comments on this post. TrackBack URL