SQL Server Mimarisine Giriş

Reading Time: 4 minutes

SQL Server Mimarisi yazı dizimde bu adımda sizlerle genel mimariye bakıp mimari içeriklerini inceliyor olacağız.  Genel olarak mimari aşağıda ki Şema1 de görülmektedi ve 3 katmandan oluşmaktadır.

Bu katmalara az sonra daha detaylı değineceğiz. Peki nedir bu katmanlar ;  SQL Server Network Interface (SNI) , Database Engine ve SQLOS

 

  1. SQL Server Network Interface (SNI) :

İstemci ile sunucu arasında ki bağlantıyı sağlayan katmandır. SNI  katmanı bu bağlantıyı ; Shared Memory, TCP/IP, Named Pipes ve Virtual Interface Adapter (VIA) olmak üzere 4 protokol ile sağlar.

 

Yukarıda ki Protokoller SSCM ( Sql Server Configuration Manager) aracılığı ile yönetilebilirler.

  • Shared Memory : Sadece SQL server ve İstemci aynı sunucu ise kullanılabilir ve oldukça hızlıdır. Herhangi bir konfigürasyon gerektirmez.
  • TCP/IP : En çok kullanımı yaygın olan protokol olup Sunucuya IP üzerinden erişimimizi sağlar. SQL için varsayılan port 1433 ‘tür.
  • Named Pipes : LAN için geliştirilmiştir. (İstemci ile sunucunun aynı Local Area Network üzerinde olması durumunda kullanılabiliri.) TCP 445 portunu kullanır. SQL Server ALIAS tanımlanarak WAN ( Wide Area Network) üzerinden de kullanılabilir ancak yavaş çalışacağı için tercih edilmemesi tavsiye edilir.
  • Virtual Interface Adapter (VIA) : Yüksek performanslı bir protokoldür. Ancak hem istemci hem de sunucu için özel bir donanıma ihtiyaç vardır.

 

SNI ‘in görevi , sunucularda ki Tabular Data Stream (TDS) endpoint ‘e istek yapıp verileri alan ve güvenli bağlantı oluşturmaktır.

TDS (Tabular Data Stream) :TDS, ilk olarak Sybase tarafından tasarlanmış olup veritabanı sunucusu ile istemci arasındaki veri aktarımı için kullanılan bir uygulama katmanı protokolüdür. Sunucu üzerinde bu TDS paketlerini dinleyecek endpoint’ler bulunur. Her network protokülüne özgü bir TDS endpoint mevcuttur. Bu endpoint’leri listesi sys.endpoints isimli view’den alınabilir.

 

Ayrıca sys.tcp_endpoints, sys.via_endpoints gibi view’ler kullanılarak o endpoint için daha fazla detay alınabilir. Bir endpoint’in hizmet verebilmesi için STARTED durumunda olması gerekir. SQL ortamında bu endpoint’leri açmak veya kapatmak için aşağıdaki gibi ALTER işlemi yapılabilir. Bir endpoint’in kapatılması yeni bağlantıları engeller mevcut bağlantıları kapatmaz.

 

Aşağıda ki Script ile TDS endpoint leri görebiliriz.

Yukarıda ki result kümesini incelediğimizde dikkatimizi çeken bir nokta ilk sırada yer almaktadır. Dedicated Admin Connection (DAC) ; SQL Server de bir sıkıntı olduğunda ve diğer protokoller ile erişim sağlanamadığında sarılacağımız can simidimiz diyebiliriz. Bunun için ayrı bir makale yazmıştım aşağıdaki link ile DAC ‘ı daha detaylı inceleyebilirsiniz.

SQL Server Dedicated Admin Connection (DAC) TIKLA ….

Sunucu ile istemci arasında ki TDS paket büyüklüğünü SSMS ekranından Client Statistics i açarak görebilrisiniz.

Network Packet Size (TDS Paketleri) Default boyutu 4 KB ‘tır. Bunu isterseniz değiştirebilirisniz.  Değiştirme işleminden sonra SQL Server Servisini yeniden başlatmanız gerekmektedir.

SSMS ile Network Packet Size Değiştirme :

Script ile Network Packet Size Değiştirme :

2.Database Engine

Database Engine kendi arasında iki gruba ayrılıyor. Birinci Grup Relational Engine diğerisi ise Storage Engine dir.

  • Relational Engine :

Sorguların optimizasyonu ve çalıştırılmasından sorumludur ve 3 bölümden oluşur.

  • Command Parser : Sorgu yazım hatalarına karşı denetler sorgu ağacını hazırlar.
  • Query Optimizer : Sorgularının execution planlarının hazırlanmasını sağlar. İlk aşaması Pre-Optimization denilen ve sorgunun karmaşıklığına göre kaç plan çıkarılacağına karar verildiği aşamadır.
  • Query Executor : Query i çalıştırır.

Genel olarak Relational Engine aşağıda ki task lardan sorumludur ; Query Processing, Memory Management, Thread and Task Management , Buffer Management, Distributed Query Processing

  • Storage Engine :

Veritabanının fiziksel File larından (Data ve Log) sorumlu olup bu File ların barındırıldığı yapının ( Storage System,Disk …) performansı , güvenli olması ve doğru barındırılmasından mesüldür. Genel anlamda I/O ile ilgili süreçleri kapsar. BACKUP,RESTORE, vb. süreçlerde Storage Engine tarafından yürütülmektedir.

Buffer Manager : Buffer Pool un yönetiminden sorumludur. Veriler direkt olarak disk üzerinden alınmaz, istekler ilk etapta Buffer Manager a gönderilir ve Buffer manager da sayfayı render edilmeden önce önbelleğe verir.

SQL Server’e bir sorgu geldiği zaman Query Processor bölümündeki Buffer Pool’da bu sorgu yürütmek için bir execution plan olup olmadığına bakılır eğer yoksa Query Optimizer hemen bir execution plan oluşturur veya plan doğrultusunda Query Executor, sorgu için gerekli kaynağı (veriyi) Storage Engine’dan talep eder. Storage Engine duruma göre datayı ya buffer ya da disk ten okuyup Query Processor’a (Relational Engine) döndürür. Bu motor da istemciye datayı gönderir.

Aşağıda Buffer Pool üzerinde ki kayıt sorgulama makalem yer almaktadır. Ek olarak bu makaleyi de inceleyebilriisniz.

Buffer Pool Kayıt Sorgulama TIKLA ….

Transaction Manager : Transaction işlemlerinden sorumludur. Bu task aracılığı ile concurrency olarak bilinen sorguların eş zamanlı çalışması , kullanıcıların aynı anda aynı verilere erişmesi durumunda transaction ve Lock mekanizmasını yönetir.

SQLOS API

İşletim sistemi ile SQL Server arasında kalan bir katmandır.  Bu uygulama katmanı  bellek yönetimi,I/O yönetimi ,

 

 

SORU :  Network Packet Size ‘ı başka hangi yöntem ile değiştirebilriz?( SQL Server dışında )

Leave a Reply

Your email address will not be published. Required fields are marked *