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 İle Takılmacalar :)

Merhabalar, 

Yoğun bir haftanın daha sonuna doğru gelirken, yeni bir bulmaca ile karşınızdayız. Bulmacamızı çözen arkadaşlar info@mastersofsql.com adresine mail atabilirler.

Bulmacamızın, Word halini indirmek için buyrun tık tık : SQL_Takılmacalar_Puzzle.docx (17,94 kb) 

Sorular için yardım almak isterseniz, aşağıdaki linklerden faydalanabilirsiniz :) Şimdiden iyi eğlenceler dileriz:)


1
                                               
            2                
                          3                    
            4                                
                                           
                                           
                      6                   7
          5      
                                         
                                         
                        8
9                    
                    10                        
                                           
                                           
                                             
                                             
          11            
                                             
                                             
                                             
                                               
                                               
                                               

Soldan sağa
2. Sp_WhoIsActive’i, yaptığı işlev dışında, bir tür olarak değerlendirdiğimizde bu kategoriye girer. Cevabı adında saklı:) 

5. Lokalde bulunan veri tabanının tarihsel olarak değişimlerini azure da bulunan sql sunucuya göndererek, bu sayede hem lokal db de çalışırken hem de uzak verilere kesintisiz olarak erişmemizi sağlayan SQL Server 2016 nın gelecek olan özelliklerinden biri. Yakında gelişen bu teknoloji ile işimiz gücümüz kalmayacak galiba :P :D 

8. Sp_WhoIsActive yazarı. Saygı değer abimize sevgilerimizi yolluyoruz. 

9. Sp_WhoIsActive’i get_plan parametresi ile çalıştırıyorsak, aslında neyi görmeyi hedefliyoruzdur? İpucu da verelim, sağdan başlarız okumaya :P 

11. Kendisi kullanmayacak olsa dahi(!), bir sonraki junior DBA ler için yararlı olabilecek tecrübelerini aktarmak amacıyla yazılan, DBA’in görevlerinden biridir. Buradan MASTER olan güzel insana(YODA diyoruz biz halk arasında :P) duyrulur. Daha çok yazarak, Padawan’ına tecrübelerini aktarabilir mesela :P :D (Neyse, yiğidi öldür hakkını ver demişler, kendisi tecrübelerini aktarma konusunda number 1, ekstra teşekkürlerimi iletiyorum buradan da :) ) 

Yukarıdan aşağıya
1. Açık olması büyük güvenlik açığı barındıran sp_configure özelliği nedir? Prodda açalım da şenlik çıksın :D 

3. SQL Server 2008 de aramıza katılarak, 2012 sürümünde gelen güncellemeleri ile öğrenmek istediğimiz bazı soruların cevabını verebilen bir özellik. “Bazı sorulara” örnek verecek olursak, tablomdaki şu kaydı kim silmiş acaba? Ya da ben bu login'i oluşturduğumu hatırlamıyorum, kim yaptı peki? Aramızdaki haini bulalım :P :D 

4. SQL cümleciklerimizin WHERE kısmının, bir bakıma Audits’deki ismi. Türkçe anlamını yazmak istemiyorum, zira İngilizcesine çok benziyor :D 

6. SQL de konfigürasyon ayarlarını düzenlemek istediğimizde ilk olarak sp_configure’den neyi açmamız gerekir? 

7. DBA lerin görmek istemediği, mecbur kaldıklarında session’ı kill etmek zorunda kaldıkları olay. Sp_WhoIsActive sağolsun, bu olayı bulmada işimizi bir hayli kolaylaştırıyor. 

10. SQL Server 2016 da gelecek olan gizli kalması gereken veriler için kullanacağımız bir özellik. Aman aman kimseler görmesin! :) 

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

2,6,7,8,9 numaralı sorular için : 

http://www.mastersofsql.com/post/2015/11/23/dba-toolkit-sp-whoisactive

1 numaralı soru için : 

http://www.mastersofsql.com/post/2015/11/25/sql-server-best-practices

3,4 numaralı sorular için : 

http://www.mastersofsql.com/post/2015/11/21/nedir-bu-sql-server-audit

http://www.mastersofsql.com/post/2015/11/21/nedir-bu-sql-server-audit-bolum-2

