Bir index hangi durumlarda rebuild yapılmalıdır ?

22 May by Ahmet Duruöz

Bir index hangi durumlarda rebuild yapılmalıdır ?

Oracle veritabanlarında , zamanla indeksler fragmante olmakta ve ciddi performans sorunlarına yol açmaktadır.İndekslerin düzenli olarak kontrolü ve gerekiyorsa da rebuild edilerek düzenlenmesi gerekmektedir.

Bir indeks için rebuild işleminin gerekip gerekmediği tespit edilebilir.

Öncelikle ilgili index hakkında bilgi edinmek gerekiyor. Bunun için indeksin analizlenmesi gerekmektedir. Bu işlemi aşağıdaki komut ile yapabilirsiniz.

SQL> analyze index ADURUOZ.IX_DENEME validate structure;

Index analyzed.

Analiz işlemi , “sys.index_stats” tablosunu doldurur. Bu tablonun sadece bir satır içerir ve bu nedenle bir kerede yalnızca bir indeks analiz edilebilebilir. Analiz yapılan oturumda , sys.index_stats tablosundan ilgili indeks ile ilgili bilgiler alınabilir.

SQL> select del_lf_rows,lf_rows,height,lf_rows,lf_blks from sys.index_stats;

DEL_LF_ROWS    LF_ROWS	   HEIGHT    LF_ROWS	LF_BLKS
----------- ---------- ---------- ---------- ----------
	  842     41356545		3       41356545	 109441

Analiz sonrasında “sys.index_stats” tablosundaki veriler doğrultusunda , aşağıdaki durumlardan herhangi biri oluşursa , ilgili indeks için rebuild ya da yeniden oluşturulması gereklidir denilebilir.

  • Silinen satırların yüzdesi toplamın %30’unu aşıyor ise. Yani sys.index_stats tablosunda değerlerden del_lf_rows / lf_rows > 0.3 ise.
  • Eğer ‘HEIGHT’ değeri 4’ten büyük ise.
  • Eğer indeksteki satır sayısı olan LF_ROWS , LF_BLKS değerinden çok daha az ise . Bu durum, indeksten çok fazla kayıt silindiğinin göstergesidir.

Bu koşullardan biri oluştuğunda indeksi aşağıdaki gibi rebuild yapabilirsiniz.

SQL> alter index ADURUOZ.IX_DENEME rebuild online;

Index altered.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir