SQL Server’da DMV’ler (Dynamic Management Views) üzerine


Öncelikle DMV demek aslında tam doğru değil. Dynamic Management Views eksik bir tanımlama olur, aslında dynamic management objects demek gerekiyor. Ama bu nesnelerin büyük bir kısmı view olduğu için DMV kısaltmasını kullanacağız. Kalan az kısım ise dynamic management functionlar.

DMV’ler (hem viewler hem functionlar) tablolara dayalı değildir. SQL Server’ın iç çalışma mekanizmasıyla ilgili birtakım yapılardan bilgiler sunarlar bize. Üstelik bu nesnelerin bir kısmı sadece anlık bilgiler değil kaynak tarihçesiyle ilgili bilgiler de sunarlar.

DMV’leri genel olarak bilmek, hangi kategorilerde bilgi sunduklarından haberdar olmak ve çok işimize yarayacak bazılarını da kullanmayı detaylı bilmekte fayda var.

DMV’lere sys şeması altında erişebilirsiniz. sys.dm_ diye başlayan bir isim standartları vardır. İsim standardının önemli bir parçası da dm_’den sonra konu grubuna göre bir kısaltma gelmesidir. Mesela sys.dm_exec diye başlayan viewler kullanıcı isteklerinin gerçekleştirilmesi (execute edilmesi) ile ilgili çeşitli unsurlar hakkında bize detaylı bilgiler verirler.

Bu yazının asıl amacı da bu kategorilerin neler olduğunu belirtmek ve dynamic management viewlerini incelemeye başlamak için size bir giriş sağlamak.

dm_exec_*
Kullanıcı kodlarının çalıştırılmasıyla doğrudan ya da dolaylı olarak ilgili unsurlar hakkında bilgi verirler. Mesela sys.dm_exec_sessions SQL Server’a açılmış oturumların herbiri ile ilgili bir satır ve her satırda pek çok bilgi döndürür. dm_exec_* grubu size en fazla fayda sağlayacak gruplardan biri olabilir. Oturumlardan tutun, sorgu istatistiklerine kadar pek çok önemli bilgiye bu gruptan ulaşabilirsiniz.

dm_os_*
Alt seviye sistem bilgilerine erişim ihtiyacınız olursa bakacağınız yer burasıdır. SQL Server’ın işletim sistemi tarafıyla ilgili konuları bu kapsama girer. Mesela bellek kullanımının ince detayları üzerine incelemeler yapmak istiyorsanız, bu grup sizin için.

dm_tran_*
Güncel transactionlar hakkında detaylı bilgiler verirler. Mesela sys.dm_tran_locks transactionların verilmiş ya da sıra bekleyen kilitlerinin herbiri için bir satır döndürür.

dm_io_*
Sistemdeki io (input output, disk aktivitesi) işlemleri ile ilgili bilgiler içerirler. Sayıları fazla değildir. Kullanma ihtimaliniz en yüksek olan: sys.dm_io_virtual_file_stats size data ve log dosyalarının io istatistiklerini verir.

dm_db_*
Veritabanları ve indeksler gibi veritabanı objeleri ile ilgili detaylı bilgiler sunarlar. Mesela sys.dm_db_index_usage_stats indekslerin nasıl kullanılıyor olduğuyla ilgili önemli bilgiler verir. Ayrıca indekslerle ilgili view’ler altında göremeyeceğiniz iki önemli dm nesnesi daha vardır. Orada göremezsiniz, çünkü bunlar function: sys.dm_db_index_physical_stats ve sys.dm_db_index_operational_stats. Bu ikisi de size indekslerin fragmentasyon durumu ve kullanımlarının detaylı analizi ile ilgili bilgiler verirler.

En yaygın kullanılan gruplar bunlar olmakla birlikte, full-text kataloglar, change data capture (cdc), service broker, replication, CLR gibi konularda da dynamic management objeleri bulunmaktadır.

DMV’lerin size getireceği imkanlar, bir DBA olarak altıncı bir duyu edinmek gibi olacaktır. Ufkunuzu açacak bu araçlara göz atmanızda fayda var.

Not: DMV’leri kullanmak için 2005 ya da sonrası bir sürümde olmanız gerekir. 2000’de bu nesneler yok.

Bu yazı SQL Server içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s