Masters Of SQL

SQL Server ile ilgili bilgiler, hayata dair paylaşımlar ve birazda eğlence tabii...
Deadlock’sız, Blocking’siz, Contention’sız günler diliyoruz :)
Sysadmin sizinle olsun

SQL Server IO Test

Sevgili MastersOfSQL severler, ilk yazımla sizlere merhaba demek istiyorum.

Nedir bu IO, input – giren, output’da çıkan data diyebiliriz. SQL Server’ınıza yazılan ve okunan dataların giriş ve çıkışlarını saniyede en fazla ne kadar yapabildiğini gösteren bir değerdir. Önemli midir? Evet önemlidir 😊

Neden önemlidir kısaca anlatmaya çalışalım. Storage veya disk alt yapınız, SQL Server’ınıza gelen çılgın SELECT cümlelerine cevap veremediği zaman IO sebebiyle beklemeler yaşarsınız. Tabiki burada hemen sorgularınızı gelişi güzel yazmamanız gerektiğini düşünmeye başlamanız gerekir.

Her bir SELECT sorgunuzun bir IO değeri olduğunu unutmayın, buna nasıl bakarım derseniz, sorgunuzun başına;

SET STATISTICS IO ON parametresini yazarak, sorgunuz çalıştıktan sonra ne kadar IO yaptığına dair değerleri görebilirsiniz.

Şimdi gelelim SQL Server sunucunuz üzerinde bu IO testleri nasıl yapılıyor bir bakalım. Daha önceden SQLIO adında bir program kullanıyorduk, Microsoft bunu DskSpd programı ile değiştirdi. Hem fiziksel hem de sanal makinalarda test için kullanılabilir.

Programı aşağıdaki linkten indiriyoruz;

https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223

Komut satırından çalışan bir programdır, bu yüzden direk C dizini altına DskSpd adında bir klasör açalım

C:\DskSPd

DiskSpd programı komut satırından çalışan bir program olduğundan, komut satırını yönetici olarak açmakta fayda var.

Ufak bir hatırlatma, SQL datalarınızın bulunduğu diskleri 64k unit size olarak formatlamayı unutmayın. Neden 64k formatlanıyor diye merak edenlere, başka bir makalede bunu anlatacağım.

DiskSpd’de kullanacağımız parametrelere göz atalım;

Örnek kod: DiskSpd.exe -c100G –d300 -r -w0 -t8 -o8 -b8K -h -L E:\testdosyasi.dat

-          c (Test dosyası boyutu 100 gb)

-          d (Test süresi 300 saniye)

-          r (Random IO, eğer r parametresi yazılmaz ise ardışık olarak testi yapar)

-          w (Testteki write yüzdesini belirler, w25 w50 gibi, w0 olarak bırakılırsa %100 read olarak test yapar)

-          t (Worker thread sayısını belirler, Core sayısına göre bu değeri değiştirmekte fayda var)

