Fail Eden Index’leri Kaldığı Yerden Devam Ettirin(Resumable Index)

Resumable Index hayatımıza SQL Server 2017 ile birlikte girdi.

 

Index’leri online rebuild ederken failover, disk yetmezliği, manual durdurma(PAUSE) gibi nedenlerden dolayı index rebuild işlemi fail olabiliyordu. Bu tip durumlarda fail olduktan sonra rebuild işleminin kaldığı yerden devam etmesi için index’i RESUMABLE=ON şeklinde işaretlemeniz gerekiyor.

 

Aşağıdaki script yardımıyla index’i resumable hale getirebilirsiniz.

ALTER INDEX IndexIsmi on TabloIsmi REBUILD WITH (ONLINE=ON,RESUMABLE=ON) ;

 

ONLINE=ON’u script’e eklemezseniz aşağıdaki gibi hata alırsınız.

 

Msg 11438, Level 15, State 1, Line 3

The RESUMABLE option cannot be set to ‘ON’ when the ONLINE option is set to ‘OFF’.

 

Aşağıda index rebuild işlemini pause eden kodu bulabilirsiniz.

 

ALTER INDEX IndexIsmi ON TabloIsmi PAUSE ;

 

Aşağıda, yukarda belirttiğim nedenlerden dolayı pause olmuş bir Index Rebuild işlemini devam ettirebileceğiniz sorguyu bulabilirsiniz.

 

Ayrıca Index rebuild işlemini diyelim ki maxdop ile başlatmadınız. Durdurup resume ederken maxdop seviyesini değiştirerek sorgunun paralellik seviyesini artırıp işlemin daha hızlı bitmesini sağlayabilirsiniz.

 

ALTER INDEX IndexIsmi ON TabloIsmi RESUME WITH (MAXDOP=4)

 

Aşağıdaki sorguda da Index’i Resume ederken başka ayarlar da yapıyoruz. Sorgudaki diğer ayarlar için “WAIT_AT_LOW_PRIORITY ile Online Index Rebuild ve Partition Switch İşlemlerini Kontrol Edin” isimli makaleyi okumanızı tavsiye ederim.

 

ALTER INDEX IndexIsmi ON TabloIsmi  RESUME WITH (MAXDOP=2, MAX_DURATION= 240 MINUTES,
WAIT_AT_LOW_PRIORITY (MAX_DURATION=10, ABORT_AFTER_WAIT=BLOCKERS)) ;

 

Aşağıdaki sorgu yardımıyla da pause durumda olan ya da çalışan index rebuild işlemini durdurabiliyoruz.

 

ALTER INDEX IndexIsmi ON TabloIsmi ABORT ;

 

 

SORT_IN_TEMPDB=ON ifadesi RESUMABLE index’lerde desteklenmiyor.

 

Disable edilmiş index’lerin rebuild işlemini RESUMABLE ile yapamıyoruz.

 

Loading

Leave Your Comment