SQL Server Architektuur (selgitatud)
โก Nutikas kokkuvรตte
SQL Server ArchiStruktuur jรคrgib klient-serveri mudelit, mis on jagatud kolmeks pรตhikihiks: protokollikiht vรตrgukommunikatsiooniks, relatsioonimootor pรคringute tรถรถtlemiseks ja salvestusmootor andmete haldamiseks ja otsimiseks.

MS SQL Server on klient-serveri arhitektuur. MS SQL Serveri protsess algab kliendirakenduse poolt pรคringu saatmisega. SQL Server vรตtab pรคringu vastu, tรถรถtleb seda ja vastab sellele tรถรถdeldud andmetega. Arutagem allpool รผksikasjalikumalt kogu arhitektuuri:
Nagu allolev diagramm nรคitab, on SQL Serveris kolm peamist komponenti ArchiStruktuur:
- Protokollikiht
- Suhteline mootor
- Sรคilitusmootor
Protokollikiht โ SNI
SQL Serveri protokollikiht, tuntud ka kui serveri vรตrguliides (SNI), toetab kolme tรผรผpi klient-serveri arhitektuuri. Iga protokoll teenindab erinevat vรตrgustsenaariumi. Enne pรคringute sisemise tรถรถtlemise uurimist on oluline nende protokollide mรตistmine.
Jagatud mรคlu
Kujutage ette varahommikuse vestluse stsenaariumi. Tom ja tema ema on samas loogilises kohas, oma kodus. Tom kรผsib kohvi ja ema serveerib selle otse. Samamoodi pakub SQL Server jagatud mรคlu protokolli, kui klient ja server tรถรถtavad samal masinal. Mรตlemad suhtlevad jagatud mรคlu kaudu ilma vรตrgu lisakuludeta.
Analoogia: Tom seob end kliendiga, ema SQL serveriga, kodu masinaga ja verbaalne suhtlus jagatud mรคlu protokolliga.
Konfiguratsiooni mรคrkmed: In SQL-i haldusstuudio, vรตib kohaliku รผhenduse โServeri nimiโ olla โ.โ, โlocalhostโ, โ127.0.0.1โ vรตi โMasin\eksemplarโ.
TCP / IP
Kujutage nรผรผd ette, et Tom soovib kohvi poest, mis asub 10 km kaugusel. Tom on kodus ja kohvik asub tiheda liiklusega turul. Nad suhtlevad mobiilsidevรตrgu kaudu. Samamoodi pakub SQL Server TCP / IP-protokoll kui klient ja SQL Server asuvad vรตrgu kaudu รผhendatud eraldi masinatel.
Analoogia: Tom seob end kliendiga, kohvik SQL Serveriga, kodu ja turg kaugemate asukohtadega ning mobiilsidevรตrk TCP/IP protokolliga.
Konfiguratsiooni mรคrkmed: SQL Management Studios peab TCP/IP-รผhenduse serveri nimeks olema โServeri masin\eksemplarโ. SQL Server kasutab TCP/IP-รผhenduste jaoks vaikimisi porti 1433.
Nimeks Torud
Lรตpuks tahab Tom oma naabrilt Sierralt rohelist teed. Nad on samas fรผรผsilises asukohas, naabrid ja suhtlevad vรตrgusiseselt. Samamoodi pakub SQL Server Named Pipe protokolli, kui klient ja server on รผhendatud kohtvรตrgu (LAN) kaudu.
Analoogia: Tom seob end kliendiga, Sierra SQL Serveriga, naabrid LAN-iga ja vรตrgusisene vรตrk Named Pipe protokolliga.
Konfiguratsiooni mรคrkmed: Named Pipes on vaikimisi keelatud ja see tuleb lubada SQL Configuration Manageri kaudu.
Mis on TDS?
Nรผรผd, kui kolm kliendi-serveri arhitektuuri tรผรผpi on selged, heidame pilgu TDS-ile:
- TDS tรคhistab tabeliandmete voogu.
- Kรตik kolm protokolli kasutavad TDS-pakette.
- TDS on kapseldatud vรตrgupakettidesse, vรตimaldades andmeedastust kliendimasinast servermasinasse.
- TDS-i tรถรถtas esmakordselt vรคlja Sybase ja see kuulub nรผรผd Sybase'ile. Microsoft.
Jรคrgmises tabelis vรตrreldakse kolme SQL Serveri รผhendusprotokolli:
| tunnusjoon | Jagatud mรคlu | TCP / IP | Nimeks Torud |
|---|---|---|---|
| Vรตrgu ulatus | Sama masin | Kaugjuhtimine (WAN/Internet) | Ainult LAN-รผhendus |
| Vaikimisi port | N / A | 1433 | 445 |
| jรตudlus | Kiireim (ilma vรตrguรผlekoormuseta) | Hea (WAN-i jaoks optimeeritud) | Hea (kohaliku vรตrgu jaoks optimeeritud) |
| Vaikimisi lubatud | Jah | Jah | Ei |
| Parim kasutuskohver | Kohalik arendus ja testimine | Tootmiskeskkonna kaugjuurdepรครคs | Usaldusvรครคrsed kohtvรตrgu keskkonnad |
Kuna vรตrgusuhtlust haldab protokollikiht, on SQL Serveri arhitektuuri jรคrgmine samm pรคringu enda tรถรถtlemine. Siin vรตtab ohjad รผle relatsioonimootor.
Suhteline mootor
Relatsioonimootorit tuntakse ka pรคringuprotsessorina. See sisaldab SQL Serveri komponente, mis mรครคravad, mida pรคring peab tegema ja kuidas seda kรตige tรตhusamalt tรคita. See vastutab kasutajapรคringute tรคitmise eest, taotledes andmeid salvestusmootorilt ja tรถรถdeldes tagastatud tulemusi.
Nagu arhitektuuridiagrammil kujutatud, on relatsioonimootoril kolm peamist komponenti:
CMD parser
Protokollikihilt vastuvรตetud andmed edastatakse relatsioonimootorile. CMD parser on esimene komponent, mis pรคringuandmed vastu vรตtab. Selle peamine รผlesanne on kontrollida pรคringut sรผntaktiliste ja semantiliste vigade suhtes ning seejรคrel genereerida pรคringupuu.
Sรผntaktiline kontroll: Nagu igal teisel programmeerimiskeelel, on ka SQL Serveril eelnevalt mรครคratletud mรคrksรตnade ja grammatikareeglite komplekt. SELECT, INSERT, UPDATE ja paljud teised kuuluvad eelnevalt mรครคratletud mรคrksรตnade loendisse. CMD parser kontrollib, kas sisend jรคrgib neid reegleid. Kui kasutaja sisend erineb oodatud sรผntaksist, tagastab parser vea.
Nรคide: Kujutage ette venelast, kes astub Jaapani restorani ja tellib vene keeles. Kelner saab aru ainult jaapani keelest ja ei saa tellimust tรถรถdelda. Samamoodi, kui kasutaja tippib โSELECTโ asemel โSELECRโ, tagastab CMD parser vea, kuna see ei tunne mรคrksรตna รคra.
Semantiline kontroll: Seda teeb normaliseerija. See kontrollib, kas pรคringu all olevad veerunimed, tabelinimed ja muud objektid on skeemis tegelikult olemas. Kui need on olemas, seob normaliseerija need pรคringuga. Seda protsessi nimetatakse ka sidumiseks. Kui kasutajapรคringud sisaldavad VIEW'i, asendab normaliseerija selle sisemiselt salvestatud vaate definitsiooniga.
Nรคide: Running SELECT * from USER_ID pรตhjustaks parseri semantilise kontrolli kรคigus vea, kui tabelit USER_ID andmebaasis ei eksisteeri.
Loo pรคringupuu: See samm genereerib erinevad tรคitmispuud, mis esindavad pรคringu kรคivitamise erinevaid viise. Kรตik puud annavad sama soovitud vรคljundi.
Optimeerija
Optimeerija loob kasutaja pรคringu jaoks tรคitmisplaani. See plaan mรครคrab, kuidas pรคringut tรคidetakse. Kรตik pรคringud ei ole optimeeritud. Optimeerimine kehtib DML-i (andmete muutmise keele) kรคskude kohta, nรคiteks SELECT, INSERT, DELETE ja UPDATE. DDL-i kรคske, nรคiteks CREATE ja ALTER, ei ole optimeeritud, vaid kompileeritakse sisemisse vormi.
Pรคringu maksumus arvutatakse selliste tegurite pรตhjal nagu protsessori kasutus, mรคlu kasutus ja sisend-/vรคljundvajadused. Optimeerija roll on leida kรตige odavam ja kulutรตhusam tรคitmisplaan, mitte tingimata absoluutselt parim.
Nรคide: Kujutage ette, et soovite avada internetipangakonto. รhe panga pรคringu avamine vรตtab maksimaalselt 2 pรคeva. Teil on ka nimekiri 20 teisest pangast, mille pรคringute avamine vรตib vรตtta vรคhem aega vรตi mitte. Kรตigi 20 panga otsimine ei pruugi kiiremat varianti leida ja otsing ise on aeganรตudev. Oleks olnud parem valida esimene pank. Samamoodi kasutab SQL-i optimeerija pรคringu aja minimeerimiseks ammendavaid ja heuristilisi algoritme.
Optimeerija otsib kolmes etapis:
0. etapp: triviaalse plaani otsimine
See on optimeerimiseelne etapp. Mรตne pรคringu puhul on olemas ainult รผks praktiline plaan, mida nimetatakse triviaalseks plaaniks. Edasi pole vaja otsida, sest iga tรคiendav otsing leiaks sama teostusplaani lisakuludega.
1. etapp: tehingute tรถรถtlemise plaanide otsimine
See hรตlmab nii lihtsate kui ka keerukate plaanide otsimist. Lihtsa plaani otsing kasutab veeru- ja indeksiandmete statistilist analรผรผsi, mis piirdub tavaliselt รผhe indeksiga tabeli kohta. Kui lihtsat plaani ei leita, tehakse keerukam otsing, mis hรตlmab mitut indeksit tabeli kohta.
2. etapp: paralleelne tรถรถtlemine ja optimeerimine
Kui eelnevad strateegiad ei anna piisavat plaani, otsib optimeerija paralleelse tรถรถtlemise vรตimalusi, mis pรตhinevad masina tรถรถtlemisvรตimekusel. Kui paralleelne tรถรถtlemine pole vรตimalik, algab viimane optimeerimisetapp, mis kasutab kรตiki รผlejรครคnud valikuid parima vรตimaliku teostusplaani leidmiseks.
Pรคringu tรคitja
Pรคringutรคitja kutsub salvestusmootoris juurdepรครคsumeetodit (Access Method). See pakub tรคitmisplaani, mis sisaldab tรคitmiseks vajalikku andmete hankimise loogikat. Kui andmed on salvestusmootorilt laekunud, avaldatakse tulemus protokollikihil ja saadetakse lรตppkasutajale.
Pรคrast seda, kui relatsioonimootor on kindlaks teinud, kuidas pรคringut tรคita, tegeleb salvestusmootor fรผรผsiliste andmetega seotud toimingutega. See kiht haldab andmete salvestamist, vahemรคllu salvestamist ja kettalt hankimist.
Sรคilitusmootor
Salvestusmootor vastutab andmete salvestamise eest salvestussรผsteemis, nรคiteks kettale vรตi SAN-ile, ja nende vajaduse korral hankimise eest. Enne salvestusmootori komponentide uurimist on oluline mรตista, kuidas andmeid fรผรผsiliselt salvestatakse.
Andmefailid ja ulatus
Andmefailid salvestavad andmeid fรผรผsiliselt andmelehtede kujul, kusjuures iga lehe suurus on 8KB. See on vรคikseim salvestusรผksus. SQL ServerAndmelehed on loogiliselt rรผhmitatud laiendusteks. รhelegi objektile ei ole otse mรครคratud individuaalset lehte; selle asemel toimub hooldus laienduste kaudu. Igal lehel on lehe pรคis (96 baiti), mis sisaldab metaandmeid, nagu lehe tรผรผp, lehe number, kasutatud ruum, vaba ruum ning viited jรคrgmisele ja eelmisele lehele.
File Types
Peamine fail: Iga andmebaas sisaldab รผhte pรตhifaili. See salvestab kรตik olulised andmed, mis on seotud tabelite, vaadete, pรครคstikute ja muude objektidega. Laiend on tavaliselt .mdf, kuid see vรตib olla mis tahes laiend.
Teisene fail: Andmebaas vรตib sisaldada vรตi mitte sisaldada mitut teisejรคrgulist faili. Need on valikulised ja sisaldavad kasutajaspetsiifilisi andmeid. Laiend on tavaliselt .ndf, kuid see vรตib olla mis tahes laiend.
Logifail: Tuntud ka kui ettekirjutatud logid. Laiend on .ldf. Logifaile kasutatakse tehingute haldamiseks, soovimatutest eksemplaridest taastamiseks ja kinnitamata tehingute tagasipรถรถramiseks.
Salvestusmootoril on kolm peamist komponenti. Igal neist on andmetele juurdepรครคsu ja terviklikkuse haldamisel kindel roll.
Juurdepรครคsumeetod
Juurdepรครคsumeetod toimib liidesena pรคringutรคitja ja pรคringu Buffer Haldur vรตi tehingulogid. See ei teosta ise tรคitmist, vaid mรครคrab pรคringu tรผรผbi:
- Kui pรคring on SELECT-lause (DML), see edastatakse Buffer Edasiseks tรถรถtlemiseks haldur.
- Kui pรคring on Mitte-SELECT-lause (DDL ja DML), edastatakse see tehinguhaldurile. See hรตlmab enamasti UPDATE, INSERT ja DELETE kรคske.
Buffer Juht
. Buffer Haldur haldab plaani vahemรคlu, andmete parsimise ja mรครคrdunud lehtede kรคitlemise pรตhifunktsioone.
Plaani vahemรคlu
Olemasolev pรคringuplaan: . Buffer Haldur kontrollib, kas tรคitmisplaan on salvestatud plaani vahemรคlus olemas. Kui on, siis kasutatakse otse vahemรคllu salvestatud pรคringuplaani ja sellega seotud andmevahemรคlu.
Esmakordne vahemรคlu plaan: Kui esmakordse pรคringu kรคivitamise plaan on keerukas, salvestatakse see plaani vahemรคllu. See tagab kiirema kรคttesaadavuse jรคrgmisel korral, kui SQL Server sama pรคringu saab.
Andmete sรตelumine: Buffer Vahemรคlu ja andmesalvestus
. Buffer Haldur annab juurdepรครคsu vajalikele andmetele. Vรตimalikud on kaks lรคhenemisviisi, olenevalt sellest, kas vahemรคlus on andmeid:
Buffer Vahemรคlu โ pehme parsimine
. Buffer Juhataja otsib andmeid Buffer Vahemรคlu. Kui andmed on olemas, kasutab pรคringutรคitja neid otse. See parandab jรตudlust, kuna andmete toomine vahemรคlust nรตuab vรคhem I/O-toiminguid vรตrreldes kettaseadmest toomisega.
Andmete salvestamine โ kรตva parsimine
Kui andmeid pole Buffer Vahemรคlu, vajalikud andmed otsitakse ketta andmesalvestusest. Seejรคrel salvestatakse andmed edaspidiseks kasutamiseks ka vahemรคllu.
Tehingujuht
Tehinguhaldurit kutsutakse vรคlja siis, kui juurdepรครคsumeetod mรครคrab, et pรคring ei ole SELECT-lause. See tagab andmete jรคrjepidevuse ja pรผsivuse mitme alamkomponendi kaudu:
Logihaldur
Logihaldur hoiab track kรตigist sรผsteemis tehtud uuendustest tehingulogides talletatud logide kaudu. Iga logikirje sisaldab logi jรคrjekorranumbrit koos tehingu ID ja andmete muutmise kirjega. See mehhanism tracks kinnitatud ja tagasipรถรถratud tehingud.
Lukuhaldur
Tehingu ajal lรคhevad seotud andmed salvestusruumis lukustatud olekusse. Lukustushaldur tegeleb selle protsessiga, tagades andmete jรคrjepidevuse ja isolatsiooni. Neid omadusi tuntakse ka kui ACID (Atomjรคikus, jรคrjepidevus, isoleeritus, vastupidavus).
Tรคitmisprotsess
Tรคitmisprotsess jรคrgib jรคrgmisi samme:
- Logihaldur alustab logimist ja lukustushaldur lukustab seotud andmed.
- Andmete koopiat hoitakse Buffer Vahemรคlu.
- Vรคrskendatavate andmete koopia salvestatakse logisse Bufferja kรตik sรผndmused vรคrskendavad andmeid andmekaustas Buffer.
- Lehekรผlgi, mis salvestavad muudetud andmeid, nimetatakse Rรคpased lehed.
Kontrollpunkti ja ettekirjutuse logimine
Kontrollpunkti protsess kรคivitub umbes kord minutis ja mรคrgib kรตik mustad lehed kettale kirjutamiseks. Leht suunatakse aga kรตigepealt logifaili andmelehele. Buffer Logi. Seda mehhanismi tuntakse ettekirjutamise logimise nime all. Mรครคrdunud lehed jรครคvad vahemรคllu ka pรคrast kettale kirjutamist.
laisk Writer
Kui SQL Server tuvastab suure koormuse ja uute tehingute jaoks on vaja puhvermรคlu, vabastab see vahemรคlust mรครคrdunud lehed. Laisk Writer tรถรถtab LRU (Least Recently Used) algoritmil, et puhastada lehekรผlgi puhverbasseinist kettale.
Kuidas SQL Server pรคringut otsast lรตpuni tรถรถtleb
Iga kihi eraldi mรตistmine on vรครคrtuslik, kuid tervikpildi selgitamiseks on oluline nรคha, kuidas need koos toimivad. Kui kliendirakendus saadab SQL-pรคringu, toimub jรคrgmine jรคrjestus:
. Protokollikiht vรตtab pรคringu vastu jagatud mรคlu, TCP/IP vรตi nimeliste torude kaudu ja pakib selle TDS-paketti. Suhteline mootor Seejรคrel vรตtab ohjad รผle: CMD parser kontrollib sรผntaksit ja semantikat, optimeerija genereerib odavaima tรคitmisplaani ja pรคringutรคitja alustab andmete hankimist.
Pรคringu tรคitja kutsub Salvestusmootori Juurdepรครคsumeetod, mis suunab SELECT-pรคringud Buffer Haldur ja tehinguhaldurile suunatud muutmispรคringud. Buffer Juhataja kontrollib plaani vahemรคlu ja Buffer Esmalt vahemรคllu salvestamine (pehme parsimine). Kui andmeid vahemรคllu ei salvestata, teostab see ketta lugemise (kรตva parsimine). Kirjutamistoimingute puhul koordineerib tehinguhaldur logihaldurit, lukustushaldurit ja kontrollpunkti protsessi, et tagada ACID-vastavus.
Kui salvestusmootor tagastab taotletud andmed, vormindab relatsioonimootor tulemuste komplekti ja protokollikiht edastab selle sama TDS-protokolli kaudu kliendirakendusele tagasi.
Kuidas valida SQL Serveri รผhenduste jaoks รตige protokoll?
รige protokolli valimine sรตltub kliendi ja serveri vahelisest fรผรผsilisest suhtest ning jรตudlusnรตuetest.
Kasuta jagatud mรคlu kui kliendirakendus tรถรถtab SQL Serveriga samas masinas. See on kiireim variant, kuna see vรคlistab igasuguse vรตrgu รผldkulu. See sobib ideaalselt kohalikuks arendamiseks, testimiseks ja รผhe masina juurutamiseks.
Kasuta TCP/IP-d kui klient ja server asuvad erinevatel masinatel, mis on รผhendatud WAN-vรตrgu vรตi interneti kaudu. See on tootmiskeskkondades kรตige sagedamini kasutatav protokoll. SQL Server kuulab vaikimisi porti 1433 ja see protokoll toetab krรผptitud รผhendusi TLS-i kaudu.
Kasutage nimelisi torusid kui klient ja server asuvad samas usaldusvรครคrses kohtvรตrgus ning sisevรตrkude jรตudlus on prioriteet. Named Pipes on vaikimisi keelatud ja see tuleb lubada SQL Serveri konfiguratsioonihalduri kaudu. See on tรคnapรคevastes juurutustes vรคhem levinud, kuid on siiski kasulik pรคrand-sisevรตrgurakenduste jaoks.
















