SQL Server Archidoku (Açıklandı)
⚡ Akıllı Özet
SQL Server ArchiMimari, üç temel katmana ayrılmış bir istemci-sunucu modelini takip eder: Ağ iletişimi için Protokol Katmanı, sorgu işleme için İlişkisel Motor ve veri yönetimi ve erişimi için Depolama Motoru.

MS SQL Server, istemci-sunucu mimarisine sahiptir. MS SQL Server süreci, istemci uygulamasının bir istek göndermesiyle başlar. SQL Server, isteği kabul eder, işler ve işlenmiş verilerle yanıt verir. Aşağıda gösterilen tüm mimariyi ayrıntılı olarak ele alalım:
Aşağıdaki şemada gösterildiği gibi, SQL Server'da üç ana bileşen bulunmaktadır. Archidoku:
- Protokol Katmanı
- İlişkisel Motor
- Depolama Motoru
Protokol Katmanı – SNI
SQL Server Protokol Katmanı, diğer adıyla Sunucu Ağ Arayüzü (SNI), üç tür istemci-sunucu mimarisini destekler. Her protokol farklı bir ağ senaryosuna hizmet eder. Sorguların dahili olarak nasıl işlendiğini incelemeden önce bu protokolleri anlamak çok önemlidir.
Paylaşılan Bellek
Sabahın erken saatlerinde geçen bir konuşma senaryosunu ele alalım. Tom ve annesi aynı mantıklı yerde, evlerinde bulunuyorlar. Tom kahve istiyor ve annesi ona doğrudan kahve ikram ediyor. Benzer şekilde, SQL Server, istemci ve sunucu aynı makinede çalıştığında Paylaşımlı Bellek protokolünü sağlar. Her ikisi de herhangi bir ağ yükü olmadan paylaşımlı bellek aracılığıyla iletişim kurar.
Analoji: Tom istemciye, Mom SQL Server'a, Home makineye ve sözlü iletişim ise paylaşımlı bellek protokolüne karşılık gelir.
Yapılandırma notları: In SQL Yönetim StüdyosuYerel bağlantı için "Sunucu Adı" seçeneği ".", "localhost", "127.0.0.1" veya "Makine\Örnek" olabilir.
TCP / IP
Şimdi Tom'un 10 km uzaklıktaki bir kahve dükkanından kahve istediğini düşünün. Tom evde, kahve dükkanı ise işlek bir pazar yerinde. İkisi de hücresel ağ üzerinden iletişim kuruyor. Benzer şekilde, SQL Server da aynı işlevi görüyor. TCP / IP protokolü İstemci ve SQL Server'ın ağ üzerinden birbirine bağlı ayrı makinelerde bulunduğu durumlarda.
Analoji: Tom istemciye, kahve dükkanı SQL Server'a, ev ve pazar yeri uzak konumlara ve hücresel ağ TCP/IP protokolüne karşılık gelir.
Yapılandırma notları: SQL Management Studio'da, TCP/IP bağlantısı için "Sunucu Adı" seçeneği "Sunucunun Makine\Örneği" olmalıdır. SQL Server, TCP/IP bağlantıları için varsayılan olarak 1433 numaralı bağlantı noktasını kullanır.
Adlandırılmış Borular
Son olarak, Tom komşusu Sierra'dan yeşil çay istiyor. Aynı fiziksel konumda bulunuyorlar, komşular ve iç ağ üzerinden iletişim kuruyorlar. Benzer şekilde, SQL Server, istemci ve sunucu Yerel Alan Ağı (LAN) üzerinden bağlandığında Adlandırılmış Boru (Named Pipe) protokolünü sağlar.
Analoji: Tom istemciye, Sierra SQL Server'a, komşuluk LAN'a ve ağ içi bağlantı ise Adlandırılmış Boru protokolüne karşılık gelir.
Yapılandırma notları: Adlandırılmış Borular (Named Pipes) varsayılan olarak devre dışıdır ve SQL Yapılandırma Yöneticisi aracılığıyla etkinleştirilmelidir.
TDS nedir?
İstemci-sunucu mimarisinin üç türü artık netleştiğine göre, TDS'ye bir göz atalım:
- TDS, Tablolu Veri Akışı anlamına gelir.
- Her üç protokol de TDS paketlerini kullanır.
- TDS, ağ paketlerine kapsüllenir ve bu sayede istemci makineden sunucu makineye veri aktarımı mümkün olur.
- TDS ilk olarak Sybase tarafından geliştirilmiştir ve şu anda sahibi olduğu şirkettir. Microsoft.
Aşağıdaki tabloda üç SQL Server bağlantı protokolü karşılaştırılmıştır:
| Özellik | Paylaşılan Bellek | TCP / IP | Adlandırılmış Borular |
|---|---|---|---|
| Ağ Kapsamı | Aynı makine | Uzaktan (WAN/İnternet) | sadece LAN |
| Varsayılan Bağlantı Noktası | - | 1433 | 445 |
| Performans | En hızlı (ağ yükü yok) | İyi (WAN için optimize edilmiş) | İyi (LAN için optimize edilmiş) |
| Varsayılan olarak etkinleştirildi | Evet | Evet | Yok hayır |
| En İyi Kullanım Örneği | Yerel geliştirme ve test etme | Üretim uzaktan erişimi | Güvenilir LAN ortamları |
Protokol Katmanı ağ iletişimini ele aldıktan sonra, SQL Server mimarisinde bir sonraki adım sorgunun kendisini işlemektir. İşte burada İlişkisel Motor devreye girer.
İlişkisel Motor
İlişkisel Motor, Sorgu İşlemcisi olarak da bilinir. Bir sorgunun ne yapması gerektiğini ve en verimli şekilde nasıl yürütülebileceğini belirleyen SQL Server bileşenlerini içerir. Depolama Motorundan veri isteyerek ve döndürülen sonuçları işleyerek kullanıcı sorgularını yürütmekten sorumludur.
Mimari şemada gösterildiği gibi, İlişkisel Motorun üç ana bileşeni vardır:
CMD Ayrıştırıcı
Protokol Katmanından alınan veriler İlişkisel Motora iletilir. CMD Ayrıştırıcısı, sorgu verilerini alan ilk bileşendir. Başlıca görevi, sorguyu sözdizimsel ve anlamsal hatalar açısından kontrol etmek ve ardından bir sorgu ağacı oluşturmaktır.
Söz dizimi kontrolü: Diğer tüm programlama dilleri gibi, SQL Server'ın da önceden tanımlanmış bir dizi anahtar kelimesi ve dilbilgisi kuralı vardır. SELECT, INSERT, UPDATE ve daha birçokları önceden tanımlanmış anahtar kelime listesine aittir. CMD Ayrıştırıcısı, girdinin bu kurallara uygun olup olmadığını doğrular. Kullanıcının girdisi beklenen sözdiziminden saparsa, ayrıştırıcı bir hata döndürür.
Örnek: Bir Rus'un Japon restoranına girip Rusça sipariş verdiğini düşünün. Garson sadece Japonca anlıyor ve siparişi işleme koyamıyor. Benzer şekilde, bir kullanıcı "SELECT" yerine "SELECR" yazarsa, CMD ayrıştırıcısı anahtar kelimeyi tanımadığı için hata döndürür.
Anlamsal kontrol: Bu işlem Normalleştirici tarafından gerçekleştirilir. Normalleştirici, sorgulanan sütun adlarının, tablo adlarının ve diğer nesnelerin şemada gerçekten var olup olmadığını kontrol eder. Eğer varlarsa, Normalleştirici bunları sorguya bağlar. Bu işleme Bağlama da denir. Kullanıcı sorguları bir VIEW içeriyorsa, Normalleştirici bunu dahili olarak saklanan görünüm tanımıyla değiştirir.
Örnek: Koşu SELECT * from USER_ID Eğer USER_ID tablosu veritabanında mevcut değilse, ayrıştırıcı anlamsal kontrol sırasında hata verecektir.
Sorgu Ağacı Oluşturun: Bu adım, bir sorgunun çalıştırılabileceği çeşitli yolları temsil eden farklı yürütme ağaçları oluşturur. Tüm ağaçlar aynı istenen çıktıyı üretir.
Doktoru
Optimizasyon aracı, kullanıcının sorgusu için bir yürütme planı oluşturur. Bu plan, sorgunun nasıl yürütüleceğini belirler. Tüm sorgular optimize edilmez. Optimizasyon, SELECT, INSERT, DELETE ve UPDATE gibi DML (Veri Değiştirme Dili) komutları için geçerlidir. CREATE ve ALTER gibi DDL komutları optimize edilmez, ancak dahili bir forma derlenir.
Sorgu maliyeti, CPU kullanımı, bellek kullanımı ve giriş/çıkış ihtiyaçları gibi faktörlere göre hesaplanır. Optimizasyonun rolü, mutlak en iyi planı değil, en ucuz ve maliyet etkin yürütme planını bulmaktır.
Örnek: Diyelim ki çevrimiçi bir banka hesabı açmak istiyorsunuz. Bir bankanın işlem süresi en fazla 2 gün sürüyor. Ayrıca daha kısa sürede işlem yapabilecek veya yapamayacak 20 bankanın daha listesi var. Bu 20 bankanın hepsini aramak daha hızlı bir seçenek bulmanızı sağlamayabilir ve arama işleminin kendisi de zaman kaybına neden olur. İlk bankayı tercih etmek daha iyi olurdu. Benzer şekilde, SQL Optimizer, sorgu çalışma süresini en aza indirmek için kapsamlı ve sezgisel algoritmalar kullanır.
Optimizasyon algoritması üç aşamada arama yapar:
Aşama 0: Önemsiz Planı Arama
Bu, optimizasyon öncesi aşamadır. Bazı sorgular için yalnızca tek bir pratik plan mevcuttur, buna "önemsiz plan" denir. Daha fazla arama yapmaya gerek yoktur çünkü ek aramalar aynı yürütme planını ek maliyetle bulacaktır.
Aşama 1: İşlem Süreç Planlarının Araştırılması
Bu, hem basit hem de karmaşık planların aranmasını içerir. Basit plan araması, genellikle tablo başına bir dizinle sınırlı olmak üzere, sütun ve dizin verilerinin istatistiksel analizini kullanır. Basit bir plan bulunamazsa, tablo başına birden fazla dizini içeren daha karmaşık bir arama gerçekleştirilir.
2. Aşama: Paralel İşleme ve Optimizasyon
Önceki stratejiler yeterli bir plan üretmezse, Optimizasyon aracı makinenin işlem kapasitesine bağlı olarak paralel işlem olanaklarını araştırır. Paralel işlem mümkün değilse, en iyi yürütme planını bulmak için kalan tüm seçenekleri kullanan son bir optimizasyon aşaması başlar.
Sorgu Yürütücüsü
Sorgu Yürütücüsü, Depolama Motorundaki Erişim Yöntemini çağırır. Yürütme için gerekli veri alma mantığını içeren bir yürütme planı sağlar. Veriler Depolama Motorundan alındıktan sonra, sonuç Protokol Katmanına yayınlanır ve son kullanıcıya gönderilir.
İlişkisel Veritabanı Motoru bir sorgunun nasıl yürütüleceğine karar verdikten sonra, Depolama Motoru fiziksel veri işlemlerini ele alır. Bu katman, verilerin diskte nasıl depolandığını, önbelleğe alındığını ve diskten nasıl alındığını yönetir.
Depolama Motoru
Depolama Motoru, disk veya SAN gibi bir depolama sisteminde verileri depolamaktan ve gerektiğinde geri almaktan sorumludur. Depolama Motoru bileşenlerini incelemeden önce, verilerin fiziksel olarak nasıl depolandığını anlamak önemlidir.
Veri Dosyaları ve Kapsamları
Veri dosyaları, verileri fiziksel olarak her biri 8 KB boyutunda olan veri sayfaları şeklinde depolar. Bu, en küçük depolama birimidir. SQL ServerVeri sayfaları mantıksal olarak bölümlere ayrılır. Hiçbir nesneye doğrudan tek bir sayfa atanmaz; bunun yerine, bakım bölümler aracılığıyla yapılır. Her sayfada, sayfa türü, sayfa numarası, kullanılan alan, boş alan ve sonraki ve önceki sayfalara işaretçiler gibi meta verileri taşıyan bir Sayfa Başlığı (96 bayt) bulunur.
Dosya Türleri
Birincil dosya: Her veritabanı birincil bir dosya içerir. Bu dosya, tablolar, görünümler, tetikleyiciler ve diğer nesnelerle ilgili tüm önemli verileri depolar. Uzantısı genellikle .mdf'dir, ancak herhangi bir uzantı olabilir.
İkinci dosya: Bir veritabanı birden fazla ikincil dosya içerebilir veya içermeyebilir. Bunlar isteğe bağlıdır ve kullanıcıya özgü veriler içerir. Uzantı genellikle .ndf'dir, ancak herhangi bir uzantı olabilir.
Log dosyası: Ayrıca Yazma Öncesi Günlükler olarak da bilinir. Uzantısı .ldf'dir. Günlük dosyaları, işlem yönetimi, istenmeyen durumlardan kurtarma ve henüz onaylanmamış işlemlerin geri alınması için kullanılır.
Depolama Motoru üç ana bileşenden oluşur. Her biri veri erişimini ve bütünlüğünü yönetmede belirli bir rol oynar.
Erişim yöntemi
Erişim Metodu, Sorgu Yürütücüsü ile arasında bir arayüz görevi görür. Buffer Yönetici veya İşlem Günlükleri. Kendisi yürütme yapmaz, ancak sorgunun türünü belirler:
- Eğer sorgu bir ise SELECT ifadesi (DML)Bu, ona aktarılır. Buffer İşlemlerin devamı için yönetici.
- Eğer sorgu bir ise SELECT dışı ifadeler (DDL ve DML)Bu bilgi, İşlem Yöneticisine iletilir. Bu çoğunlukla UPDATE, INSERT ve DELETE ifadelerini içerir.
Buffer müdür
MKS Buffer Yönetici, Plan Önbelleği, veri ayrıştırma ve değiştirilmiş sayfa işlemleri gibi temel işlevleri yönetir.
Önbelleği Planla
Mevcut sorgu planı: MKS Buffer Yönetici, yürütme planının saklanan Plan Önbelleğinde mevcut olup olmadığını kontrol eder. Eğer mevcutsa, önbelleğe alınmış sorgu planı ve ilgili veri önbelleği doğrudan kullanılır.
İlk kez ziyaret edilecek yer tespit planı: İlk sorgu yürütme planı karmaşık ise, Plan Önbelleğinde saklanır. Bu, SQL Server'ın aynı sorguyu bir sonraki sefer aldığında daha hızlı erişilebilirlik sağlar.
Veri Ayrıştırma: Buffer Önbellek ve Veri Depolama
MKS Buffer Yönetici, gerekli verilere erişim sağlar. Verilerin önbellekte olup olmamasına bağlı olarak iki yaklaşım mümkündür:
Buffer Önbellek – Yumuşak Ayrıştırma
MKS Buffer Yönetici verileri şurada arıyor: Buffer Önbellek. Veri mevcutsa, Sorgu Yürütücüsü onu doğrudan kullanır. Bu, performansı artırır çünkü önbellekten veri almak, disk depolama alanından veri almaya kıyasla daha az G/Ç işlemi gerektirir.
Veri Depolama – Zorlu Ayrıştırma
Veriler mevcut değilse Buffer Önbellek, gerekli verilerin disk üzerindeki veri depolama alanında aranmasını sağlar. Veriler daha sonra ileride kullanılmak üzere veri önbelleğine de kaydedilir.
İşlem Yöneticisi
İşlem Yöneticisi, Erişim Yöntemi bir sorgunun SELECT olmayan bir ifade olduğunu belirlediğinde çağrılır. Birkaç alt bileşen aracılığıyla veri tutarlılığını ve kalıcılığını sağlar:
Günlük Yöneticisi
Günlük Yöneticisi şunları yapar: tracSistemde gerçekleştirilen tüm güncellemelerin k'sı, İşlem Günlüklerinde saklanan kayıtlar aracılığıyla kaydedilir. Her günlük girdisi, İşlem Kimliği ve Veri Değişikliği Kaydı ile birlikte bir Günlük Sıra Numarası içerir. Bu mekanizma tracks onaylanmış ve geri alınmış işlemler.
Kilit Yöneticisi
Bir işlem sırasında, depolama alanındaki ilgili veriler kilitli duruma geçer. Kilit Yöneticisi bu süreci yöneterek veri tutarlılığını ve izolasyonunu sağlar. Bu özellikler ACID (Akıllı ve Düzensiz Veri) olarak da bilinir.Atomcanlılık, Tutarlılık, Yalıtım, Dayanıklılık).
Yürütme Süreci
Yürütme süreci şu adımları izler:
- Günlük Kayıt Yöneticisi kayıt işlemine başlar ve Kilit Kayıt Yöneticisi ilgili verileri kilitler.
- Verilerin bir kopyası şurada saklanmaktadır: Buffer Önbellek.
- Güncellenecek verilerin bir kopyası Kayıt Defterinde saklanır. Bufferve tüm olaylar Veri tablosundaki verileri günceller. Buffer.
- Değiştirilmiş verileri depolayan sayfalar şu şekilde bilinir: Kirli Sayfalar.
Kontrol Noktası ve İleriye Yazma Günlüğü
Kontrol noktası işlemi yaklaşık olarak dakikada bir çalışır ve tüm hatalı sayfaları diske yazılmak üzere işaretler. Ancak, sayfa öncelikle log dosyasının veri sayfasına aktarılır. Buffer Günlük kaydı. Bu mekanizma, Yazma Öncesi Günlük Kaydı (Write-Ahead Logging) olarak bilinir. Değiştirilmiş sayfalar, diske yazıldıktan sonra bile önbellekte kalır.
Tembel Writer
SQL Server, yoğun bir yük gözlemlediğinde ve yeni işlemler için tampon belleğe ihtiyaç duyulduğunda, önbellekten kirli sayfaları serbest bırakır. (Tembel) Writer Bu işlem, arabellek havuzundaki sayfaları diske temizlemek için LRU (En Az Kullanılan) algoritmasını kullanır.
SQL Server Bir Sorguyu Baştan Sona Nasıl İşler?
Her katmanı ayrı ayrı anlamak değerlidir, ancak bunların birlikte nasıl çalıştığını görmek, genel tabloyu netleştirir. Bir istemci uygulaması SQL sorgusu gönderdiğinde, aşağıdaki sıra gerçekleşir:
MKS Protokol Katmanı Paylaşımlı Bellek, TCP/IP veya Adlandırılmış Borular aracılığıyla gelen isteği alır ve bir TDS paketine sarar. İlişkisel Motor Ardından devreye girer: CMD Ayrıştırıcısı sözdizimini ve anlamı kontrol eder, Optimize Edici en ucuz yürütme planını oluşturur ve Sorgu Yürütücüsü veri alımına başlar.
Sorgu Yürütücüsü şunu çağırır: Depolama Motorunun SELECT sorgularını yönlendiren Erişim Yöntemi Buffer İşlem Yöneticisine yönelik yönetici ve değişiklik sorguları. Buffer Yönetici Plan Önbelleğini kontrol eder ve Buffer Önce önbelleğe alır (yumuşak ayrıştırma). Veriler önbelleğe alınmamışsa, diskten okuma işlemi gerçekleştirir (sert ayrıştırma). Yazma işlemleri için, İşlem Yöneticisi, ACID uyumluluğunu sağlamak amacıyla Günlük Yöneticisi, Kilit Yöneticisi ve kontrol noktası sürecini koordine eder.
Depolama Motoru istenen verileri döndürdükten sonra, İlişkisel Motor sonuç kümesini biçimlendirir ve Protokol Katmanı aynı TDS protokolü aracılığıyla istemci uygulamasına geri iletir.
SQL Server Bağlantıları İçin Doğru Protokol Nasıl Seçilir?
Doğru protokolün seçimi, istemci ve sunucu arasındaki fiziksel ilişkiye ve performans gereksinimlerine bağlıdır.
Paylaşımlı Belleği Kullanın İstemci uygulaması SQL Server ile aynı makinede çalıştığında bu yöntem en hızlı seçenektir çünkü tüm ağ yükünü ortadan kaldırır. Yerel geliştirme, test ve tek makine dağıtımları için idealdir.
TCP/IP kullanın. İstemci ve sunucunun WAN veya internet üzerinden bağlı farklı makinelerde olduğu durumlarda kullanılır. Bu, üretim ortamlarında en yaygın kullanılan protokoldür. SQL Server varsayılan olarak 1433 numaralı bağlantı noktasında dinleme yapar ve bu protokol TLS aracılığıyla şifrelenmiş bağlantıları destekler.
İsimlendirilmiş Boruları Kullanın İstemci ve sunucu aynı güvenilir LAN üzerinde olduğunda ve iç ağlardaki performans öncelikli olduğunda, Adlandırılmış Borular (Named Pipes) varsayılan olarak devre dışıdır ve SQL Server Yapılandırma Yöneticisi aracılığıyla etkinleştirilmelidir. Modern dağıtımlarda daha az yaygın olsa da, eski intranet uygulamaları için hala kullanışlıdır.
















