Vysvetlenie architektúry SQL Server: Pojmenované kanály, Optimalizátor, Správca vyrovnávacej pamäte

Obsah:

Anonim

MS SQL Server je architektúra klient-server. Proces MS SQL Servera začína odoslaním žiadosti klientskou aplikáciou. SQL Server prijíma, spracováva a odpovedá na žiadosť so spracovanými údajmi. Poďme podrobne diskutovať o celej architektúre zobrazenej nižšie:

Ako ukazuje nasledujúci diagram, v architektúre SQL Server sú tri hlavné komponenty:

  1. Vrstva protokolu
  2. Relačný engine
  3. Skladovací motor
Diagram architektúry servera SQL

Poďme diskutovať podrobne o všetkých troch vyššie uvedených hlavných moduloch. V tomto návode sa naučíte.

  • Protokolárna vrstva - SNI
    • Zdieľaná pamäť
    • TCP / IP
    • Pomenované fajky
    • Čo je TDS?
  • Relačný engine
    • Analyzátor CMD
    • Optimalizátor
    • Exekútor dopytov
  • Skladovací motor
    • Typy súborov
    • Prístupová metóda
    • Správca vyrovnávacej pamäte
    • Plan Cache
    • Analýza dát: Vyrovnávacia pamäť a dátové úložisko
    • Správca transakcií

Protokolárna vrstva - SNI

MS SQL SERVER PROTOCOL LAYER podporuje 3 typy architektúry klientských serverov. Začneme „ architektúrou troch typov klientských serverov“, ktorú podporuje MS SQL Server.

Zdieľaná pamäť

Zvážme znova ranný scenár konverzácie.

MAMA a TOM - Tu boli Tom a jeho mama na rovnakom logickom mieste, tj u nich doma. Tom mohol požiadať o kávu a mama dokázala, že ju podáva horúcu.

MS SQL Server - Tu MS SQL Server poskytuje zdieľaná pamäť PROTOKOLU . Tu sú CLIENT a MS SQL server spustené na rovnakom stroji. Oba môžu komunikovať prostredníctvom protokolu zdieľanej pamäte.

Analógia: Umožňuje mapovať entity vo vyššie uvedených dvoch scenároch. Môžeme ľahko namapovať Toma na klienta, mamu na server SQL, domov na stroj a verbálnu komunikáciu na protokol zdieľanej pamäte.

Na stole konfigurácie a inštalácie:

Pre pripojenie k miestnej databáze - v nástroji SQL Management Studio môže byť voľba „Názov servera“

„.“

"localhost"

„127.0.0.1“

„Stroj \ Inštancia“

TCP / IP

Teraz zvážte večer, Tom je v párty nálade. Chce kávu objednanú v známej kaviarni. Kaviareň sa nachádza 10 km od jeho domu.

Tu sú Tom a Starbuck na inom fyzickom mieste. Tom doma a Starbucks na rušnom trhovisku. Komunikujú prostredníctvom mobilnej siete. Podobne poskytuje server MS SQL SERVER možnosť interakcie prostredníctvom protokolu TCP / IP, kde sú klienti CLIENT a MS SQL Server navzájom vzdialení a nainštalovaní na samostatnom počítači.

Analógia: Umožňuje mapovať entity vo vyššie uvedených dvoch scenároch. Môžeme ľahko namapovať Toma na klienta, Starbuck na server SQL, miesto Domov / Market na vzdialené miesto a nakoniec celulárnu sieť na protokol TCP / IP.

Poznámky od pracovníka Konfigurácia / inštalácia:

  • V aplikácii SQL Management Studio - pri pripojení cez TCP \ IP musí byť možnosť „Názov servera“ „Stroj \ Inštancia servera“.
  • SQL server používa port 1433 v TCP / IP.

Pomenované fajky

Teraz konečne v noci si Tom chcela dať svetlozelený čaj, ktorý jej suseda Sierra pripravila veľmi dobre.

Tu sú Tom a jeho suseda , Sierra, na rovnakom fyzickom mieste a sú si navzájom susedmi. Komunikujú prostredníctvom siete Intra. Podobne server MS SQL poskytuje schopnosť interakcie prostredníctvom protokolu Named Pipe . Tu sú CLIENT a MS SQL SERVER pripojení cez LAN .

Analógia: Umožňuje mapovať entity vo vyššie uvedených dvoch scenároch. Môžeme ľahko zmapovať Toma na klienta, Sierru na SQL server, suseda na LAN a nakoniec Intra sieť na Named Pipe Protocol.

