Forum
Merhaba arkadaşlar,
Yarın yani 1 Eylül itibarıyla blog'um da (www.turgaysahtiyan.com) yeni bir yazı dizisine başlıyorum. Bu yazı dizimde, SQL Server da Dynamic Management View(DMV) – Dynamic Management Function(DMF) kullanımını derinlemesine incelemefırsatı bulacağız.
Sistemi monitor etmek ve sorun çözmekte oldukça işimizeyarayan DMV ve DMF lerle ilgili her gün yeni bir makale yayınlayacağım. 30 günsonunda elimizde geniş bir DMV-DMF arşivi olacağını umut ediyorum.
Buradan duyurusunu yapmak istedim çünkü yazı dizimi katılım olursa hep beraber daha güzel bir 30 gün geçirip, faydalı şeyler öğrenebiliriz diye düşünüyorum.
Kısaca DMW-DMF nedir bilgisinide vererek duyurumu sonlandırayım 🙂
DMV – DMF nedir?
SQL Server da Dynamic Management View(DMV) ve Function lar (DMF),sistemi monitor etmek, herhangi bir problemi teşhis etmek veya sistemi enperformanslı biçimde tune etmek için kullanılan, sistem durumu hakkında bilgidönen view ve function lardır.
Not: Hakan hocam, duyuru izni için teşekkürler.
Şimdiden kolay gelsin o zaman. Merakla bekliyoruz 🙂
Gercekten cok onemli bir konu, yazi dizisinin takipcisi olacagim, simdiden kolay gelsin.
Hocam süper bir haber. Demek ki her gün senin bloğu takip edeceğiz. Tabi bunların toplanıp makale olarak bizde yayınlanacak olması ayrı bir güzellik.
Eline sağlık
Ama sitende büyük bir ( ÇözümPark Banner ) eksiklik var farkındasın değil mi [:D]
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Çok güzel bir haber. Turgay Hocamıza şimdiden teşekkürler. Saygılar.
Teşekkürler arkadaşlar,
DMV ve DMF konusuna giriş içerikli 1.Gün yazısı ile yazı maratonuna başladık. 🙂
http://www.turgaysahtiyan.com/post/SQL-Server-e28093-Her-Gun-1-DMW-Gun-1-Giris.aspx
Hakan hocam bu hafta içinde kesin ekliyorum 🙂
Her Gün 1 DMV-DMF yazı dizimin 2.gününde daha sonraki DMV makalelerimde kullanacağım 2 DMF yani Dynamic Management Function dan bahsedeceğim. Daha sonraki makalelerimde kullanacağım için ilk önce bu DMF’leri anlatmanın daha anlamlı olacağını düşündüm. Bu DMF’ler vasıtasıyla SQL Text lerine ve Query Planlarına erişip analiz yapabiliriz.
Bugün size en sık kullandığım 3 DMV’den bahsediceğim. Bu DMV’ler ile; sistemde bulunan aktif proseslerin ne oldukları, şu an hangi query’i çalıştırdıkları, bu prosesslerin hangi login ile ve hangi makinadan açıldığı, aktif olmayan son çalışan proseslerin query’lerinin ne oldukları, aktif bir session’ın işini tahmini olarak ne zaman bitireceği gibi yani proses’ler ile ilgili bütün detay bilgileri edinebileceğiz.
ilgiyle takip ediyoruz, tesekkurler ...
Eline sağlık hocam ama ben hala logomuzu görünür bir yerde göremedim [:D] bak hafta bitti....
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
hocam bu akşam doluyor sürem. sözüm söz 🙂
Hadi bakalım bekliyorum 🙂
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Logo yakışmış mı Hakan hocam 🙂
Siteyi açmış hocam , peki senin site bizim community ye yakışmış mı 🙂
http://community.cozumpark.com/destekleyenler.aspx
hayırlı olsun.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Eyvallah hocam güzel olmuş
Bu arada 4.Gün yazımız yayınlandı.
SQL Server performance analizi yaparken ilk kontrol edilmesi gereken
noktalardan biride query’lerin performans’larıdır. Çok fazla IO yapan yada CPU
tüketen sorgular belirli aralıklarla analiz edilmeli ve eğer bu
sorgularda bir problem varsa iyileştirme çalışması yapılmalıdır.. Çünkü
sisteminizde bulunan CPU ve Memory miktarları ihtiyaçları karşılayacak
düzeyde olmasına rağmen kötü yazılmış sorgulardan yada index
kullanılmamasından dolayı sisteminiz performanssız çalışabilir.
Query istatistiklerinin sorgulanabileceği DMV sys.dm_exec_query_stats
tır. Bu DMV ile cache’lenmiş query’lerin CPU süreleri(worker time),
toplam çalışma süreleri(elapsedtime), fiziksel okumaları
(physicalread), mantıksal okumaları(logicalread), mantıksal
yazmaları(logicalwrite) analiz edilip sıkıntılı query’ler üzerinde
iyileştirme çalışmaları yapılabilir.
SQL Server ın bazı özellikleri database seviyesindedir. Bu özelliklerden bazıları Edition özellikleridir ve başka bir editionda kullanılamaz. Örneğin partitioning özelliği Enterprise ve Developer Edition’larda kullanılabilir ve eğer bu özelliği içeren bir database başka bir edition’daki server’a taşınırsa bu özellik kullanılamaz hale gelecektir.
Bugünkü yazımda X bir database’in bu özelliklerden herhangi birini kullanıp kullanmadığınısys.dm_db_persisted_sku_features DMV’si ile nasıl sorgulanacağına bakıyor olacağız.
Gün 6 - http://www.turgaysahtiyan.com/post/SQL-Server-e28093-Her-Gun-1-DMV-Gun-6-sysdm_os_wait_stats.aspx
Yaptığınız analizler sonucunda prosess’lerinizde bazı beklemeler olduğunu gördünüz. Network IO da bir beklememi var yoksa CPU yetersizliğinden dolayı mı beklenmekte. Yani tam olarak prosess’lerim nerede bekliyor?
Bugün işleyeceğimiz DMV, SQL Server thread lerinin işlerini yaparken karşılaştıkları beklemeleri raporlayan sys.dm_os_wait_stats DMV si. Performans sıkıntılarında çok fazla sayıda başvurduğum bu DMV yi kullanarak bekleme zamanlarını kontrol edebilir ve performance sıkıntılarını analiz edebilirsiniz.
Her hangi bir sorgu çekildiğinde bu sorguya bağlı olan data ya da index page’ler diskten okunup SQL Server Buffer Pool’a yazılır ve daha sonraki kullanımlar için cache lenir. Bu durumda eğer daha sonra bu page tekrar kullanılmak istenirse SQL Server bu page’i disk yerine buffer pool dan getirerek performans artışı sağlar.
Buffer Pool da Page Allocation’ı, Total Server Memory’e ulaşılana kadar devam eder. Bu rakama erişildikten sonra en uzun zamandır kullanılmayan page’ler Buffer Pool’dan silinerek yeni gelecek page’lere yer açılır.
Buffer pool’a alınan her page’in bir descriptor ı vardır. Bugünkü makalemizde, Buffer Pool’da bulunan page’leri sorgulamaya, bu page’lerin hangi database lere yada obje lere ait olduklarını bulmaya yarayan sys.dm_os_buffer_descriptors DMV si üzerinde duruyor olacağız.
SQL Server performance analizi yaparken ilk kontrol edilmesi gereken noktalardan biridedisk response time lardır. Disk Response Time, SQL Server isteğine disk’in ne kadar gecikmeli olarak cevap verdiğini gösteren bir ifadedir. SQL Server açısından best practise olarak read response değerinin 10ms nin altında olması arzu edilen bir durumdur.
Bugünkü konumuz olan sys.dm_io_virtual_file_stats DMV si ile DB lerin I/O istatistiklerinin ve response time larının nasıl inceleneceğini görüyor olacağız.
Dünkü makalemde
IO DMV lerine giriş yapmış ve sys.dm_io_virtual_file_stats DMV si ile
disk response time ları nasıl monitor edebileceğimizi görmüştük. Bugün
ise pending yani bekleme statüsünde olan IO isteklerini anlık olarak
nasıl sorgulayabileceğimizi görüyor olacağız.
Pending durumunda olan IO isteklerini sorgulamak için sys.dm_io_pending_io_requests DMV sini kullanacağız.
Cluster ortamlarda bir disk drive sadece bir instance’ın resource
grubuna eklenebilmektedir. Hangi Instance’da hangi drive kullanıldığı
bilgisi Cluster Administration ekranından sorgulanabilir.
Aslında bir server üzerindeki bir cluster environment için problem yok.
Bütün drive lar bu cluster ortamı için kullanılıyor diyebiliriz. Fakat
aynı server üzerinde birden fazla instance kurulu ise hangi instance’ın
hangi drive lara sahip olduğunu sorgulamamız gerekebilir. Bugünkü
yazımda sys.dm_io_cluster_shared_drives DMV si ile bu isteğimizi TSQL ile nasıl karşılayacağımızı görüyor olacağız.
Diğer günlerden farklı olarak bugünkü yazımda DMV anlatmak yerine DBCC SQLPERF ile wait ve latch DMV lerinin nasıl resetleneceğine bakıyor olacağız.
Daha önceki DMV yazılarımda, DMV ler dataları son SQL Server restartından itibaren kümülatif olarak tutarlar ve resetlenebilmeleri için SQL Server Service inin restart edilmesi gerektiğinden bahsetmiştik. Wait ve Latch DMV leri ise DBCC SQLPERF komutu ile de resetlenebilmektedir.
SQL Server da kullanılan Heap, Clustered yada NonClustered Index’ler kullanıldıkça fragmante olurlar. Bu da Index’in performansını olumsuz etkiler. Belirli aralıklarla fragmante olan bu indexleri bulup drop-create, ReOrganize yada Rebuild işlemleriyle fragmante oranlarının düşürülmesi gerekmektedir. Bugünkü yazımızda Index’lerin fragmante oranlarını nasıl sorgulayacağımızı işliyor olacağız.
SQL Server da query performansını arttırıcı ana etkenlerden biri index kullanımıdır. Index’ler vasıtasıyla datanın tamamı okunmaktansa kullanılan index’e göre daha az veri diskten yada memory den okunur. Bu da az IO ve CPU kullanımıyla beraber daha iyi bir performans getirir.
Index’lerin performans artışına sebebiyet verdiği bilindiği için development yada DBA ekibi tarafından sürekli yeni index’ler create edilir. Bir süre sonra ortalık kullanılmayan index’lerle dolup taşar. Gerekli Index’lerin olması ne kadar iyiyse gereksiz index’lerin sistemde durması performans açısından bir o kadar kötüdür.
Bu yüzden DBA olarak ana işlerimizden biri belirli aralıklarla index’lerin kullanımlarına bakmak ve kullanılmayan indexleri drop etmeyi göz önünde bulundurmaktadır.
Bugünkü yazımızda sys.dm_db_index_usage_stats DMV si ile index’lerin kullanım oranlarına(scan-seek-lookup) ve kullanılmayan index’lerin nasıl sorgulanabileceğini görüyor olacağız.