-          o (Outstanding’İn den kısaltmasını alıyor, her worker thread’e bağlı IO kuyruğu oluşturmak için kullanılıyor.

-          b (Blok size değeri veriliyor, her page 8kb olduğundan, 8kb veya 64k kullanılıyor)

-          h (İşletim sistemi seviyesinde ve donanım cachingi iptal etmek için kullanıyor, SQL server testinde bu parametre önemli)

-          L (test sırasındaki latency’i yakalıyor)

-          E:\testdosyasi (Test sırasında kullanılacak dosyanın yolunu belirtiyoruz, hangi disk biriminde test yapacaksanız ona göre değiştirmeniz gerekiyor)

Parametrelerden sonra yukardaki örnekte olan komutu çalıştıralım.


IO -1

3gb lık testfile oluşturmuştum, 8 thread üzerinde IO’ları ayrı ayrı gösteriyor, toplamda bu disk üzerinde %100 Read testinde Toplam Read IO’su 31.000 olarak çıktı.

Şimdi de %30 Write yapan bir test yapalım

DiskSpd.exe -c3G –d300 -r -w30 -t8 -o8 -b8K -h -L E:\testdosyasi.dat

Test ile bilgileri ilk olarak veriyor, software cache ve hardware write cache disable durumda. Read ve write değerleri, block size, random IO mu yoksa ardışık IO mu yapacağını Input parameters bölümünde görebilirsiniz. Bundaki amaç farklı parametreler kullanıp yapacağınız testleri kaydedip karşılaştırmak için kullanabilirsiniz.


IO -2

8 Corelu bir makinada bu testi yaptım, 8 thread olarak çalıştı, ve 300 saniye boyunca tüm Cpu’lar %100 olarak çalıştı, test sonuçlarının en başında Cpu yüzdelerini de görebiliyoruz. Eğer tüm cpular bu test sırasında çalışmıyor ise, thread kısmını kontrol etmelisiniz.


IO - 3

Şimdi read ve write IO larına baktığımızda, aslında bu disklerin toplam 30bin IO değeri verdiğini görüyoruz, thread ve test dosyası ile biraz daha oynasak bile, aşağı yukarı bu değerleri göreceğiz.


IO - 4

Son olarak da latency değerlerine bakalım, eğer sizde de bu kadar yüksek latency çıkıyorsa sotrage’inizde bir sorun vardır 😊 ben bu testi ssd’li bir laptopta yaptığımdan bu değerlerin çıkması gayet normal.



IO – 5

IO testlerimizi yaptık, storage’imizin ne kadar IO vereceğini artık biliyoruz, mevcut yapınızdaki durumu yukardaki testler ile artık görebileceksiniz. SQL Server’ınızın IO ları ile altyapınızın IO’larını karşılaştırıp, IO ihtiyacınız var mı yok mu tespit edebilirsiniz. Mevcut durum bu, peki yeni bir server ve storage alırken size kaç disk lazım olacak? Storage planlamasını neye göre yapıyorsunuz? Maalesef bu planlama ver abi ordan 20 disk, 2 de SSD takalım hız olur diyerek geçiştiriyorlar. Günün sonunda yanlış bir yatırımı kucağınızda buluyorsunuz 😊

Son paragraftaki soruların cevapları için bizi takip etmeye devam edin 😊 Storage planlaması hakkında daha bir makale yazacağım.

Obi-Wan Kenobi olarak ilk yazımda umarım faydalı olmuşumdur. Üstadın dediği gibi “Güç sizinle olsun”

SQL Server Configuration Manager Cannot connect to WMI provider Hatası

Merhaba MastersOfSql Okuyucuları;

Gün geçmiyor ki gittiğimiz bir müşteride hatayla karşılaşmayalım :):) Herşey yolunda gitse biz nasıl kazanacağız değil mi? iş te bunlar hep Dark Side ların yüzünden :) 

Aslında yapmak istediğimiz SQL Server'ın Database Engine servis kullanıcısı değiştirmekti (bunun önemini ayrıca yazacağız) her DBA gibi yapmamız gereken şekilde giderek Start --> Configuration Manager diyoruz ve hooop karşımızda bir hata; 

Cannot connect to WMI provider. You do not have permission or the server is unreachable. Note that you can only manage SQL Server 2005 and later servers with SQL Server Configuration Manager. Invalid class [0x80041010]

haydaaa evet bu hatayı biliyoruz daha öncede karşılaşmıştık ve bir kaç çözümü vardı bunları deniyoruz bununla birlikte nafile :( o zaman nöronlarımızı biraz daha kurcalayarak çok eski bilgilerimize başvuralım diyerek kara kaplı USB mizi search etmeye başvuruyoruz ve yıllar öncede çözdüğümüz çözümü buluyoruz aslında bu daha çok SQL Server upgrade olunca olurdu peki bu sefer niye olmuş diye bakarken evet sunucu upgrade olmuş.

O zaman kollarımızı sıvayarak işe koyulalım.

Yapmamız gereken ilk iş bozulan "mof" dosyasının yolunu bularak bunu tekrar register etmektir.  Bizim sunucumuz SQL Server 2014 e upgrade edildiğini bildiğimizden dolayı aşağıdaki komutu Run a yazarak çalıştırıyoruz 

mofcomp "C:\Program Files (x86)\Microsoft SQL Server\120\Shared\sqlmgmproviderxpsp2up.mof"
Sunucunuzun versiyonuna göre "120" yazan yeri değiştirerek bunu yapabilirsiniz.
Microsoft SQL Server Versiyon   Build Number
Microsoft SQL Server 2017          140
Microsoft SQL Server 2016          130
Microsoft SQL Server 2014          120
Microsoft SQL Server 2012          110
Microsoft SQL Server 2008 R2       100
Microsoft SQL Server 2008          100
Microsoft SQL Server 2005           90


Tekrar SQL Server Configuration Manager ı açtığımızda bu sefer açıldığını göreceksiniz. 

SQL Server 2012 den 2014 e upgrade yapılmış.



Bir konumuzu da böylece bitirmiş olduk şimdilik tattoine gezegenine geri dönüp biraz Sith avlayalım :) 

Güç sizinle olsun...


Query Query Nereye Kadar? :)