Poznámky od pracovníka Konfigurácia / inštalácia:

  • Pre pripojenie pomocou pomenovanej rúry. Táto možnosť je v predvolenom nastavení zakázaná a musí byť povolená nástrojom SQL Configuration Manager.

Čo je TDS?

Teraz, keď vieme, že existujú tri typy architektúry klient-server, sa pozrime na TDS:

  • TDS je skratka pre Tabular Data Stream.
  • Všetky 3 protokoly používajú pakety TDS. TDS je zapuzdrený v sieťových paketoch. To umožňuje prenos dát z klientskeho počítača na serverový počítač.
  • TDS bol prvýkrát vyvinutý spoločnosťou Sybase a teraz je vlastníkom spoločnosti Microsoft

Relačný engine

Relačný modul je tiež známy ako Dotazový procesor. Má komponenty servera SQL Server, ktoré určujú, čo presne má dotaz robiť a ako ho možno najlepšie vykonať. Je zodpovedný za vykonávanie užívateľských dotazov vyžiadaním údajov z úložného modulu a spracovaním vrátených výsledkov.

Ako je znázornené na architektonickom diagrame, existujú 3 hlavné komponenty relačného enginu. Poďme si podrobne preštudovať komponenty:

Analyzátor CMD

Dáta po prijatí z vrstvy protokolu sa potom odovzdajú do relačného modulu. „CMD Parser“ je prvou súčasťou relačného modulu, ktorý prijíma údaje dotazu. Hlavnou úlohou CMD Parser je skontrolovať syntaktickú a sémantickú chybu v dotaze . Nakoniec vygeneruje strom dotazov . Poďme diskutovať podrobne.

Syntaktická kontrola:

  • Ako každý iný programovací jazyk, aj MS SQL má preddefinovanú množinu kľúčových slov. SQL Server má tiež svoju vlastnú gramatiku, ktorej rozumie.
  • SELECT, INSERT, UPDATE a mnoho ďalších patrí do preddefinovaných zoznamov kľúčových slov pre MS SQL.
  • CMD Parser robí syntaktickú kontrolu. Ak vstup používateľov nie je v súlade s týmito pravidlami jazykovej syntaxe alebo gramatiky, vráti sa chyba.

Príklad: Povedzme, že Rus išiel do japonskej reštaurácie. Rýchle občerstvenie si objednáva v ruskom jazyku. Bohužiaľ, čašník rozumie iba po japonsky. Aký by bol najočividnejší výsledok?

Odpoveď je - čašník nie je schopný objednávku ďalej spracovať.

Nemali by sa vyskytnúť žiadne odchýlky v gramatike alebo jazyku, ktoré server SQL akceptuje. Ak existujú, nemôže ich server SQL spracovať, a preto vráti chybové hlásenie.

O dotazoch MS SQL sa dozvieme viac v nasledujúcich tutoriáloch. Zvážte však nižšie najzákladnejšiu syntax dotazu ako

SELECT * from ;

Teraz, aby ste získali predstavu o tom, čo syntaktické robí, povedzme, ak používateľ spustí základný dotaz, ako je uvedené nižšie:

SELECR * from 

Upozorňujeme, že namiesto výrazu „SELECT“ používateľ zadal „SELECR“.

Výsledok: Analyzátor CMD analyzuje toto vyhlásenie a vyhodí chybové hlásenie. Pretože reťazec „SELECR“ nesleduje preddefinovaný názov kľúčového slova a gramatiku. Tu CMD Parser očakával „SELECT“.

Sémantická kontrola:

  • Vykonáva to Normalizer .
  • Vo svojej najjednoduchšej forme kontroluje, či v schéme existuje názov stĺpca a dopytovaný názov tabuľky. A ak existuje, spojte ho s dotazom. Toto je tiež známe ako Binding .
  • Zložitosť sa zvyšuje, keď dotazy používateľov obsahujú VIEW. Normalizátor vykonáva nahradenie interne uloženou definíciou pohľadu a oveľa viac.

Poďme to pochopiť pomocou nižšie uvedeného príkladu -

SELECT * from USER_ID

Výsledok: Analyzátor CMD tento príkaz analyzuje na sémantickú kontrolu. Analyzátor vyhodí chybové hlásenie, pretože Normalizer nenájde požadovanú tabuľku (USER_ID), pretože neexistuje.

Vytvoriť strom dotazov:

  • Tento krok vygeneruje iný strom spustenia, v ktorom je možné spustiť dopyt.
  • Upozorňujeme, že všetky rôzne stromy majú rovnaký požadovaný výstup.

