Recent comments

İçerik Ara



Yasal Uyarı
Bu sitede sunulan tüm bilgi ve dökümanlar Turgay Sahtiyan tarafından yazılmaktadır. Yazıların kaynak göstermek şartıyla kullanılması serbesttir.

© Copyright 2009-2011
Takvim
<<  May 2012  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
Keywords

Query plan oluşturmak CPU ve IO açısından pahalı bir işlemdir. Bu yüzden oluşturulmuş olan Query Plan’lar Plan Cache’de saklanır ve aynı sorgu tekrar geldiğinde kullanılır. Objelerin (tablo vs.) two-part-name şeklinde kullanılmamaları bazı durumlarda Plan’ın tekrar kullanılmamasına ve yeni plan oluşturulmasına sebep olur. Bu da hem memory’nin optimum kullanılmamasına hem de performans sıkıntısına sebebiyet verir.

More...

Daha önceki makalelerimde (1|2) sys.dm_exec_query_stats DMV’si ile IO ve CPU açısından pahalı sorguların nasıl kontrol edilebileceğini görmüştük. Yapılan insert-update-delete işlemleri sys.dm_exec_query_stats DMV’sinde toplanmakta ve bu DMV kullanılarak IO ve CPU açısından maliyetli sorgular bulunabilmektedir. Fakat bu DMV ile DML hareketler toplanamaz. Örneğin bir SP’nin içerisinde bazı DML işlemler ve örneğin Index oluşturmak gibi bir DDL işlem var ise sys.dm_exec_query_stats DMV’si sadece DML işlemleri toplayacaktır. Oysaki sys.dm_exec_procedure_stats DMV’si ise prosedürün tamamımının çalışma bilgilerini tuttuğu için DDL işlemi de bu hesaplamanın içine katılır. Bu makalemde bu 2 DMV arasındaki farka bir örnek ile bakıyor olacağız.

More...

SQL Server 2011 Denali ile beraber gelen yeni objeler sayesinde bir T-SQL komutunun ya da SP,view gibi objelerin çalıştırıldığı zaman döndüreceği kolonların listesini ve veri tiplerini almak mümkün. Ayrıca gene bu objeleri, bir TSQL script içerisindeki parametrelerin tiplerini öğrenmek için de kullanabiliriz.

More...

SQL Server 2011 Denali ile gelen yeni DMV’lerden biri sys.dm_server_services DMV’si. Bu DMV ile SQL Server Agent, Database Service gibi servislerin startup seçenekleri, process id’leri, en son ne zaman başlatıldıkları gibi bilgilerin öğrenilmesi mümkün.

More...

SQL Server 2011 Denali ile gelen yeni DMV’lerden biri sys.dm_os_windows_info DMV’si. Bu DMV ile veritabanı sunucusunun, release, service pack seviyesi gibi işletim sistemi (Operatin System) bilgilerinin öğrenilmesi mümkün.

More...

SQL Server sorgu performans analizi yapılırken en çok kullanılan DMV’lerden biri olan sys.dm_exec_query_statsDMV’sine SQL Server 2011 Denali ile beraber 4 yeni kolon eklendi.

More...

SQL Server 2011 Denali ile gelen yeni DMV’lerden biri sys.dm_os_volume_stats DMV’si. Bu DMV ile data ve log file’larının bulunduğu sürücülerin toplam alan, boş alan gibi bilgilerinin öğrenilmesi mümkün.

More...

Mart 2011’de yayınladığım SQL Server’da Index Kavramı başlıklı makalemden sonra bugün de performans iyileştirmenin bir diğer büyük adımı olan SQL Server’da İstatistis (Statistics) Kavramı üzerine yazılmış detaylı makalemi paylaşıyorum.

Bu makale, SQL Server’da istatistiklerin kullanım amacını,faydalarını ve güncel olmalarının önemini sorguladıktan sonra, istatistiklerinin içeriğinin incelenmesi ve istatistiklerin otomatik oluşturulma ve güncellenme parametrelerinin ve bu parametrelerin best practice’lerinin neler oldukları üzerinde duracaktır.