Merhabalar MastersOfSql'in güzide okuyucuları :) Gelelim birazcık da eğlenerek öğrenme kısmına :P Bulmacamızı çözen arkadaşlarımızın info@mastersofsql.com adresine mail atmalarını tavsiye ederiz. Bu ilk bulmaca alıştırmalık olsun :):) sonrakiler için eksiksiz ve doğru bir şekilde bulmacayı çözerek, bize ileten arkadaşlarımız arasında yapacağımız çekilişle, talihli bir arkadaşımıza küçük bir hediye yollamayı düşünüyoruz. Küçük bulmacamızın, hoşunuza gitmesini temenni eder, keyifli vakitler dileriz.

Bulmacamızın, Word halini indirmek için buyrun tık tık : SQL_puzzle.doc (256,4KB)

   
1
                        2      
                             
                3 4
                    5        
                           
                6
                           
              8                
7            
                             
              9        
        10                
                             
                             
                               
                               

Soldan sağa
3. “Aaaa bulmaca çok güzel fikirmiş, bu akşam yazarsın değil mi!” diyerek, bir anda zavallı çırağına görev veren Master DBA’miz. Bu nedir yaa! Resmen çaya, çorbaya kandırıyor zavallı çırağını. Bence şöyle olmalı, herkes tecrübe yılı ile orantılı olacak şekilde yazı yazsın. Nasıl fikir? Hayatta olmaz dediğini duyar gibiyim:D :P

4. Bilmeyene açıklaması birazcık(!) zor olan kelime :) Veri Tabanı Yöneticisi anlamına gelen bu unvanı hakkıyla öğrenmek çok zaman ve emek isteyen bir iş. Seçerken dikkatli olun, zira geceniz gündüzünüze karışabilir.

6. En basit tabiriyle verilerin tutulduğu, ilişkilendirilebildiği, güncellenebildiği, gerektiğinde silinebildiği ve daha bir sürü şeyin yapılabildiği yer. SQL camiasında AdventureWork, Northwind demoların baş tacı oldu, az kahrımızı çekmedi. Bu baş taçlarımızın genel adı ne?

7. Microsoft SQL Server 2016’da görmekten keyif alacağımız yeni özelliklerden biri daha. Execution Plan, var oldu olalı böyle kıyak görmedi. Hadi yine iyisin Execution Plan, eski anılarını kullanabileceğin bir dükkan yapmışlar sana. Dükkan da dedim, artık Fill in the blanks please...

9. Microsoft SQL Server 2016’da yeni gelen bir özellik. Açılımı JavaScript Object Notation olan bu destek, SQL Severlerini yeni maceralara sürükleyecek gibi :)

10. Açılımını söylersek, hemen bulacaksınız :)O sebeple azıcık yokuş yapalım, örnekten anlatalım. Microsoft SQL Server 2016 hemen çıkmadı ama fragman niteliğinde sürümleri çıktı. Hatta Ekim ayı sonunda 3.0 ı yayınlandı. Bu ön sürüme ne diyorduk?

Yukarıdan aşağıya
1. Kendisinden çok daha tecrübeli Master’ının engin bilgilerinden faydalanmak için ve bunu diğer SQL sever arkadaşları ile paylaşmaya çalışan, bulmaca boyunca okuduğunuz yazıları yazan kişi. Master yazarımız, her ne kadar her yazıda kendisine dokundursa da, bu bulmacada eline düşmüştür.

2. İşini iyi yapan bir DBA’in en güzel görevi :P Saydığımız 11 madde vardı ya, işte oradaki maddelerden biri. Eğer tüm işlerini iyi yaptıktan sonra DBA’miz, kendine durduk yere bir iş daha çıkarmazsa tabi :)

5. İçinde Structured Query Language’in kısaltmasını bulunduran bu kelime, aynı zamanda adını sık sık kullandığımız, kurduğumuz instance’lara dahi isim olarak verdiğimiz, sitemizin güzide ismi.

8. Microsoft SQL Server 2016 ön sürümünün kurulumunda gözümüze çarpan bir değişiklik. Kurulum aşamasında “Database Engin Configuration”da karşımıza çıkıyor bu değişiklik. Gözümüze çarpmayacak gibi de değil hani, küçücük bir kutu değil ki :) Adamlar kocaman sekme yapmışlar :P Bu sekmede adını bulmanız gereken şeyle alakalı düzenlemeler yapıyorsunuz.


Sorular için yardımcı olabilecek yazılar :) 

1,3,5 numaralı sorular için : 

2,4 numaralı sorular için : http://www.mastersofsql.com/post/2015/11/10/dba-mi-o-ne-olaki http://www.mastersofsql.com/post/2015/11/10/dba-mi-o-ne-olaki-bolum-2 

7,9,10 numaralı sorular için : 

8 numaralı soru için :