Optimalizátor

Úlohou optimalizátora je vytvoriť plán vykonávania dotazu používateľa. Toto je plán, ktorý určí, ako sa bude dotaz používateľa vykonávať.

Upozorňujeme, že nie všetky dotazy sú optimalizované. Optimalizácia sa vykonáva pre príkazy DML (Data Modification Language), ako napríklad SELECT, INSERT, DELETE a UPDATE. Takéto dotazy sa najskôr označia a potom sa odošlú optimalizátoru. Príkazy DDL ako CREATE a ALTER nie sú optimalizované, ale namiesto toho sa kompilujú do internej podoby. Náklady na dopyt sa počítajú na základe faktorov, ako sú využitie procesora, využitie pamäte a potreby vstupu / výstupu.

Úlohou optimalizátora je nájsť najlacnejší, nie najlepší, nákladovo efektívny plán vykonania.

Predtým, ako prejdeme k ďalším technickým detailom Optimalizátora, zvážte nasledujúci príklad z reálneho života:

Príklad:

Povedzme, že si chcete otvoriť online bankový účet. Už viete o jednej banke, ktorej otvorenie účtu trvá maximálne 2 dni. Máte však aj zoznam ďalších 20 bánk, ktoré môžu alebo nemusia trvať menej ako 2 dni. S týmito bankami môžete začať spolupracovať, aby ste určili, ktorým bankám to trvá menej ako 2 dni. Teraz možno nenájdete banku, ktorá by trvala menej ako 2 dni, a kvôli samotnej vyhľadávacej činnosti sa stratí ďalší čas. Bolo by lepšie otvoriť si účet v prvej banke samotnej.

Záver: Je dôležitejšie vyberať múdro. Aby sme boli presní, vyberte si, ktorá možnosť je najlepšia, nie najlacnejšia.

Podobne MS SQL Optimizer pracuje na zabudovaných vyčerpávajúcich / heuristických algoritmoch. Cieľom je minimalizovať čas vykonávania dotazu. Všetky algoritmy Optimalizátora sú vlastníctvom spoločnosti Microsoft a sú tajné. Aj keď , nižšie sú kroky na vysokej úrovni vykonávané MS Optimizer SQL. Vyhľadávanie optimalizácie prebieha v troch fázach, ako je znázornené na obrázku nižšie:

Fáza 0: Hľadať triviálny plán:

  • Toto sa označuje aj ako fáza predbežnej optimalizácie .
  • V niektorých prípadoch mohol existovať iba jeden praktický uskutočniteľný plán, ktorý sa nazýva triviálny plán. Nie je potrebné vytvárať optimalizovaný plán. Dôvodom je, že prehľadávanie väčšieho množstva by viedlo k nájdeniu rovnakého plánu vykonávania za behu. To tiež s ďalšími nákladmi na hľadanie optimalizovaného plánu, ktoré sa vôbec nevyžadovali.
  • Ak sa nenájde žiadny triviálny plán, začne sa 1. fáza.

Fáza 1: Vyhľadávanie plánov spracovania transakcií

  • Patrí sem hľadanie jednoduchého a zložitého plánu .
  • Jednoduché vyhľadávanie plánu: Pre štatistickú analýzu sa použijú minulé údaje stĺpca a indexu zapojeného do dotazu. To zvyčajne pozostáva, ale nie je to obmedzené, na jeden index na tabuľku.
  • Ak sa nenájde jednoduchý plán, bude prehľadaný zložitejší plán. Zahŕňa to viacnásobný index na tabuľku.

Fáza 2: Paralelné spracovanie a optimalizácia.

  • Ak žiadna z vyššie uvedených stratégií nefunguje, optimalizátor vyhľadá možnosti paralelného spracovania. Závisí to od schopností a konfigurácie stroja.
  • Ak to stále nie je možné, spustí sa konečná fáza optimalizácie. Teraz je konečným cieľom optimalizácie nájsť všetky ďalšie možné možnosti na vykonanie dotazu najlepším spôsobom. Finálnou fázou optimalizácie sú algoritmy spoločnosti Microsoft.

Exekútor dopytov

Spúšťač dotazov volá metódu prístupu. Poskytuje plán vykonania pre logiku načítania údajov požadovanú na vykonanie. Po prijatí údajov z modulu Storage Engine sa výsledok zverejní na vrstvu protokolu. Nakoniec sa údaje odošlú koncovému používateľovi.

Skladovací motor

Úlohou modulu Storage Engine je ukladať údaje do úložného systému, ako je Disk alebo SAN, a v prípade potreby ich načítať. Predtým, ako sa ponoríme do úložného modulu, pozrime sa, ako sú údaje uložené v databáze a aké typy súborov sú k dispozícii.

Dátový súbor a rozsah:

Dátový súbor, fyzicky ukladá údaje vo forme dátových stránok, pričom každá dátová stránka má veľkosť 8 kB a vytvára najmenšiu úložnú jednotku na serveri SQL Server. Tieto údajové stránky sú logicky zoskupené tak, aby tvorili rozsahy. Žiadnemu objektu nie je priradená stránka na serveri SQL Server.

Údržba objektu sa vykonáva prostredníctvom rozsahu. Stránka má časť s názvom Hlavička stránky s veľkosťou 96 bajtov, ktorá nesie informácie o metaúdajoch o stránke, ako napríklad Typ stránky, Číslo stránky, Veľkosť použitého priestoru, Veľkosť voľného miesta a Ukazovateľ na nasledujúcu stránku a predchádzajúcu stránku , atď.

Typy súborov

  1. Primárny súbor
  • Každá databáza obsahuje jeden primárny súbor.
  • Ukladajú sa všetky dôležité údaje týkajúce sa tabuliek, zobrazení, spúšťačov atď.
  • Prípona je. mdf zvyčajne, ale môže mať ľubovoľné rozšírenie.
  1. Sekundárny spis
  • Databáza môže, ale nemusí obsahovať viac sekundárnych súborov.
  • Toto je voliteľné a obsahuje údaje špecifické pre používateľa.
  • Prípona je. ndf zvyčajne, ale môže byť ľubovoľného rozšírenia.
  1. Súbor denníka
  • Známe tiež ako Protokoly zápisu vopred.
  • Prípona je. ldf
  • Používa sa na správu transakcií.
  • Používa sa na zotavenie z nežiaducich prípadov. Vykonajte dôležitú úlohu vrátenia späť k nezáväzným transakciám.

Storage Engine má 3 komponenty; pozrime sa na ne podrobne.

Prístupová metóda

Funguje ako rozhranie medzi vykonávateľom dotazov a správcami vyrovnávacích pamätí / protokolmi transakcií.

Samotná metóda prístupu nevykonáva žiadne operácie.

Prvou akciou je zistiť, či je dotaz:

  1. Vyberte výpis (DDL)
  2. Nevyberaný výpis (DDL a DML)

V závislosti od výsledku vykoná metóda prístupu nasledujúce kroky:

  1. Ak je dotazom príkaz DDL , SELECT, je dotaz odovzdaný správcovi vyrovnávacej pamäte na ďalšie spracovanie.
  2. A v prípade dotazu, ak je príkaz DDL, NON-SELECT , je dotaz odovzdaný správcovi transakcií. Toto väčšinou zahŕňa vyhlásenie UPDATE.

Správca vyrovnávacej pamäte

Správca vyrovnávacej pamäte spravuje základné funkcie pre moduly uvedené nižšie:

  • Plan Cache
  • Analýza dát: Vyrovnávacia pamäť a ukladanie dát
  • Špinavá stránka

V tejto časti sa naučíme medzipamäť Plan, Buffer a Data. Špinavým stránkam sa budeme venovať v sekcii Transakcie.

Plan Cache

  • Existujúci plán dotazov: Správca vyrovnávacej pamäte skontroluje, či sa plán vykonania nachádza v uloženej medzipamäti plánu. Ak Áno, použije sa vyrovnávacia pamäť plánu dotazov a súvisiaca vyrovnávacia pamäť údajov.
  • Prvýkrát plán medzipamäte: Odkiaľ pochádza existujúca medzipamäť plánu?

    Ak je plán vykonávania prvého dotazu spustený a je zložitý, má zmysel ho uložiť do medzipamäte Rovina. To zaistí rýchlejšiu dostupnosť, keď nabudúce dostane server SQL rovnaký dotaz. Nejde teda o nič iné ako o samotný dotaz, ktorý sa ukladá pri vykonávaní plánu, ak sa spúšťa prvýkrát.

Analýza dát: Vyrovnávacia pamäť a dátové úložisko

Správca vyrovnávacej pamäte poskytuje prístup k požadovaným údajom. Ďalej sú možné dva prístupy v závislosti od toho, či údaje existujú v dátovej pamäti alebo nie:

