DBCC FREEPROCCACHE ve DBCC DROPCLEANBUFFERS

30 Eki by NURULLAH ÇAKIR

DBCC FREEPROCCACHE ve DBCC DROPCLEANBUFFERS

DBCC FREEPROCCACHE ile plan cache’deki bütün plan’ları sıfıryabiliriz. Böylece gelen her stored procedure memory’de kayıtlı bir execution plan’ı olmadığı için yeniden compile olmak zorunda kalır.

 

Bazı durumlarda, örneğin parameter sniffing gibi bir sorun yaşıyorsanız sorguların yeniden compile olması sorununuzu çözebilir. “Parameter Sniffing” isimli makalede parameter sniffing hakkında detayları bulabilirsiniz.

 

Aşağıdaki komutla plan cache’deki tüm query plan’ları temizleyebilirsiniz.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

 

Aşağıdaki komutla da belli bir query plan için plan cache’deki plan’ı temizleyebilirsiniz.

 

DBCC FREEPROCCACHE (Buraya sorgunuzun plan_handle değerini yazmalısınız);

 

Aşağıdaki sorgu yardımıyla sorgunuzun plan_handle’ını bulabilirsiniz.

SELECT plan_handle, st.text 
FROM sys.dm_exec_cached_plans  
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st 
WHERE text LIKE N'SELECT * FROM Person.Person%';

 

 

DBCC DROPCLEANBUFFERS ile de buffer cache’deki üzerinde değişiklik olmamış veriyi temizleyebilirsiniz. SQL Server’da veriler direk olarak diskten okunmaz. Öncelikle diskten memory’e(buffer cache) aktarılır ve sonrasında memory üzerinden kullanıcılara iletilir. Eğer veri üzerinde değişiklik yapılırsa checkpoint işlemi gerçekleştiğinde bu değişiklik yapılan veriler disk’e yazılır. Üzerinde değişiklik olmayan kayıtlar ise clean buffer olarak adlandırılır. DBCC DROPCLEANBUFFERS ile bu clean buffer’ı temizleriz.

 

Bu komutu çalıştırmadan önce CHECKPOINT komutunu çalıştırarak üzerinde değişiklik yapılmış verilerin diske yazılmasını sağlayabilirsiniz.

 

Checkpoint ve SQL Server’ın çalışma şekliyle ilgili olarak “Database Checkpoint Nedir” isimli makaleyi okumanızı tavsiye ederim.

 

 

Production ortamlarda kullanmamanızı öneririm.

 

Aşağıdaki şekilde kullanabilirsiniz.

 

DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;

 

Loading

Bir yanıt yazın

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