SQL Server-in Arxitekturası

SQL Server-in Arxitekturası

Yeni məqaləmizdə xoş gördük.

Bu məqaləmizdə SQL Serverin Arxitekturası haqqında məlumat verəcəm.

SQL Server əsasən üç ana hissədən SQL Server Network Interface (SNI), Database Engine ve SQLOS ibərətdir. Database Engine isə Relational Engine ve Storage Engine olmaqla iki hissəyə ayrılır.

8fbdcd65-0063-4a81-9868-b59eb99e5499

1. SQL Server Network Interface (SNI)

SQL Server Network Interface (SNİ) klient və server arasında şəbəkə əlaqəsini təmin edən bir təbəqədir. SQL Serveri yeni quraşdıran zaman şəbəkə pratokolu deaktiv olduğuna görə klient və server arasında şəbəkə əlaqəsi qurumaq üçün konfiqurasiya edilməlidir. SQL Serverdə 4 protokol dəstəklənir bunlar aşağıdakılardır.

Shared memory:

SQL Server və klient eyni kompüterdədirsə istifadə etmək mümkündür çox sürətlidir. Hər hansı konfiqurasiyaya ehtiyac yoxdur. SQL Server quraşdırılan zaman üzərində aktiv formada olur.

TCP/IP:

SQL Server-ə bir İP və Port ilə qoşulmanı təmin edir. SQL Serverin susmaya görə portu 1433-dür.SQL Server-ə internet üzərindən qoşulmaq üçün istifadə olunan tək protokoldur. SQL Serverin internetə birbaşa çıxışı çox böyük riskdir və bir firewall qaydaları ilə idarə etmək lazımdır.

Named Pipes:

Lokal şəbəkə üçün yaradılıb, TCP 445 portunu istifadə edir. Named Pipes protokolu, TCP/IP mövcud olmadıqda və ya TCP/IP altındakı serverləri adlandırmağa icazə verən Domain Name Service (DNS) olmadığı hallarda çox faydalı ola bilər.İstifadəsi günü-gündən azalmaqdadır.

Virtual Interface Adapter (VIA):

Yüksək performanslı bir protokoldur, ancaq həm klient, həm də server üçün xüsusi avadanlığa ehtiyacı vardır.

SQL Server Network Interface (SNİ) vəzifəsi, serverdəki Tabular Data Stream (TDS) endpointə istək göndərən və məlumatları almaq üçün etibarlı əlaqə yaratmaqdır.

Tabular Data Stream (TDS):

Klient tərəfdən servərə bir istək gedən zaman SNİ bunu TDS paketi halına gətirir. Serverdə TDS paketlərini dinləyən endpoint-lər mövcuddur. Endpointlərin siyahısını görmək üçün aşağıdakı sorğudan istifadə edə bilərsiniz.

 

Select * from sys.endpoints

 

2. Database Engine

1)    Relation Engine

Sorğuların optimizasiya olunmasına və işlədilməsinə cavabdehdir. Üç hissədən ibarətdir.

Command Parser:

Sorğuların yazılış səhvlərinə nəzarət edir və sorğu ağacını hazırlayır.

Query Optimizer:

Execution Planı hazırlayır. Sorğunun mürəkkəbliyinə görə neçə plan hazırlayacağını qərar verdiyi bölmədir.

Query Executor:

Sorğuların icrasını həyata keçirir.

2)    Storage Engine

I/O ilə əlaqəli əməliyyatlara cavabdehdir.

Access Methods:

I/O istəklərini idarə edir.

Buffer Manager:

Buffer pool un idarə olunmasına cavabdehdir. Buffer pool məlumat, log, plan keşi kimi keş tiplərindən ibarətdir. Məlumatlar birbaşa olaraq diskdən alınmaz, istəklər Buffer Manager’a göndərilir. Buffer Manager da səhifəni göstərmədən əvvəl keşə göndərir.

Transaction Manager:

Transaction əməliyyatlarından cavabdehdir. SQL Server üzərində transaction əməliyyatı iki növdür.

1)      Implicit transaction:

SQL Server-in avtomatik olaraq ACID (Atomicity, Consistency, Isolation, Durability) xüsusiyyətlərini təmin

Atomicity:

Bir transaction içərisindəki əməliyyatların hamısı ya müvəffəqiyyətlə tamamlanır ya da tamamilə geri alınır. Nümunə olaraq, A cədvəlinə məlumatların əlavə olunduqdan sonra B cədvəlindəki bir dəyər yenilənəcək isə, A-ya məlumatlar əlavə olunmadısa B-dəki məlumatlar yenilənə bilməz.

Consistency:

Transaction məlumat bütövlüyünü qorumaq məcburiyyətindədir. Əgər bir kolon yalnız A və ya B dəyəri almalıysa, C dəyəri girmək olmaz.

Isolation:

Eyni anda icra edilən və hələ tamamlanmayan transaction-ların bir-birini təsir etmədən icra edilir.

Durability:

Transaction tamamlandığında, sistem səhvi olsa belə məlumatın qorunmasıdır.

2)      Explicit transaction:

Sorğu yazarkən BEGIN TRANSACTION ilə başlayıb COMMIT TRANSACTION və ya ROLLBACK TRANSACTION ilə bitirdiyimiz transaction əməliyyatlarıdır.

 

3. SQLOS

SQLOS, əməliyyat sistemi (Windows) ilə SQL Server arasında yer alan bir təbəqədir. Yaddaşın idarə olunması, resurs planlaması, I/O tamamlama kimi aşağı səviyyədəki əməliyyatları yerinə yetirir. Adındakı “OS” qisimi fərqli mənalar xatırlatsa da, Windows yerinə keçəcək şəkildə bir əməliyyat sistemi kimi işləmir. SQLOS, bu əməliyyatları edərkən öz içərisində müəyyən optimallaşdırmalar edərək yenə Windows əməliyyat sisteminin servislərindən istifadə edir. sys.dm_os_ ilə başlayan DMV (Dynamic Management View) sayəsində SQLOS üzərindəki bütün məlumatları almaq mümkündür.

 

Sorğular Necə İcra edilir?

 

 Məsələ üçün bir select sorğusunun necə çalışdığını təhlil edək.

 

1. Klient tərəfindən SNI ilə SQL Server üzərindəki SNI bəhs etdiyimiz protokollardan biri ilə əlaqə qurur. Sonra, TDS endpoint ilə əlaqə qurulur və sorğu-muz TDS mesajı olaraq göndərilir.

2. Command Parser əvvəl Buffer Poolda gələn sorğu üçün bir execution plan olub olmadığına baxır. Əgər yoxdursa bir sorğu ağacı yaradaraq, plan yaratması üçün Query Optimizera göndərir.

3. Query Optimizer planı yaratdıqdan sonra Query Executora göndərir.

4. İş vaxtında, Query Executor sorğu planına əsasən ehtiyacı olan datanı Storage Engine içərisindəki Access Methodsa göndərir.

5. Access Methods, Buffer Manager bağlı data page-in keşdə olub olmadığını yoxlayır əgər yoxdursa, data diskdən alınır.

6. Access Methods-a gələn nəticə klientə geri göndərməsi üçün Relational Engine geri göndərir.

 

Hörmətlə,

Elvin Yusifli

Səs: +10. Bəyənilsin Zəifdir

Müəllif: Elvin Yusifli

Şərh yazın