Vyrovnávacia pamäť - mäkká analýza:

Správca vyrovnávacej pamäte vyhľadáva údaje v medzipamäti v medzipamäti údajov. Ak sú tieto údaje k dispozícii, použije ich Správca dotazu. To zvyšuje výkon, pretože pri načítaní údajov z medzipamäte sa znižuje počet vstupno-výstupných operácií v porovnaní s načítaním údajov z úložiska údajov.

Ukladanie dát - tvrdá analýza:

Ak v Správcovi vyrovnávacích pamätí nie sú údaje, potom sa v úložisku údajov prehľadajú požadované údaje. Ak tiež uloží údaje do medzipamäte údajov pre ďalšie použitie.

Špinavá stránka

Je uložený ako logika spracovania produktu Transaction Manager. Dozvieme sa podrobne v sekcii Správca transakcií.

Správca transakcií

Správca transakcií sa vyvolá, keď metóda prístupu určí, že dotaz je príkazom, ktorý nie je vybratý.

Správca denníka

  • Správca protokolov sleduje všetky aktualizácie vykonané v systéme prostredníctvom protokolov v protokoloch transakcií.
  • Protokoly majú poradové číslo protokolov s ID transakcie a záznamom o úprave údajov .
  • Používa sa na sledovanie záväzkov transakcie a vrátenia transakcie .

Správca zámku

  • Počas transakcie sú súvisiace údaje v úložisku údajov v stave uzamknutia. Tento proces spracováva program Lock Manager.
  • Tento proces zaisťuje konzistenciu a izoláciu údajov . Známe tiež ako vlastnosti KYSELINY.

Proces vykonania

  • Správca protokolov spustí protokolovanie a program Lock Manager uzamkne príslušné údaje.
  • Kópia údajov sa uchováva v medzipamäti medzipamäte.
  • Kópia údajov, ktoré sa majú aktualizovať, sa uchováva v medzipamäti protokolu a všetky udalosti sa aktualizujú v medzipamäti údajov.
  • Stránky, ktoré ukladajú údaje, sú tiež známe ako Špinavé stránky .
  • Protokolovanie kontrolného bodu a zápisu dopredu: Tento proces sa spustí a označí celú stránku od Špinavých stránok na Disk, ale stránka zostane v medzipamäti. Frekvencia je približne 1 beh za minútu. Stránka sa však najskôr presunie na stránku údajov v protokolovom súbore z denníka vyrovnávacej pamäte. Toto sa označuje ako Write Ahead Logging.
  • Lazy Writer: Špinavá stránka môže zostať v pamäti. Keď server SQL zaznamená obrovské zaťaženie a pre novú transakciu je potrebná vyrovnávacia pamäť, uvoľní sa z medzipamäte špinavé stránky. Funguje na LRU - najmenej používaný algoritmus na čistenie stránky z oblasti vyrovnávacej pamäte na disk.

Zhrnutie:

  • Existujú tri typy architektúry klientskeho servera: 1) Zdieľaná pamäť 2) TCP / IP 3) Pomenované kanály
  • TDS, vyvinutý spoločnosťou Sybase a teraz vlastnený spoločnosťou Microsoft, je paket, ktorý je zapuzdrený v sieťových paketoch na prenos údajov z klientskeho počítača na serverový počítač.
  • Relational Engine obsahuje tri hlavné komponenty:

    CMD Parser: Je zodpovedný za syntaktické a sémantické chyby a nakoniec vygeneruje strom dotazov.

    Optimalizátor: Úlohou optimalizátora je nájsť najlacnejší, nie najlepší, nákladovo efektívny plán vykonania.

    Spúšťač dotazov: Spúšťač dotazov volá metódu prístupu a poskytuje plán vykonania pre logiku načítania údajov požadovanú na vykonanie.

  • Existujú tri typy súborov Primárny súbor, Sekundárny súbor a Súbory denníka.
  • Storage Engine: Má nasledujúce dôležité komponenty

    Metóda prístupu: Táto súčasť určuje, či je dotazom príkaz Select alebo Non-Select. Podľa toho vyvolá Buffer a Transfer Manager.

    Správca vyrovnávacej pamäte: Správca vyrovnávacej pamäte spravuje základné funkcie pre medzipamäť plánu, analýzu údajov a špinavú stránku.

    Manažér transakcií: Nevyberá transakcie manažérom pomocou manažérov denníka a zámku. Tiež uľahčuje dôležitú implementáciu protokolovania Write Ahead a spisovateľov Lazy.