|
Index
Gebruik Monitoring Script
Het laadproces
van Oracle-tabellen kan aanzienlijk worden vertraagd als er
veel indexen zijn gedefinieerd in een tabel. Het is daarom
belangrijk dat de hoeveelheid indexen tot een minimum wordt
beperkt. In Oracle 9i is het mogelijk niet-gebruikte indexen
te lokaliseren en te verwijderen. In deze tip wordt beschreven
hoe dat moet.
Het overmatig
indexeren van kolommen is één van de meest voorkomende oorzaken
voor slecht presterende SQL-inserts. Updates, deletes en inserts
verlopen trager als bij elke wijziging een arsenaal aan indexen
moet worden bijgewerkt. Aangezien elke kolom meerdere indexen
kan bevatten, wordt dit probleem groter wanneer er sprake
is van indexen die op functies zijn gebaseerd.
Met het Alter Index-commando kan het indexgebruik worden gemonitord.
Vervolgens kunnen niet-gebruikte indexen worden opgespoord
en verwijderd. Met het Alter Index-commando kan echter uitsluitend
worden aangegeven of een index wel of niet wordt gebruikt.
De frequentie waarmee de index wordt toegepast, is helaas
nog niet meetbaar.
Het onderstaande script zorgt ervoor dat in een bepaalde set
schema's (aangeduid in de WHERE-clause) het gebruik van indexen
wordt bijgehouden.
set pages
999;
set heading
off;
spool run_monitor.sql
select
--- 'alter index'
--- ||owner||'.'||index_name
--- ||' monitoring usage;'
from
--- dba_indexes
where
--- owner in ('SCOTT','MYOWNER')
;
spool off;
@run_monitor
Als deze
optie is ingeschakeld, kan na verloop van tijd in de nieuwe
view v$object_usage zien welke indexen zijn gebruikt:
select
--- index_name,
--- table_name,
--- mon,
--- used
from
--- v$object_usage;
De v$object_usage
view laat zien welke indexen zijn gebruikt in de kolom USED,
met de waarde YES of NO. Zoals gezegd blijft onduidelijk hoe
vaak een index is gebruikt. Desondanks kan dit een handig
hulpmiddel zijn bij het traceren van niet-gebruikte indexen.
INDEX_NAME
---------------- TABLE_NAME -----
MON ---- USED
-----------------------------------------------------------
CUSTOMER_LAST_NAME_IDX -----CUSTOMER
------- YES
-----NO

|