-
- Üyelik Tarihi
- 24 Mar 2017
-
- Mesajlar
- 4,578
-
- MFC Puanı
- 1,437
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
Yukarıda ki Protokoller SSCM ( Sql Server Configuration Manager) aracılığı ile yönetilebilirler.
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 endpointler bulunur. Her network protokülüne özgü bir TDS endpoint mevcuttur. Bu endpointleri listesi sys.endpoints isimli viewden alınabilir.
Ayrıca sys.tcp_endpoints, sys.via_endpoints gibi viewler kullanılarak o endpoint için daha fazla detay alınabilir. Bir endpointin hizmet verebilmesi için STARTED durumunda olması gerekir. SQL ortamında bu endpointleri açmak veya kapatmak için aşağıdaki gibi ALTER işlemi yapılabilir. Bir endpointin kapatılması yeni bağlantıları engeller mevcut bağlantıları kapatmaz.
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.
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 :
2.Database Engine
Database Engine kendi arasında iki gruba ayrılıyor. Birinci Grup Relational Engine diğerisi ise Storage Engine dir.
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 Servere bir sorgu geldiği zaman Query Processor bölümündeki Buffer Poolda 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 Enginedan talep eder. Storage Engine duruma göre datayı ya buffer ya da disk ten okuyup Query Processora (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.
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 ,
Bu katmalara az sonra daha detaylı değineceğiz. Peki nedir bu katmanlar ; SQL Server Network Interface (SNI) , Database Engine ve SQLOS

- SQL Server Network Interface (SNI) :
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 endpointler bulunur. Her network protokülüne özgü bir TDS endpoint mevcuttur. Bu endpointleri listesi sys.endpoints isimli viewden alınabilir.
Ayrıca sys.tcp_endpoints, sys.via_endpoints gibi viewler kullanılarak o endpoint için daha fazla detay alınabilir. Bir endpointin hizmet verebilmesi için STARTED durumunda olması gerekir. SQL ortamında bu endpointleri açmak veya kapatmak için aşağıdaki gibi ALTER işlemi yapılabilir. Bir endpointin kapatılması yeni bağlantıları engeller mevcut bağlantıları kapatmaz.

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.
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 :

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 :
- 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.
- Storage Engine :

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 Servere bir sorgu geldiği zaman Query Processor bölümündeki Buffer Poolda 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 Enginedan talep eder. Storage Engine duruma göre datayı ya buffer ya da disk ten okuyup Query Processora (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.
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 ,