More...

Stored Procedure(SP) ilk çalıştırıldığı zaman istatistikler göz önüne alınarak Query Optimizer tarafından en optimum Query Plan oluşturulur ve daha sonra kullanılmak üzere Plan Cache’e konulur. Aynı SP farklı bir zamanda tekrar çalıştırıldığında Cache’deki plan’ın geçerliliği kontrol edilir ve eğer plan geçerli yani güncel ise tekrar Query Plan oluşturulmak için zaman harcanmayıp plan Cache’den çağırılır ve kullanılır.

Query Plan oluşturma işlemi bazı durumlarda çok fazla CPU kaynağı tükettiği için bu şekilde bir cache’lenme mekanizması kullanılır. Fakat bazı durumlarda cache’lenen plan güncelliğini yitirmiş olabilir. Örneğin SP içinde geçen bir tabloda plan cache’lendikten sonra çok fazla data değişimi olduysa bu durumda istatistikler güncelliğini yitirecek dolayısıyla da cache’lenen plan güncelliğini yitirecektir. Ya da SP’nin içinde geçen tablolarda index ekleme,silme gibi DDL (Data Definition Language) değişiklikleri yapılırsa yine cache’lenen plan güncelliğini yitirmiş olacaktır. Böyle bir durumda SP’nin yeniden derlenip yeni bir Query Plan’ın oluşturulması gerekmektedir. İşte bu duruma ReCompilation denilmektedir.

More...

Bugünkü makalemde, heap tablolarda karşımıza çıkan Forwarded Record konusu üzerine konuşuyor olacağız. Alt başlıklarımız şu şekilde;

  • Forwarded Record Nedir?
  • Forwarded Record Nasıl Oluşur?
  • Forwarded Record Neden Oluşur? SQL Server’ın Bu Davranışının Nedeni Nedir?
    • NonClustered Index İçeren Heap Tablolarda Forwarded Record
    • NonClustered Index İçermeyen Heap Tablolarda Forwarded Record
  • Forwarded Record’un Performansa Etkisi Nedir?
  • Clustered Index İçeren Tablolarda Neden Forwarded Record Oluşmaz?
  • Hangi Tablolarımda Forwarded Record Var?
  • Tablolarımda Bulunan Forwarded Record’lardan Dolayı Performans Sıkıntısı Yaşıyor muyum?
  • Forwarded Record Nasıl Düzeltilir?
  • Sonuç

More...

Geçenlerde SQL Server 2005 Performance Dashboard raporlarını incelerken ana ekranda olan bir rapor dikkatimi çekti. CPU utilization’ı görebildiğimiz bu rapor da dakika dakika CPU kullanımını görebilmekteyiz.

Hemen ilk aklıma gelen Performance Counter ile bu bilginin alındığıydı. Fakat daha sonra düşündüğümde bu raporu almadan herhangi bir performance counter toplamadığımdı. Bu durumda bu rapor bir şekilde geriye dönük olarak CPU bilgilerini getirebilmekte, çok büyük ihtimal de DMV üzerinden bu bilgiye erişmekte ki bu beni oldukça şaşırttı ve heyecanlandırdı.

More...

SQL Server 2008 ile beraber Database Mirroring’e Auto Page Repair özelliği eklendi. Bu özellik ile beraber partner’ler (Mirroring yapılan sunucular birbirinin partner’idir) bozuk(corrupted) olan data page’leri birbirlerinden otomatik olarak recover etmeye çalışmaktadır. Herhangi bir page’i okuyamayan partner sunucu diğer sunucudan bu page’in düzgün olan halini istemekte, ve bu istek başarıyla sonuçlanırsa düzgün olan page corrupted yani bozuk olan page ile replace edilmektedir.

More...

Sys.dm_exec_query_stats gibi DMV’leri anlatırken ilgili çalışan kod parçacığının sys.dm_exec_sql_text ve start-end offset’ler kullanılarak nasıl okunacağını görmüştük. Bilgilerinizi tazelemek için aşağıdaki makaleleri kullanabilirsiniz.

