Aylık arşivler: Kasım 2011

SQL Server I/O Performansı ve Darboğazları Gözleme

Yazma, okuma işlemlerinde aygıtlar içerisinde en yavaşı olan disk, veritabanı yönetim sistemlerinde her zaman en önemli konulardan biri olmuştur. Bir VTYS’nin disk seçimi array konfigürasyonunun, nasıl olacağı o veritabanının kullanım amacına bağlıdır. Yani sözkonusu veritabanı daha çok yazma mı yoksa okuma için mi kullanılacak bunun netleştirilmesi gerekir. Veritabanı motorlarının en çok yaptığı işlemlerden biri çalışma esnasında database page’leri taşımasıdır. Bu da önemli bir I/O trafiğine neden olmaktadır. Örneğin en basiyi bir güncelleme yapılacağı zaman ilgili alanlar, veri sayfaları diskten belleğe taşır commit etmeden önce TEMPDB üzerinde ilgili sıralama ve güncellemeleri yapar. Yani hem okuma hem de yazma durumlarında I/O sistemleri kritik önem arzetmektedir. Bu trafikte en önemli sorun oluşacak darboğazlardır (I/O bottlenecks). Sistem üzerinde taleplerimizi gerçekleştirmeden önce execution plan’a bakmak ve ona göre I/O kaynak tüketimini tahim edip ardından takip etmekte fayda var. Performans sorunu olması sonucu kullanıcılara geç yanıt verilecektir. Bu durumda I/O tarafındaki darboğazları gözlemek için SQL Server’den beslenen çeşitli sayaçlar bulunmaktadır (performance counter). Bu yazıda çok kullanılan, bakılması tavsiye edilen sayaçları listeleyeceğiz.
Okumaya devam et

SQL Server Bekleyen İşler – sys.dm_os_waiting_tasks DMV

SQL Server özellikle yoğun ve taleplere yavaş yanıt verdiği durumlarda tam olarak durumu tespit etmek için çeşitli yöntemler bulunmaktadır. Bu yöntemlerden biri de sistem üzerindeki bloke durumları ve bekleme modunda işlemleri görmektir. Bu noktada SQL Server 2005 ile birlikte gelen sys.dm_os_waiting_tasks dynamic view nesnesi sistemde kaynakları bekleyen task’leri listeler. Kuyrukta bekleyen tüm işleri listeleyelim.
Okumaya devam et

dm_io_virtual_file_stats DMV

SQL Server 2005 ile birlikte gelen DMVler (Dynamic Management Views, Dinamik Yönetim Görüntüleri), SQL Server’in iç dünyasında olup bitenler hakkında önemli bilgiler sunan nesneler kütüphanesidir. Sistem tablolarından beslenen bu nesneler bazen sistemle ilgili anlık bilgiler bazen de geçmiş bilgiler sunar. Bunlarcan onlarca bulunduğu için hepsini bilmek mümkün değil ancak I/O, memory tabanlı performans verileri veya kullanıcı / oturumla ilgili tarihçeye erişmek için kullanacaklarımızı elimizin altında bulundurmamız faydalı olacaktır. Bu sitede yeri geldikçe en çok kullanılanları paylaşmaya çalışacağız.
Okumaya devam et

SQL İlk ve Son Kayıtlar

Daha önce yazdığım SQL MAX MIN SUM İçin Farklı Alternatifler makaleye benzer olarak. Günlük raporlamada kolaylık sağlayacak bir ipucunu paylaşalım. Şu ana kadarki yazılarda en büyük, en küçük, ortanca, her gruptan n kayıt, rastgele seçim gibi ipuçlarını paylaştık. Bu yazı da herhangi bir grubun ilk ve son kayıtlarının kolayca nasıl bulacağımızı yazacağız. Bu amaç için Oracle cephesinde FIRST ve LAST isimli analitik fonksiyonlar bulunmaktadır. SQL Server 2005 ve sonrasında sunulan DENSE_RANK() fonksiyonu aracılığıyla bunları kolayca seçebiliriz. Bu fonksiyonu kullanarak her grubu içindeki 2. alana göre artan veya azalan sıralayacağız. Artan sıraladığımızda en son kayıtlar, azalan sıraladığımızda ilk kayıtlar “1¨ olarak numaralandırılacaktır.
Okumaya devam et