5,10 numaralı sorular için : 

http://www.mastersofsql.com/post/2015/11/16/sql-2016-yenilikleri-ctp3

11 numaralı soru 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

SQL Server - Best Practices

Performans & Optimizasyon

SQL Server üzerinde best practice olarak ayarlamamız gereken ayarları zaman zaman paylaşacağım ilk olarak yeni kurduğumuz bir SQL Server sunucusunda yapmamız gereken ayarlardan bahsediyor olacağım.
SQL Server konfigurasyonları içerisinde kritik olan "Server Properties" ekranından ve "sp_configure" den ayarlayabileceğimiz ayarlar aşağıda.

    USE master
    GO
    -- Öncelikle advanced options'ları açıyoruz
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE WITH OVERRIDE;
    GO

    -- Gerekli ayarları kontrol ediyoruz
    SELECT name, value, value_in_use, [description] 
    FROM sys.configurations
    WHERE name IN 
    (
    'backup compression default', -- 1 yapılmalı özellikle Backup süreleri ve storage den kazanç çok yüksek
    'clr enabled', -- clr enabled (only enable if it is needed)
    'Database Mail XPs', -- SQL üzerinden mail atıyorsak 1 yapılmalı
    'max degree of parallelism', -- OLTP sunucularında 1 yapılmalı.
    'max server memory (MB)', -- SQL Server RAM sever :) bu yüzden uygun ayarları OS a göre ayarlamak gerekir
    'min server memory (MB)', -- RAM optimizasyonu geniş bir konudur; min değerini ayarlamak yararlı demek tam doğru olamıyor analiz etmeden verilen bir değer OS çökmesine sebep olabilir.
    'optimize for ad hoc workloads', -- AdHoc query kullanan yerler ve Memory kısıtlı olan yerlerde "1"
    'xp_cmdshell' -- özellikle "0" olmalı sistem tarafında büyük bir açık oluşturuyor.
    )
    ORDER BY name 
    


Mevcut ayarlarımızı gördük artık ayarlamamız gereken değerler kaldı.

    USE master
    GO
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE WITH OVERRIDE;;
    GO

    EXEC sys.sp_configure N'backup compression default', N'1'
    GO
    RECONFIGURE WITH OVERRIDE
    GO
 
    sp_configure 'max server memory', 20000; -- RAM miktarını kontrol ederek yapmamız gerektiğini unutmayalım.
    GO
    RECONFIGURE  WITH OVERRIDE;
    GO

    sp_configure 'min server memory', 0;
    GO
    RECONFIGURE  WITH OVERRIDE;
    GO

    sp_configure 'clr enabled', 1;
    GO
    RECONFIGURE  WITH OVERRIDE;
    GO 

    sp_configure 'max degree of parallelism', 1;
    GO
    RECONFIGURE  WITH OVERRIDE;
    GO 

    sp_configure 'optimize for ad hoc workloads', 1;
    GO
    RECONFIGURE  WITH OVERRIDE;
    GO 

    -- xp_cmdshell configure
    EXEC sys.sp_configure N'xp_cmdshell',N'0' -- yazılımı ekibinin kullandığı program olabilir !!!!!! sorup yapılmalı
    GO
    RECONFIGURE WITH OVERRIDE
    GO

    sp_configure 'show advanced options', 0;
    GO
    RECONFIGURE WITH OVERRIDE;;
    GO
    


RAM ayarları ne olacak diye soracak olursanız; ideal oranları tam vermek mümkün olmasa da yaklaşık alttaki değerleri ayarlıyorum bununla birlikte altta verdiğim değerler 64 bit (x64) işletim sistemleri için ve SADECE sunucuda SQL Server çalışıyorsa geçerlidir.

Physical RAM MaxServerMem Setting
2GB 1500
4GB 3200
6GB 4800
8GB 6400
12GB 10000
16GB 13500
24GB 21500
32GB 29000
48GB 44000
64GB 60000
72GB 68000
96GB 92000
128GB 124000

Bir yazımızın daha sonuna geldik. OS'e RAM bırakmanız gerektiğini unutmayın performansınızın düşmemesi dileğiyle :):)