MSSQL Server Useful Information

Tuğrul Kılıç
Turk Telekom Bulut Teknolojileri
5 min readJun 29, 2022
SQL Server

Microsoft SQL Server kısa adıyla MSSQL bir sunucu veritabanı motorudur. ( Database Engine ) Verilerimizin güvenle ve bir bütünlük içerisinde depolanmasını ve aynı anda çoklu kullanıcı tarafından erişilmesine yarayan dünya çapında kullanılan kurumsal çaplı bir ilişkisel veri tabanı yönetim sistemidir. (RDBMS)

Peki MSSQL Server ile Neler Yapabiliriz?

  • Veritabanlarımızı ve veritabanı objelerimizi ( stored procedure, function,view,trigger vb. ) yönetebiliriz.
  • Verilerimizi kaydedebilir, işleyebilir, işlenen verileri depolayabiliriz.
  • Kaydedilen verilerimizi raporlayabiliriz.
  • Kullanıcılarımızı rol tabanlı atamalar yapıp yönetebiliriz.
  • Verilerimizi optimize edip, indeksleyip hızlı bir şekilde sorgulayabiliriz.

MSSQL yönetimi üzerinde performans,güvenlik vb. gibi kategorilerde birden fazla ayar mevcuttur. Önemli gördüklerimi aşağıda sizlerle paylaşacağım. Gelin hep birlikte bu ayarlara birlikte bakalım.

1 — Lock Pages in memory ( LPM )

Bu ayar , SQL Server’ın belleğin kendisine tahsis edilen miktar kadarını kullanacağını ve normal koşullarda işletim sistemine bırakılmayacağı anlamına gelir. Yapılan bu ayar, sistemde herhangi bir bellek baskısı varsa, sistem ve SQL Server performansını artırabilir.

Bu seçeneğinin aktif olup olmadığını aşağıdaki sql sorgusunu çalıştırarak kontrol edebiliriz. Eğer işaretli alan “0” ise seçenek aktif değildir, 0'dan büyük farklı bir değer ise seçenek aktifdir.

Lock Page in Memory Check

Seçenek aktif değilse aşağıdaki gibi aktif edebiliriz. Çalıştır (Run)— secpol.msc — Local Policies — User Rights Assignment — Lock Pages in memory ekranına gidip SQL server servis hesabını bu alana ekledikten sonra SQL Server servisini restart etmemiz gerekmektedir. Daha sonrasında seçenek aktif olacaktır.

Lock Page in Memory Setting

2 — Perform Volume Maintenance Task

Bu ayarı aktif ettiğimizde, SQL Server veritabanı büyütme, restore, tempdb gibi işlemleri bir tık daha hızlı yapmaya başlıyor. Örnek verecek olursak; 100 GB olan veritabanı dosyamızı 150 GB çıkarmnak istediğimizde 50 GB’ lık alanı işletim sistemi araya girip bu alanı “0” verisiyle dolduruyor. Fakat işte sorun burada ortaya çıkıyor. SQL Server verilen bu alanı kendi doldurmak istediği için “0” verilerini silip kendi verilerini yazmaya başlıyor. Anlıyoruz ki 2 defa iş yapılmış oluyor. Bu seçeneği aktif ettikten sonra SQL Server işletim sistemine kısaca şunu demiş oluyor: “ Bu tarz işlemler için sen araya girme, bu işlemleri ben kendim yaparım”. Bu ayarın ismi “Anlık Dosya Başlatma ( Instant File Inizialization)” olarak da geçer.

Seçeneğin aktif olup olmadığını aşağıdaki SQL sorgusunu çalıştırarak öğrenebiliriz. Dönen sorgu sonucunda işaretli kısım “Y” dönüyorsa seçenek aktif, eğer “N” dönüyorsa aktif değildir.

Perform Volume Maintenance Task Check

Seçeneği aktif etmek için 2 yol bulunuyor. Birinci yol bizim yerimize bu işlemi otomatik yapan SQL Server ilk kurulum esnasında gelen “Grant Perform Volume Maintenance Task prvilege to SQL Server Database Engine Service” kutucuğu işaretlemek ( Resim 1 ), İkinci yol ise bizim elle müdahalede bulunduğumuz SQL Server hesabını eklediğimiz kısım (Çalıştır (Run) — secpol.msc — Local Policies — User Rights Assignment — Perform Volume Maintenance Task) ( Resim 2 ) . Gelin hep birlikte bu ekranları görelim:

Not: Elle yaptığımız işlemden sonra SQL Server servisini restart etmemiz gerekmektedir. Daha sonrasında ayar geçerli olacaktır.

Resim 1
Resim 2

3 — Server Memory Settings

