SQL Server Mimarisi

SQL Server üç ana bileşenden oluşur; External Protocols, Database Engine ve SQLOS katmanı.


External Protocols : İstemci ile veritabanı sunucusu arasında iletişimi sağlayan katmandır. Virtual Interface Adapter , kendine has bir donanımı olan bir protokoldür ancak 2012 versiyonundan sonra kaldırılmıştır. Shared memory hem istemci hem sunucunun aynı bilgisayar(sunucu) üzerinde bulunması durumunda bağlantı için kullanılan protokoldür.  SSMS’de host ismine mokta(.) ,localhost, 127.0.0.1 yazdığımızda gerçekleşen bağlantı shared memory protokolü ile gerçekleşir. Named pipes istemci ve sunucunun aynı LAN(Intranet) üzerinde olduğunda kullanılan bir bağlantı protokolüdür. TCP/IP de bilindiği gibi WAN ya da internet üzerinden bağlantı için kullanılan protokoldür. Varsayılan olarak 1433 numaralı port kullanılır. Bu üç protokol de iletişim için aşağıda bahsi geçecek olan TDS (tabular data stream) paketlerini kullanır.

Biz bir SQL sorgusunu istemciden sunucuya gönderdiğimizde , sorgu 4KB’lık TDS(Tabular Data Stream) paketlerine çevrilir. Bu 4KB boyut sunucu özelliklerinden değiştirilebilir. Sorguyu TDS paketine dönüştürme işlemi external protocols katmanı tarafından gerçekleştirilir.
TDS paketine dönüşmüş olan sorgu “relational engine (query processor)” isimli yapıya gelir. Bu yapı sorgunun talebinin anlaşılması, çalıştırılarak “storage engine” den verinin çekilmesi ve sonuçların işlenerek istemciye ulaştırılmasından sorumludur. Storage Engine verinin ihtiyaç olduğunda yazıldığı/okunduğu disk yapısıdır.

Burada ilk olarak “command parser” sorguyu syntax yönünden denetler. Daha sonra sorguda talep edilen tablo, view vb. gibi nesneler açısından denetler ve son olarak query tree(sorgu ağacı) oluşturur. SQL bu kontrolden geçerse, “optimizer” isimli yapıya gelir. Bu sorgu en iyi (maliyet, performans) hangi yolla çalışacaksa optimizer bizim için bir execution plan oluşturur. Plan oluştuktan sonra  “executer” isimli yapı Access methods’u çağırarak sorguyu çalıştırır. Executer sorgunun talep ettiği/ilettiği veriyi “storage engine” içerisinde “access methods” isimli yapıya iletir.

Çalışan sorgu içerisinde DDL cümleleri varsa “Access methods” “transaction manager” a yönlendirir, içerisinde sadece DML cümleleri varsa buffer manager’ a gönderir.  “Access methods” sorgunun içeriğine bakar. Sorgu yalnız select cümlesiyse buffer manager’a yönlendirir. Eğer sorgu DDL (create, alter vb.) ya da SELECT olmayan DML (insert, delete, update) ise Transaction manager’a yönlendirir.

SQLOS (SQL Operating System) : İşletim sistemiyle SQL Server’ın konuştuğu, genel anlamda I/O işlemlerinin yürütüldüğü yapıdır.

Yorum yapın