MS SQL Server je odjemalsko-strežniška arhitektura. Proces MS SQL Server se začne tako, da odjemalska aplikacija pošlje zahtevo. SQL Server sprejme, obdela in odgovori na zahtevo z obdelanimi podatki. Podrobno razpravljajmo o celotni arhitekturi, prikazani spodaj:
Kot prikazuje spodnji diagram, so v arhitekturi SQL Server tri glavne komponente:
- Sloj protokola
- Relacijski motor
- Storage Engine
Podrobno se pogovorimo o vseh treh zgornjih glavnih modulih. V tej vadnici boste izvedeli.
- Sloj protokola - SNI
- Skupni spomin
- TCP / IP
- Imenovane cevi
- Kaj je TDS?
- Relacijski motor
- Razčlenjevalnik CMD
- Optimizator
- Izvajalec poizvedbe
- Storage Engine
- Vrste datotek
- Način dostopa
- Upravitelj medpomnilnikov
- Načrt predpomnilnika
- Razčlenjevanje podatkov: predpomnilnik medpomnilnika in shranjevanje podatkov
- Upravitelj transakcij
Sloj protokola - SNI
MS SQL SERVER PROTOCOL LAYER podpira 3 vrste arhitekture odjemalskega strežnika. Začeli bomo s " Arhitekturo odjemalskega strežnika treh vrst", ki jo podpira MS SQL Server.
Skupni spomin
Ponovno razmislimo o scenariju pogovora zgodaj zjutraj.
MAMA in TOM - Tu sta bila Tom in njegova mama na istem logičnem mestu, torej doma. Tom je lahko prosil za kavo, mama pa jo je postregla vroče.
MS SQL SERVER - Tu strežnik MS SQL ponuja PROTOKOL S SKUPNO SPOMINO . Tu strežnik CLIENT in MS SQL deluje na istem računalniku. Oba lahko komunicirata prek protokola Shared Memory.
Analogija: Omogoča preslikavo entitet v zgornjih dveh scenarijih. Toma lahko zlahka preslikamo na odjemalca, mamo na strežnik SQL, dom na stroj in ustno komunikacijo na protokol skupne pomnilnika.
Iz mize za konfiguracijo in namestitev:
Za povezavo z lokalno DB - v programu SQL Management Studio bi lahko bila možnost "Ime strežnika"
"."
"lokalni gostitelj"
"127.0.0.1"
"Stroj \ primerek"
TCP / IP
Zdaj pa razmislite zvečer, Tom je v zabavi. Želi si kavo, naročeno v znani kavarni. Kavarna se nahaja 10 km stran od njegovega doma.
Tu sta Tom in Starbuck na različnih fizičnih lokacijah. Toma doma in Starbucksa na zasedeni tržnici. Komunicirajo prek mobilnega omrežja. Podobno tudi MS SQL SERVER omogoča interakcijo prek protokola TCP / IP, pri čemer sta CLIENT in MS SQL Server oddaljena drug od drugega in nameščena na ločeni napravi.
Analogija: Omogoča preslikavo entitet v zgornjih dveh scenarijih. Toma lahko zlahka preslikamo na odjemalca, Starbuck na strežnik SQL, dom / tržnico na oddaljeno lokacijo in na koncu celično omrežje na protokol TCP / IP.
Opombe iz mize za konfiguracijo / namestitev:
- V SQL Management Studio - Za povezavo prek TCP \ IP mora možnost "Ime strežnika" biti "Machine \ Instance of the server".
- Strežnik SQL uporablja vrata 1433 v TCP / IP.
Imenovane cevi
Končno ponoči si je Tom zaželel svetlo zelenega čaja, ki ga je njena soseda Sierra zelo dobro pripravila.
Tu sta Tom in njegov sosed Sierra na isti fizični lokaciji, saj sta si soseda. Komunicirajo prek omrežja Intra. Podobno tudi MS SQL SERVER omogoča interakcijo prek protokola Named Pipe . Tu sta CLIENT in MS SQL SERVER povezana prek LAN-a .
Analogija: Omogoča preslikavo entitet v zgornjih dveh scenarijih. Toma lahko zlahka preslikamo na odjemalca, Sierro na strežnik SQL, soseda na LAN in na koncu Intra omrežje na Named Pipe Protocol.
Opombe iz mize za konfiguracijo / namestitev:
- Za povezavo preko poimenovane cevi. Ta možnost je privzeto onemogočena in jo mora omogočiti upravitelj konfiguracije SQL.
Kaj je TDS?
Zdaj, ko vemo, da obstajajo tri vrste arhitekture odjemalca in strežnika, si lahko ogledamo TDS:
- TDS pomeni Tabelarni podatkovni tok.
- Vsi 3 protokoli uporabljajo pakete TDS. TDS je vključen v omrežne pakete. To omogoča prenos podatkov z odjemalskega računalnika na strežniški stroj.
- TDS je prvič razvil Sybase, zdaj pa je v lasti Microsofta
Relacijski motor
Relacijski stroj je znan tudi kot procesor poizvedb. Vsebuje komponente SQL Server, ki določajo, kaj natančno poizvedba mora narediti in kako jo je mogoče najbolje izvesti. Odgovoren je za izvajanje uporabniških poizvedb tako, da od pomnilniškega mehanizma zahteva podatke in obdeluje vrnjene rezultate.
Kot je prikazano v arhitekturnem diagramu, obstajajo 3 glavne komponente relacijskega motorja. Podrobno preučimo komponente:
Razčlenjevalnik CMD
Podatki, ki so bili enkrat prejeti iz protokolarne plasti, se nato posredujejo v relacijski mehanizem. »Razčlenjevalnik CMD« je prva komponenta relacijskega mehanizma, ki prejme podatke o poizvedbah. Glavna naloga CMD Parserja je preverjanje poizvedbe glede sintaksične in semantične napake. Končno ustvari drevo poizvedb . Pogovorimo se podrobno.
Sintaksično preverjanje:
- Kot vsak drugi programski jezik ima tudi MS SQL vnaprej določen nabor ključnih besed. Tudi SQL Server ima svojo slovnico, ki jo SQL strežnik razume.
- SELECT, INSERT, UPDATE in mnogi drugi spadajo na vnaprej določene sezname ključnih besed MS SQL.
- CMD Parser opravi skladenjsko preverjanje. Če uporabniški vnos ne upošteva teh jezikovnih sintaks ali slovničnih pravil, vrne napako.
Primer: Recimo, da je Rus odšel v japonsko restavracijo. Naroči hitro hrano v ruskem jeziku. Žal natakar razume samo japonščino. Kakšen bi bil najbolj očiten rezultat?
Odgovor je - natakar naročila ne more nadalje obdelati.
V slovnici ali jeziku, ki ga sprejema strežnik SQL, ne sme biti odstopanj. Če obstajajo, jih strežnik SQL ne more obdelati in zato vrne sporočilo o napaki.
O poizvedbah MS SQL bomo izvedeli več v prihodnjih vajah. Vendar upoštevajte spodaj najosnovnejšo sintakso poizvedbe kot
SELECT * from;
Zdaj, da dobimo zaznavanje skladenj, recimo, če uporabnik zažene osnovno poizvedbo, kot je prikazano spodaj:
SELECR * from
Upoštevajte, da je uporabnik namesto 'SELECT' vtipkal "SELECR."
Rezultat: Razčlenjevalnik CMD bo razčlenil to izjavo in poslal sporočilo o napaki. Ker "SELECR" ne sledi vnaprej določenemu imenu in slovnici ključnih besed. Tu je CMD Parser pričakoval "SELECT".
Semantični pregled:
- To izvede Normalizer .
- V svoji najpreprostejši obliki preveri, ali v stolpcu obstaja ime stolpca in ime tabele, za katero se zahteva poizvedba. In če obstaja, ga povežite s poizvedbo. To je znano tudi kot Vezava .
- Kompleksnost se poveča, ko uporabniške poizvedbe vsebujejo VIEW. Normalizer izvede zamenjavo z interno shranjeno definicijo pogleda in še veliko več.
Razumimo to s pomočjo spodnjega primera -
SELECT * from USER_ID
Rezultat: Razčlenjevalnik CMD bo to izjavo razčlenil za semantično preverjanje. Razčlenjevalnik bo poslal sporočilo o napaki, saj Normalizer ne bo našel zahtevane tabele (USER_ID), ker ne obstaja.
Ustvari drevo poizvedb:
- Ta korak generira različno drevo izvedbe, v katerem je mogoče zagnati poizvedbo.
- Upoštevajte, da imajo vsa različna drevesa enak želeni izhod.
Optimizator
Delo optimizatorja je ustvariti izvedbeni načrt za uporabnikovo poizvedbo. To je načrt, ki bo določil, kako se bo izvedla uporabniška poizvedba.
Upoštevajte, da niso vsa poizvedbe optimizirane. Optimizacija se izvede za ukaze DML (jezik za spreminjanje podatkov), kot so SELECT, INSERT, DELETE in UPDATE. Takšne poizvedbe so najprej označene, nato poslane v optimizator. Ukazi DDL, kot sta CREATE in ALTER, niso optimizirani, temveč so zbrani v notranji obrazec. Stroški poizvedbe se izračunajo na podlagi dejavnikov, kot so poraba procesorja, poraba pomnilnika in vhodno / izhodne potrebe.
Vloga optimizatorja je najti najcenejši in ne najboljši, stroškovno učinkovit načrt izvedbe.
Preden skočimo v bolj tehnične podrobnosti Optimizerja, si oglejte spodnji primer iz resničnega življenja:
Primer:
Recimo, da želite odpreti spletni bančni račun. Že poznate eno banko, ki potrebuje največ 2 dni, da odpre račun. Imate pa tudi seznam 20 drugih bank, ki lahko traja manj kot 2 dni. S temi bankami lahko začnete sodelovati, da določite, katerim bankam je treba vzeti manj kot dva dni. Zdaj morda ne boste našli banke, ki traja manj kot 2 dneva, zaradi same iskalne dejavnosti pa je izgubljen dodaten čas. Bolje bi bilo odpreti račun pri prvi banki sami.
Zaključek: Pomembneje je pametno izbirati. Natančneje izberite, katera možnost je najboljša in ne najcenejša.
Podobno MS SQL Optimizer deluje na vgrajenih izčrpnih / hevrističnih algoritmih. Cilj je zmanjšati čas izvajanja poizvedbe. Vsi algoritmi Optimizerja so last Microsofta in skrivnost. Čeprav , v nadaljevanju so koraki na ravni visoke MS Optimizer SQL izvajajo. Iskanja po optimizaciji potekajo v treh fazah, kot je prikazano na spodnjem diagramu:
Faza 0: Iskanje trivialnega načrta:
- To je znano tudi kot stopnja predhodne optimizacije .
- V nekaterih primerih lahko obstaja samo en praktičen, izvedljiv načrt, znan kot trivialni načrt. Izdelave optimiziranega načrta ni treba. Razlog je, da bi iskanje več povzročilo iskanje istega načrta izvedbe. Tudi to z dodatnimi stroški iskanja optimiziranega načrta, ki sploh niso bili potrebni.
- Če ne Trivial načrta ugotovljeno, nato pa 1. st začne faza.
1. faza: iskanje načrtov za obdelavo transakcij
- To vključuje iskanje preprostega in zapletenega načrta .
- Preprosto iskanje po načrtu: Pretekli podatki stolpca in indeksa, vključeni v poizvedbo, bodo uporabljeni za statistično analizo. Običajno je sestavljen, vendar ni omejen na en kazalec na tabelo.
- Če preprostega načrta ne najdemo, se išče bolj zapleten načrt. Vključuje več indeksov na tabelo.
2. faza: vzporedna obdelava in optimizacija.
- Če nobena od zgornjih strategij ne deluje, Optimizer išče možnosti vzporedne obdelave. To je odvisno od zmogljivosti in konfiguracije naprave.
- Če to še vedno ni mogoče, se začne zadnja faza optimizacije. Končni cilj optimizacije je zdaj najti vse druge možne možnosti za izvedbo poizvedbe na najboljši način. Končna faza optimizacije Algoritmi so Microsoftova lastnost.
Izvajalec poizvedbe
Poizvedba pokliče način dostopa. Zagotavlja izvedbeni načrt za logiko pridobivanja podatkov, potrebno za izvedbo. Ko so podatki prejeti iz Storage Engine, se rezultat objavi v sloju Protocol. Na koncu se podatki pošljejo končnemu uporabniku.
Storage Engine
Delo Storage Engine je shranjevanje podatkov v sistem za shranjevanje, kot sta Disk ali SAN, in po potrebi pridobivanje podatkov. Preden se poglobimo v Storage engine, si oglejmo, kako se podatki shranjujejo v zbirki podatkov in vrsta datotek, ki so na voljo.
Podatkovna datoteka in obseg:
Podatkovna datoteka fizično shranjuje podatke v obliki podatkovnih strani, pri čemer ima vsaka podatkovna stran velikost 8 KB, kar je najmanjša enota za shranjevanje v strežniku SQL Server. Te podatkovne strani so logično razvrščene tako, da tvorijo ekstenzije. Nobenemu predmetu ni dodeljena stran v strežniku SQL Server.
Vzdrževanje predmeta poteka prek ekstenzij. Stran ima razdelek z naslovom Glava strani z velikostjo 96 bajtov, ki vsebuje podatke o metapodatkih o strani, kot so vrsta strani, številka strani, velikost uporabljenega prostora, velikost prostega prostora in kazalec na naslednjo stran in prejšnjo stran. itd.
Vrste datotek
- Primarna datoteka
- Vsaka baza vsebuje eno primarno datoteko.
- Ta shranjuje vse pomembne podatke, povezane s tabelami, pogledi, sprožilci itd.
- Podaljšanje je. mdf običajno, vendar je lahko katere koli razširitve.
- Sekundarna datoteka
- Baza podatkov lahko vsebuje ali ne vsebuje več sekundarnih datotek.
- To ni obvezno in vsebuje uporabniško specifične podatke.
- Podaljšanje je. ndf običajno, vendar je lahko katere koli razširitve.
- Dnevnik
- Znani tudi kot dnevniki za zapisovanje naprej.
- Podaljšanje je. ldf
- Uporablja se za upravljanje transakcij.
- To se uporablja za obnovitev od neželenih primerov. Opravite pomembno nalogo vrnitve do nezavezanih transakcij.
Storage Engine ima 3 komponente; poglejmo jih podrobno.
Način dostopa
Deluje kot vmesnik med izvršiteljem poizvedbe in upraviteljem medpomnilnikov / dnevniki transakcij.
Sama metoda dostopa ne izvede nobene izvedbe.
Najprej je treba ugotoviti, ali je poizvedba:
- Izberite izjavo (DDL)
- Izjava o neizbrani izbiri (DDL in DML)
Odvisno od rezultata metoda dostopa izvede naslednje korake:
- Če je poizvedba izjava DDL , SELECT, se poizvedba posreduje upravitelju vmesnikov za nadaljnjo obdelavo.
- In če poizveduje, če stavek DDL, NON-SELECT , poizvedba posreduje Transaction Manager. To večinoma vključuje stavek UPDATE.
Upravitelj medpomnilnikov
Upravitelj medpomnilnikov upravlja osnovne funkcije spodnjih modulov:
- Načrt predpomnilnika
- Razčlenjevanje podatkov: predpomnilnik medpomnilnika in shranjevanje podatkov
- Umazana stran
V tem razdelku se bomo naučili predpomnilnika načrtov, medpomnilnika in podatkov. Zajeli bomo Umazane strani v rubriki Transakcije.
Načrt predpomnilnika
- Obstoječi načrt poizvedb: Upravitelj medpomnilnika preveri, ali je načrt izvajanja v shranjenem predpomnilniku načrta. Če je odgovor pritrdilen, se uporabi predpomnilnik načrta poizvedbe in z njim povezan predpomnilnik podatkov.
- Načrt prvega predpomnilnika: od kod izvira obstoječi predpomnilnik načrta?
Če se prvič izvaja načrt poizvedbe in je zapleten, ga je smiselno shraniti v predpomnilnik Plane. To bo zagotovilo hitrejšo razpoložljivost, ko bo naslednjič strežnik SQL prejel isto poizvedbo. Torej ni nič drugega kot sama poizvedba, katero izvajanje načrta se shrani, če se izvaja prvič.
Razčlenjevanje podatkov: predpomnilnik medpomnilnika in shranjevanje podatkov
Upravitelj medpomnilnikov omogoča dostop do zahtevanih podatkov. Spodaj sta možna dva pristopa, odvisno od tega, ali obstajajo podatki v predpomnilniku:
Predpomnilnik medpomnilnika - mehko razčlenjevanje:
Upravitelj medpomnilnikov išče podatke v vmesniku v predpomnilniku podatkov. Če so prisotni, potem te podatke uporablja izvajalec poizvedb. To izboljša zmogljivost, saj se število operacij V / I zmanjša pri pridobivanju podatkov iz predpomnilnika v primerjavi s pridobivanjem podatkov iz shrambe podatkov.
Shranjevanje podatkov - težko razčlenjevanje:
Če v upravitelju medpomnilnikov ni podatkov, kot je zahtevano, se podatki iščejo v shrambi podatkov. Če podatke shrani tudi v predpomnilnik za prihodnjo uporabo.
Umazana stran
Shranjena je kot logika obdelave Transaction Manager. Podrobno se bomo naučili v razdelku Transaction Manager.
Upravitelj transakcij
Transaction Manager se prikliče, ko metoda dostopa ugotovi, da je Query izjava Non-Select.
Log Manager
- Log Manager vodi evidenco vseh posodobitev, opravljenih v sistemu, prek dnevnikov v dnevnikih transakcij.
- Dnevniki imajo zaporedno številko dnevnikov z ID-jem transakcije in zapisom o spremembi podatkov .
- To se uporablja za evidentiranje izvršenih transakcij in povratnih transakcij .
Lock Manager
- Med transakcijo so povezani podatki v shrambi podatkov v stanju zaklepanja. Ta postopek vodi Lock Manager.
- Ta postopek zagotavlja doslednost in izolacijo podatkov . Znane tudi kot lastnosti kisline.
Izvršilni postopek
- Log Manager zažene beleženje in Lock Manager zaklene povezane podatke.
- Kopija podatkov se hrani v predpomnilniku medpomnilnika.
- Kopija podatkov, ki naj bi se posodabljali, se hrani v medpomnilniku dnevnika, vsi dogodki pa posodabljajo podatke v medpomnilniku podatkov.
- Strani, ki shranjujejo podatke, so znane tudi kot Umazane strani .
- Dnevnik kontrolne točke in pisanja naprej: ta postopek se zažene in označi vso stran od umazanih strani do diska, vendar stran ostane v predpomnilniku. Frekvenca je približno 1 zagon na minuto, vendar se stran najprej potisne na stran s podatki datoteke dnevnika iz dnevnika vmesnika. To je znano kot zapisovanje vnaprej.
- Lazy Writer: Umazana stran lahko ostane v spominu. Ko strežnik SQL opazi veliko obremenitev in je za novo transakcijo potreben medpomnilnik, sprosti umazane strani iz predpomnilnika. Deluje na LRU - najmanj nedavno uporabljen algoritem za čiščenje strani iz vmesnega področja na disk.
Povzetek:
- Obstajajo tri vrste arhitekture odjemalskega strežnika: 1) skupni pomnilnik 2) TCP / IP 3) poimenovane cevi
- TDS, ki ga je razvil Sybase in je zdaj v lasti Microsofta, je paket, ki je vključen v omrežne pakete za prenos podatkov iz odjemalskega v strežniški stroj.
- Relacijski motor vsebuje tri glavne komponente:
Razčlenjevalnik CMD: odgovoren je za sintaksične in semantične napake ter na koncu ustvari drevo poizvedb.
Optimizer: Vloga optimizatorja je najti najcenejši, ne najboljši in stroškovno učinkovit načrt izvedbe.
Izvajalec poizvedbe: Izvajalec poizvedbe pokliče način dostopa in zagotavlja načrt izvedbe za logiko pridobivanja podatkov, potrebno za izvedbo.
- Obstajajo tri vrste datotek: Primarna datoteka, Sekundarna datoteka in Dnevnik.
- Storage Engine: vsebuje naslednje pomembne komponente
Način dostopa: Ta komponenta Določi, ali je poizvedba Izjava ali Neizbira. V skladu s tem pokliče medpomnilnik in upravitelja prenosov.
Upravitelj medpomnilnikov: Upravitelj vmesnikov upravlja osnovne funkcije za predpomnilnik načrtov, razčlenjevanje podatkov in umazano stran.
Transaction Manager: Upravlja transakcije, ki niso izbrane, s pomočjo upraviteljev dnevnikov in zaklepanja. Olajša tudi pomembno izvajanje zapisovanja zapisov vnaprej in pisanja lenob.