En önemli ayarlardan biri olan memory ayarına değinmezsek olmazdı. SQL Server ilk kurulduğunda hiç bir değer belirtilmediği taktirde by default 2 PB’a kadar memory kullanımı müsaade eden bir şekilde kuruluyor. Bizim bu ayarı kendi sistemimiz kaynaklarımıza göre düzenlememiz gerekiyor. Bu arada şu şekilde bir metrik belirleyebiliriz. Örneğin 20 GB toplam memory miktarına sahip bir sunucumuz olsun. Burada hesaplamamızı şu şekilde yapıp server memory ayarını yapabiliriz. (20 x 0,20=Minimum 4 GB bir alan veya daha fazla bir alanı işletim sistemine bırakabiliriz. Ben burada toplam belleğin %20' lik dilimini aldım.) 20–4=16 GB olarak maksimum memory belirleyebiliriz. Ayarı aşağıdaki gibi set ettikten sonra geçerli olması için SQL Server servis hesabını yeniden başlatmak gerekmektedir.

Memory Settings

4 — Veritabanı Dosya Vasyaılan Disk Konumları

SQL Server ilk kurulumda herhangi bir değişiklik yapmadığımız sürece aşağıdaki dosyaları aynı disk üzerinde tutacaktır.

  • Veritabanı Dosyaları ( Master Data File *.mdf)
  • Veritabanı Log Dosyaları ( Log Data File *.ldf)
  • Veritabanı Temp Dosyaları ( Temp Data File *.ndf)
  • Veritabanı Yedek Dosyaları ( Backup File *.bak)

Küçük yapılarda çok fazla bir etkisi olmayacaktır, fakat büyük yapılarda çok fazla transaction olan ve okuma-yazma işlemlerinin sıkça yapıldığı durumlarda bu dosyaları farklı disklere yazmak performans açısından bize büyür bir avantaj sağlayacaktır. Fiziksel sunucu ise ayrı bir RAID yapısı yapılarak, sanal sunucu durumunda ise farklı datastorelarda konumlandırılarak performans artışı sağlayabiliriz. Aşağıdaki resimde dosya konumlarının nerede tutulduğunu görebiliriz.

Database File Default Locations

5- Maximum Degree of Parallelism ( MAXDOP)

Yapılandırılması ve önemli bir şekilde ayarlanması gereken ayarlardan biridir MAXDOP ayarı. Bir NUMA düğümümüzde ( Fiziksel İşlemci ) 8 veya daha fazla Logical Proccessor ( Mantıksal İşlemci ) varsa MAXDOP ayarını 8 olarak kullanabiliriz. Eğer 8' den az bir mantıksal işlemcimiz varsa bu ayarı o sayıya set edebiliriz. Ayarın kontrol edilmesi ve ayarlanması aşağıdaki ekrandan yapılabilir. İşlemin geçerli olması için servis restartı gerekmektedir.

MAXDOP Setting Check

6-Server Model Database Settings

SQL Server üzerinde bir veritabanı oluşturulacağı zaman ilk ayarları “Model” veritabanı üzerindeki parametrelerden alır. Kendi ortam ve yapımız için bu ayarları kişiselleştirebiliriz. Veritabanı başlangıç boyutu, otomatik arttırılacak boyut, dosya konumu, ileri seviye parametreler bu veritabanın yapıldıktan sonra daha sonra her açılan veritabanı bu parametreleri baz alarak oluşturulacaktır. Aşağıda detaylarını görebiliriz.

Resim 3
Resim 4

7- Auto Close Özelliği

Bu ayar aktif edilen veritabanı üzerindeki son kullanıcı bağlantısını kapandığında, veritabanını kapatarak sunucu üzerindeki (veritabanının kullandığı) kaynakların serbest bırakılmasını sağlamaktadır. Bu ayarın dezavantajı; veritabanı kapandığında bir sonraki kullanıcının erişimi daha uzun sürer. 2 değer almaktadır. “Açık” ve “Kapalı” Best practices istenilen değer “Kapalı” olmasıdır. Aşağıdaki gibi istenilen veritabanı özelinde açıp, kapatılabilir.

Resim 5

8 — Auto Shrink Özelliği

Bu ayar aktif edilen veritabanı üzerindeki dosya boyutlarının belirli aralıklarla shrink edilmesini yani küçültülmesini sağlamaktadır. Bu ayarın dezavantajı ise index bozulmalarına ve yüksek kaynak tüketimine neden olmaktadır. 2 değer almaktadır. “Açık” ve “Kapalı” Best practices istenilen değer “Kapalı” olmasıdır. Aşağıdaki gibi istenilen veritabanı özelinde açıp, kapatılabilir.

Resim 6

Sizlere bu yazımda SQL Server ile bazı ayarları yüzeysel olarak anlatmaya çalıştım.Vakit ayırıp okuduğunuz için teşekkür eder, saygılar dilerim…

--

--