SQL Server Mimarisi | *NeTwork_Assassin (1 Viewer)

NeTwork_убийца

NeTwork_Assasin |
Joined
Sep 15, 2018
Credits
0
Rating - 0%
022414_0702_SQLServerMi2.jpg

1) SQL Server Network Interface (SNI)

View hidden content is available for registered users!
SQL Server Network Interface (SNI) istemci ve sunucu arasında ağ bağlantısı sağlayan bir katmandır.
Direkt olarak konfigürasyon yapılamadığı için istemci ve sunucu üzerindeki ağ protokolünün konfigürasyonu yapılmalıdır. SQL Server 4 protokolü destekler:

Shared memory: Sadece SQL Server ve istemci aynı bilgisayar ise kullanılabilir ve oldukça hızlıdır. Herhangi bir konfigürasyon gerektirmez.

TCP/IP: SQL Server’a bir IP (ya da hostname) ve port ile bağlantı sağlar. Varsayılan port 1433’tür.

Named Pipes: LAN için geliştirilmiştir, TCP 445 portunu kullanır.

Virtual Interface Adapter (VIA): Yüksek performanslı bir protokoldür, ancak hem istemci hem de sunucu için özel bir donanıma ihtiyacı vardır.

SNI’ın görevi, sunucudaki Tabular Data Stream (TDS) endpoint’e istek yapan ve verileri alan güvenli bağlantı oluşturmaktır.

Tabular Data Stream (TDS): İstemci tarafından sunucuya bir istek gittiği zaman SNI bu mesajı TDS paketi haline getirir. Sunucu da TDS paketleri dinleyen endpoint’ler mevcuttur. Her ağ protokolü etkin olmasa bile bir TDS enpoint’e atanmıştır. Aşağıdaki sorgu ile TDS endpoint’leri görebiliriz.


022414_0702_SQLServerMi3.png

Sonuçlarda dikkat edeceğiniz üzere yukarıda bahsetmediğimiz ve ilk sırada yer alan Dedicated Admin Connection (DAC) ise acil durumlarda yani SQL Server üzerinde bir sorun olduğunda ve diğer protokollerden erişim sağlanamadığı zamanlarda erişim sağlar.

2) Database Engine

a) Relational Engine

Sorguların optimizasyonu ve çalıştırılmasından sorumludur. 3 kısımdan oluşur:

Command Parser: Sorguları yazım hatalarına karşı denetler ve sorgu ağacını hazırlar.

Query Optimizer: Execution Planı hazırlar. İlk aşama pre-optimization denilen ve sorgunun karmaşıklığına göre kaç plan çıkaracağına karar verdiği aşamadır. Tek tablodan çekilen basit bir SELECT sorgusu için sadece bir plan vardır ve maliyetsiz (zero cost) olarak tanımlanır.

Karmaşık sorgular için 3 aşamalı bir optimizasyon yapılır:

1) Optimizer nested loop join, diğer adıyla nested iteration olup olmadığına bakar.

Nested Loop Join: Bir tablodaki her satırı (outer table), diğer tablodaki (inner table) her satırla karşılaştırarak join’in sağlayacağı satırlara karar verir. Algoritmayı pseudo-code olarak yazarsak:

for each row R1 in the outer table

for each row R2 in the inner table

if R1 joins with R2

return (R1, R2)

Eğer burada maliyet 0,2’nin altında ise optimizer bu aşamada durur.

2) Bu aşamada bir plan olup olmadığını anlamak için olası optimizasyonlara ve genel desenlere bakar. Eğer maliyet 1’in altında ise optimizer bu aşamada durur.

3) Son olarak ise bütün optimizasyon kurallarına bakar. Eğer Enterprise Edition kullanıyorsanız parallelism ve indexed view’lara da bakar.

Query Executor: Sorguyu çalıştırır.

b) Storage Engine

I/O ile ilgili işlemlerden sorumludur.

Access Methods: I/O isteklerini idare eder.

Buffer Manager: Buffer pool’un yönetiminden sorumludur. Buffer pool veri, log, plan önbelleği gibi önbellek tiplerinden oluşur. Veriler direkt olarak diskten alınmaz, istekler Buffer Manager’a gönderilir. Buffer Manager da sayfayı render edilmeden önce önbelleğe verir.

Transaction Manager: Transaction işlemlerinden sorumludur. SQL Server üzerinde transaction işlemi 2 çeşittir.

1) Implicit transaction: SQL Server otomatik olarak ACID (Atomicity, Consistency, Isolation, Durability) özelliklerini sağlar.
View hidden content is available for registered users!

Atomicity: Bir transaction içerisindeki değişikliklerin hepsi başarıyla tamamlanır ya da tümüyle geri alınır. Örnek olarak, A tablosuna veri eklendikten sonra B tablosundaki bir değer güncellenecek ise, A’ya veri eklenmediyse B’deki veri güncellenmez.

Consistency: Transaction veri bütünlüğünü korumak zorundadır. Eğer bir kolon sadece A veya B değeri almalıysa, C değeri girilemez.

Isolation: Aynı anda çalışan ve henüz tamamlanmayan transaction’ların birbirini etkilemeden çalışabilmesidir.

Durability: Transaction tamamlandığında, sistem hatası olsa bile verinin korunmasıdır.

2) Explicit transaction: Sorgu yazarken BEGIN TRANSACTION ile başlayıp COMMIT TRANSACTION veya ROLLBACK TRANSACTION ile bitirdiğimizdeki transaction işlemidir.

3) SQLOS
View hidden content is available for registered users!

SQLOS, işletim sistemi (Windows) ile SQL Server arasında yer alan bir katmandır. Hafıza yönetimi, kaynak planlaması, I/O tamamlama gibi düşük seviyedeki işlemleri yapar. İsmindeki “OS” kısmı farklı anlamlar andırsa da, Windows yerine geçecek şekilde bir işletim sistemi gibi çalışmamaktadır. SQLOS, bu işlemleri yaparken kendi içerisinde belirli optimizasyonlar yaparak yine Windows sistem servislerini kullanır. sys.dm_os_ ile başlayan DMV’ler (Dynamic Management View) sayesinde SQLOS üzerindeki bütün bilgilere erişmek mümkündür.


Sorgular Nasıl Çalışır?
View hidden content is available for registered users!

Konuyu örneklemek için bir select sorgusunun nasıl çalıştığını inceleyelim.

1) İstemci tarafındaki SNI ile SQL Server üzerindeki SNI bahsettiğimiz protokollerden biriyle bağlantı kurar. Sonra, TDS endpoint ile bağlantı kurulur ve sorgumuz TDS mesajı olarak gönderilir.

2) Command Parser önce Buffer Pool’da gelen sorgu için bir execution plan olup olmadığına bakar. Eğer yoksa bir sorgu ağacı oluşturarak, plan oluşturması için Query Optimizer’a gönderir.

3) Query Optimizer planı oluşturduktan sonra Query Executor’a gönderir.

4) Çalışma zamanında, Query Executor sorgu planına göre ihtiyacı olan datayı Storage Engine içerisindeki Access Methods’a gönderir.

5) Access Methods, Buffer Manager’a ilgili data page’in önbellekte olup olmadığını sorar. Eğer yoksa, diskten çekilir.

6) Access Methods, gelen sonucu istemciye geri göndermesi için Relational Engine’e geri gönderir.

View hidden content is available for registered users!
Alıntıdır. Kaynak : http://www.mshowto.org/sql-server-mimarisi-nedir-nasildir.html
 

Users who are viewing this thread

Top