14 Mart 2014 Cuma

DBCC CHECKDB çalıştırdım, ne kadar sürecek acaba?

Konu başlığında yazan sorunun cevabı tabii ki bu komutu çalıştırdığınız veritabanının büyüklüğüne, DBCC CHECKDB ile birlikte kullanacağınız parametrelere (NOINDEX, REPAIR_FAST gibi) ve donanım kaynaklarınıza bağlı.

Bununla birlikte, henüz DBCC CHECKDB'yi çalıştırmadan da, eğer daha önceden bir SQL Agent Job çalıştırdıysanız ne kadar sürdüğünü o Job'ın History'sinden de öğrenebilirsiniz.

Fakat benim özellikle paylaşmak istediğim şey ise, DBCC CHECKDB'yi çalıştırdıktan kısa bir süre sonra ne kadar süreceğini bir DMV yardımıyla görebileceğinizdir, bazılarını belki tahmin etti bile: sys.dm_exec_requests!

Ortamınıza uygun (ki umarım bir test ortamıdır bu!) DBCC CHECKDB komutunu çalıştırdıktan bir süre sonra başka bir Query Editor penceresinde aşağıdaki komutu çalıştırıp "percent_complete" ile "start_time" alanındaki değerlere bakıp, işlemin yaklaşık ne kadar sürede tamamlanacağını hesaplayabilirsiniz.


SELECT [session_id], [start_time], [status], [command], db_name([database_id]) AS [db_name], [wait_type], [wait_resource], [percent_complete] FROM sys.dm_exec_requests WHERE [session_id] > 50

Sorgunun sonucu
Yukarıdaki ekran görüntüsüne göre demek ki veritabanım için bu test ortamında DBCC CHECKDB sorgulamam ortalama 3 saat sürecek.

sys.dm_exec_requests DMV'sindeki "percent_complete" alanı aşağıdaki komutların tamamında işlemlerin ne kadarının tamalandığını söyleyecektir.

  • ALTER INDEX REORGANIZE
  • AUTO_SHRINK option with ALTER DATABASE
  • BACKUP DATABASE
  • DBCC CHECKDB
  • DBCC CHECKFILEGROUP
  • DBCC CHECKTABLE
  • DBCC INDEXDEFRAG
  • DBCC SHRINKDATABASE
  • DBCC SHRINKFILE
  • RECOVERY
  • RESTORE DATABASE,
  • ROLLBACK
  • TDE ENCRYPTION

sys.dm_exec_requests DMV'si hakkında daha ayrıntılı bilgi için: http://technet.microsoft.com/en-us/library/ms177648.aspx

Ekrem Önsoy

Hiç yorum yok: