WAIT_AT_LOW_PRIORITY ile Online Index Rebuild ve Partition Switch İşlemlerini Kontrol Edin
WAIT_AT_LOW_PRIORITY SQL Server 2014 ile beraber gelen bir özelliktir. Online Index Rebuild ve switch partition işlemlerini yaparken süreci kontrol edebiliyoruz.
Örneğin Online Index Rebuild işlemi yaptığımızı düşünelim. Online Index Rebuild işlemi bir transaction tarafından lock’lanabilir. Ve bu şekilde uzun bir süre işlem tamamlanmayabilir.
Mesela bir uygulama geliştirici bir transaction açtı ve commit işlemini gerçekleştirmedi. Online Index Rebuild işlemi bu commit gerçekleşene kadar lock’ta bekleyebilir. WAIT_AT_LOW_PRIORITY ile bunu önleyebiliyoruz.
Aşağıdaki sorguyu inceleyelim.
WAIT_AT_LOW_PRIORITY ‘den sonra MAX_DURATION = 1 MINUTES kısmında online index rebuild işlemi lock’lı kalırsa 1 dakika beklemesini, ABORT_AFTER_WAIT = SELF kısmında da, 1 dakika bekledikten sonra online index rebuild işlemini cancel etmesini söylemiş oluyoruz.
SELF yerine,
NONE yapsaydık online rebuild index işlemi devam edecekti.
BLOCKERS yapsaydık da online index rebuild işlemini lock’layan sorgu kill edilecekti.
ALTER INDEX IndexIsmi ON dbo.TabloIsmi REBUILD WITH (ONLINE = ON ( WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 1 MINUTES, ABORT_AFTER_WAIT = SELF )) );
Aşağıdaki gibi de switch partition’da kullanabilirsiniz. Switch partition ile ilgili “Sliding Window-Switch Partition-Split Range-Merge Range” isimli makaleyi okumak isteyebilirsiniz.
ALTER TABLE [VeritabaniIsmi].[dbo].[TabloIsmi] SWITCH PARTITION 12 TO [VeritabaniIsmi].[dbo].[TabloIsmiArsiv] WITH (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 1 MINUTES, ABORT_AFTER_WAIT = SELF));