SQL Server – Her Gün 1 DMV - Gün 2 - sys.dm_exec_sql_text - sys.dm_exec_query_plan

SQL Server – Her Gün 1 DMV - Gün 4 - sys.dm_exec_query_stats ile Query İstatistikleri

Bugünkü makalemde daha yeni yazdığım, dumanı üzerinde tüten, statement text’i döndüren function’ımı paylaşıyor olacağım.:)

More...

28 Aralık Salı günü yapmış olduğum webcast’te kullandığım powerpoint dosyasını ve scriptleri sizinle paylaşmak istiyorum.

İlerleyen günlerde webcast’i video formatında da paylaşıyor olacağım.

More...

Geçenlerde bana sorulan güzel bir soru üzerine bu makaleyi yazmaya karar verdim. Soru şu şekildeydi;

“En çok CPU tüketen sorgularımı kontrol etmek için sys.dm_exec_query_stats DMV’sine sql_handle kolonu üzerinden sys.dm_exec_sql_text’i join’lediğim zaman bazı satırların database bilgisi null gelmekte. Bunun sebebi nedir?”

More...

28 Aralık Salı günü yapacağım webcast’in duyurusunu yapmak istiyorum.

DMV(Dynamic Management View)’ler ile SQL Server Database Sunucularını İzleme başlıklı webcast’im 28.12.2010 tarihinde 21:00-22:00 saatleri arasında gerçekleşecek.

Aşağıdaki url’i kullanarak vereceğim bu webcast’e katılabilirsiniz.

https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032468645&EventCategory=4&culture=tr-TR&CountryCode=TR

Hepinizi bekliyorum.

More...

SQL Server – Her Gün 1 DMV - Gün 15 – DMV’ler ile Eksik Index Sorgulama makalemde sistemde olmayan ama olması tavsiye edilen indexleri nasıl sorgulayabileceğimizi incelemiştik.

Bugünkü makalemde ise belirlediğimiz bu missing index’leri adım adım analiz edip create edip etmemeye karar vereceğiz. Ve create ettikten sonrada nasıl monitor edebileceğimizi görüyor olacağız. Yani baştan sona bir missing index operasyonunun nasıl yapıldığını görüyor olacağız.

More...

Bugün bana gelen bir url’i sizinle paylaşmak istiyorum. Aşağıdaki süper manyak über :) şekilde hazırlanmış PDF dosyasıyla SQL Server 2008 ve R2 ile gelen system view’lerinin MAP’ine ulaşabilir, birbirleriyle olan relationlarına erişebilirsiniz.

Kesinlikle incelemenizi tavsiye ediyorum.

Overview

The Microsoft SQL Server 2008 R2 System Views Map shows the key system views included in Microsoft SQL Server 2008 and SQL Server 2008 R2, and the relationships between them. The map is similar to the Microsoft SQL Server 2008 version and includes updates which are also applicable for the Microsoft SQL Server 2008.

http://download.microsoft.com/download/0/6/9/06952611-7528-4CEE-BBD5-29DC44315DC7/SQL_Server_2008R2_System_Views_Map.pdf

map1

 

İyi Çalışmalar

Turgay Sahtiyan

Her Gün 1 DMV yazımda bugün son günümüz :) Bugünkü yazımda yeni bir DMV anlatmaktansa geride kalan 29 gün boyunca işlediğimiz DMV’leri bir başlık altında toplamayı uygun gördüm. Bu şekilde tek bir post’tan bütün DMV’lere hızlıca erişebileceğiz.

More...

sys.dm_os_wait_stats DMV yazımda SQL Server’ın network, CPU gibi hangi dış etkenlerde beklediğini nasıl belirleyebileceğimizi görmüştük. Bugünkü yazımda ise sys.dm_os_latch_stats DMV si ile SQL Server boş page bulma gibi SQL Server ilişkili beklemeleri nasıl sorgulayacağımızı görüyor olacağız.

More...