Vysvětlení architektury serveru SQL: Pojmenované kanály, Optimalizátor, Správce vyrovnávacích pamětí

Obsah:

Anonim

MS SQL Server je architektura klient-server. Proces MS SQL Serveru začíná tím, že klientská aplikace odešle požadavek. SQL Server přijímá, zpracovává a odpovídá na požadavek se zpracovanými daty. Pojďme podrobně diskutovat o celé architektuře zobrazené níže:

Jak ukazuje následující diagram, existují tři hlavní komponenty v architektuře serveru SQL Server:

  1. Vrstva protokolu
  2. Relační engine
  3. Storage Engine
Diagram architektury serveru SQL

Pojďme podrobně diskutovat o všech třech výše uvedených hlavních modulech. V tomto výukovém programu se naučíte.

  • Vrstva protokolu - SNI
    • Sdílená paměť
    • TCP / IP
    • Pojmenované trubky
    • Co je TDS?
  • Relační engine
    • Analyzátor CMD
    • Optimalizátor
    • Exekuce dotazu
  • Storage Engine
    • Typy souborů
    • Způsob přístupu
    • Správce vyrovnávací paměti
    • Naplánujte mezipaměť
    • Analýza dat: Vyrovnávací paměť a datové úložiště
    • Správce transakcí

Vrstva protokolu - SNI

MS SQL SERVER PROTOCOL LAYER podporuje 3 typy architektury klientských serverů. Začneme s „ Three Type of Client Server Architecture“, který MS SQL Server podporuje.

Sdílená paměť

Přehodnoťme scénář konverzace brzy ráno.

MAMA a TOM - Tady Tom a jeho máma byli na stejném logickém místě, tj. Doma. Tom mohl požádat o kávu a maminka to dokázala servírovat horké.

MS SQL SERVER - Zde MS SQL server poskytuje PROTOKOL SDÍLENÉ PAMĚTI . Zde běží KLIENT a MS SQL server na stejném počítači. Oba mohou komunikovat prostřednictvím protokolu sdílené paměti.

Analogie: Umožňuje mapovat entity ve dvou výše uvedených scénářích. Můžeme snadno mapovat Toma na klienta, mámu na server SQL, Home to Machine a verbální komunikaci na protokol sdílené paměti.

Na stole konfigurace a instalace:

Pro připojení k místní databázi - v SQL Management Studio může být možnost „Název serveru“

„.“

"localhost"

„127.0.0.1“

„Stroj \ Instance“

TCP / IP

Zvažte, že večer je Tom ve party náladě. Chce kávu objednanou ve známé kavárně. Kavárna se nachází 10 km od jeho domova.

Tady jsou Tom a Starbuck na jiném fyzickém místě. Tom doma a Starbucks na rušném tržišti. Komunikují prostřednictvím mobilní sítě. Podobně MS SQL SERVER poskytuje schopnost interakce prostřednictvím protokolu TCP / IP, kde jsou klienti a MS SQL Server navzájem vzdálení a jsou instalováni na samostatném počítači.

Analogie: Umožňuje mapovat entity ve dvou výše uvedených scénářích. Můžeme snadno namapovat Toma na klienta, Starbuck na server SQL, místo Home / Market na vzdálené místo a nakonec mobilní síť na protokol TCP / IP.

Poznámky od stolu Konfigurace / instalace:

  • V SQL Management Studio - pro připojení přes TCP \ IP musí být volba „Název serveru“ „Stroj \ Instance serveru“.
  • SQL server používá port 1433 v TCP / IP.

Pojmenované trubky

Nyní konečně v noci si Tom chtěla dát světle zelený čaj, který její sousedka Sierra připravila velmi dobře.

Tady jsou Tom a jeho soused , Sierra, na stejném fyzickém místě a jsou sousedem toho druhého. Komunikují prostřednictvím sítě Intra. Podobně MS SQL SERVER poskytuje schopnost interakce prostřednictvím protokolu Named Pipe . Zde jsou CLIENT a MS SQL SERVER ve spojení přes LAN .

Analogie: Umožňuje mapovat entity ve dvou výše uvedených scénářích. Můžeme snadno namapovat Toma na klienta, Sierru na server SQL, souseda na LAN a nakonec Intra síť na Named Pipe Protocol.

Poznámky od stolu Konfigurace / instalace:

  • Pro připojení pomocí pojmenované trubky. Tato možnost je ve výchozím nastavení zakázána a je třeba ji povolit pomocí nástroje SQL Configuration Manager.

Co je TDS?

Nyní, když víme, že existují tři typy architektury klient-server, se podívejme na TDS:

  • TDS je zkratka pro Tabular Data Stream.
  • Všechny 3 protokoly používají pakety TDS. TDS je zapouzdřen v síťových paketech. To umožňuje přenos dat z klientského počítače na serverový počítač.
  • TDS byl poprvé vyvinut společností Sybase a nyní je vlastněn společností Microsoft

Relační engine

Relační modul je také známý jako procesor dotazů. Má komponenty serveru SQL Server, které určují, co přesně musí dotaz udělat a jak jej lze nejlépe provést. Je zodpovědný za provádění uživatelských dotazů tím, že požaduje data z úložiště a zpracovává výsledky, které jsou vráceny.

Jak je znázorněno v architektonickém diagramu, existují 3 hlavní komponenty relačního enginu. Pojďme si podrobně prostudovat komponenty:

Analyzátor CMD

Data přijatá z vrstvy protokolu se poté předají relačnímu modulu. „CMD Parser“ je první komponentou relačního modulu, který přijímá data dotazu. Hlavním úkolem CMD Parser je kontrola dotazu na syntaktickou a sémantickou chybu. Nakonec vygeneruje strom dotazů . Pojďme diskutovat podrobně.

Syntaktická kontrola:

  • Jako každý jiný programovací jazyk má i MS SQL předdefinovanou sadu klíčových slov. SQL Server má také vlastní gramatiku, které SQL Server rozumí.
  • SELECT, INSERT, UPDATE a mnoho dalších patří do předdefinovaných seznamů klíčových slov MS SQL.
  • CMD Parser provádí syntaktickou kontrolu. Pokud vstup uživatelů nedodržuje tato pravidla syntaxe jazyka nebo gramatická pravidla, vrátí chybu.

Příklad: Řekněme, že Rus šel do japonské restaurace. Objednává rychlé občerstvení v ruském jazyce. Bohužel číšník rozumí pouze japonštině. Jaký by byl nejviditelnější výsledek?

Odpověď zní - číšník není schopen objednávku dále zpracovat.

Neměla by existovat žádná odchylka v gramatice nebo jazyce, který SQL server přijímá. Pokud existují, server SQL jej nemůže zpracovat, a proto vrátí chybovou zprávu.

O dotazech na MS SQL se více dozvíme v nadcházejících cvičeních. Níže zvažte nejzákladnější syntaxi dotazů jako

SELECT * from ;

Nyní, abyste získali představu o tom, co syntaktická funkce dělá, řekněme, pokud uživatel spustí základní dotaz, jak je uvedeno níže:

SELECR * from 

Všimněte si, že místo 'SELECT' uživatel zadal "SELECR."

Výsledek: Analyzátor CMD toto prohlášení analyzuje a zobrazí chybovou zprávu. Protože „SELECR“ nenásleduje předdefinovaný název klíčového slova a gramatiku. Zde CMD Parser očekával „VÝBĚR“.

Sémantická kontrola:

  • To provádí Normalizer .
  • Ve své nejjednodušší formě kontroluje, zda ve schématu existuje název sloupce, dotazovaný název tabulky. A pokud existuje, svázat jej s Query. Toto se také nazývá vazba .
  • Složitost se zvyšuje, když uživatelské dotazy obsahují VIEW. Normalizátor provádí nahrazení interně uloženou definicí pohledu a mnohem více.

Pochopme to pomocí níže uvedeného příkladu -

SELECT * from USER_ID

Výsledek: Analyzátor CMD analyzuje tento příkaz pro sémantickou kontrolu. Analyzátor vyhodí chybovou zprávu, protože Normalizer nenajde požadovanou tabulku (USER_ID), protože neexistuje.

Vytvořit dotazovací strom:

  • Tento krok generuje jiný spouštěcí strom, ve kterém lze spustit dotaz.
  • Všimněte si, že všechny různé stromy mají stejný požadovaný výstup.

Optimalizátor

Úkolem optimalizátoru je vytvořit plán provádění dotazu uživatele. Toto je plán, který určí, jak bude dotaz uživatele proveden.

Všimněte si, že ne všechny dotazy jsou optimalizovány. Optimalizace se provádí pro příkazy DML (Data Modification Language), jako jsou SELECT, INSERT, DELETE a UPDATE. Takové dotazy jsou nejprve označeny a poté odeslány optimalizátoru. Příkazy DDL jako CREATE a ALTER nejsou optimalizovány, ale místo toho jsou kompilovány do interní formy. Náklady na dotaz se počítají na základě faktorů, jako je využití CPU, využití paměti a potřeby vstupu / výstupu.

Úlohou Optimizer je najít nejlevnější, ne nejlepší, nákladově efektivní plán provádění.

Než přejdeme k technickým podrobnostem Optimalizátoru, zvažte níže uvedený příklad z reálného života:

Příklad:

Řekněme, že si chcete otevřít bankovní účet online. Již víte o jedné bance, jejíž otevření účtu trvá maximálně 2 dny. Máte ale také seznam 20 dalších bank, které mohou nebo nemusí trvat méně než 2 dny. S těmito bankami můžete začít spolupracovat, abyste zjistili, které banky trvají méně než 2 dny. Nyní možná nenajdete banku, která by trvala méně než 2 dny a kvůli samotné vyhledávací aktivitě došlo ke ztrátě času navíc. Bylo by lepší založit si účet u první banky samotné.

Závěr: Je důležitější vybírat moudře. Abych byl přesný, vyberte si, která možnost je nejlepší, ne nejlevnější.

Podobně MS SQL Optimizer pracuje na vestavěných vyčerpávajících / heuristických algoritmech. Cílem je minimalizovat dobu běhu dotazu. Všechny optimalizační algoritmy jsou vlastnictvím společnosti Microsoft a jsou tajné. I když , níže jsou kroky na vysoké úrovni prováděné MS Optimizer SQL. Hledání optimalizace probíhá ve třech fázích, jak ukazuje následující diagram:

Fáze 0: Hledání triviálního plánu:

  • Toto se také nazývá fáze před optimalizací .
  • V některých případech mohl existovat pouze jeden praktický proveditelný plán, známý jako triviální plán. Není nutné vytvářet optimalizovaný plán. Důvodem je, že prohledávání více by vedlo k nalezení stejného plánu spuštění. To také s dodatečnými náklady na hledání optimalizovaného plánu, které nebyly vůbec nutné.
  • Pokud nebyl nalezen žádný triviální plán, začíná 1. fáze.

Fáze 1: Hledání plánů zpracování transakcí

  • To zahrnuje hledání jednoduchého a komplexního plánu .
  • Jednoduché hledání plánu: Pro statistickou analýzu budou použita minulá data sloupce a indexu zapojeného do dotazu. To obvykle sestává, ale není omezeno na jeden index na tabulku.
  • Pokud však nenájdete jednoduchý plán, prohledá se složitější plán. Zahrnuje více indexů na stůl.

Fáze 2: Paralelní zpracování a optimalizace.

  • Pokud žádná z výše uvedených strategií nefunguje, optimalizátor vyhledá možnosti paralelního zpracování. To závisí na schopnostech a konfiguraci stroje.
  • Pokud to stále není možné, spustí se konečná fáze optimalizace. Konečným cílem optimalizace je nyní najít všechny další možné možnosti pro provedení dotazu nejlepším způsobem. Algoritmy fáze finální optimalizace jsou Microsoft Propriety.

Exekuce dotazu

Spouštěč dotazů volá metodu přístupu. Poskytuje plán provádění pro logiku načítání dat požadovanou pro provedení. Jakmile jsou data přijata z úložiště Engine, výsledek bude publikován do vrstvy protokolu. Nakonec jsou data odeslána koncovému uživateli.

Storage Engine

Úkolem Storage Engine je ukládat data do úložného systému, jako je Disk nebo SAN, a v případě potřeby je načíst. Než se hluboce ponoříme do úložiště, pojďme se podívat na to, jak jsou data uložena v databázi a jaké typy souborů jsou k dispozici.

Datový soubor a rozsah:

Datový soubor fyzicky ukládá data ve formě datových stránek, přičemž každá datová stránka má velikost 8 kB a tvoří nejmenší úložnou jednotku na serveru SQL Server. Tyto datové stránky jsou logicky seskupeny tak, aby tvořily rozsahy. Žádnému objektu není přiřazena stránka na serveru SQL Server.

Údržba objektu se provádí pomocí rozsahů. Stránka má část nazvanou Záhlaví stránky o velikosti 96 bajtů, nesoucí informace metadat o stránce, jako je Typ stránky, Číslo stránky, Velikost použitého prostoru, Velikost volného místa a Ukazatel na další stránku a předchozí stránku , atd.

Typy souborů

  1. Primární soubor
  • Každá databáze obsahuje jeden primární soubor.
  • Ukládá všechna důležitá data týkající se tabulek, pohledů, spouštěčů atd.
  • Rozšíření je. mdf obvykle, ale může mít libovolnou příponu.
  1. Sekundární soubor
  • Databáze může, ale nemusí obsahovat více sekundárních souborů.
  • Toto je volitelné a obsahuje údaje specifické pro uživatele.
  • Rozšíření je. ndf obvykle, ale může mít libovolnou příponu.
  1. Log soubor
  • Také známý jako zápis dopředu protokolů.
  • Rozšíření je. ldf
  • Používá se pro správu transakcí.
  • Slouží k obnovení z jakýchkoli nežádoucích instancí. Proveďte důležitý úkol vrácení zpět k nezávazným transakcím.

Storage Engine má 3 komponenty; pojďme se na ně podívat podrobně.

Způsob přístupu

Funguje jako rozhraní mezi zpracovatelem dotazů a protokoly Buffer Manager / Transaction.

Samotná metoda přístupu neprovádí žádné provádění.

První akcí je zjistit, zda je dotaz:

  1. Select Statement (DDL)
  2. Nevybrané prohlášení (DDL a DML)

V závislosti na výsledku provede metoda přístupu následující kroky:

  1. Pokud je dotazem příkaz DDL , SELECT, je dotaz předán správci vyrovnávací paměti k dalšímu zpracování.
  2. A pokud dotaz if DDL, NON-SELECT statement , the query is pass to Transaction Manager. To většinou zahrnuje příkaz UPDATE.

Správce vyrovnávací paměti

Správce vyrovnávací paměti spravuje základní funkce modulů níže:

  • Naplánujte mezipaměť
  • Analýza dat: Vyrovnávací paměť a datové úložiště
  • Špinavá stránka

V této části se naučíme mezipaměť Plan, Buffer a Data. Špinavým stránkám se budeme věnovat v sekci Transakce.

Naplánujte mezipaměť

  • Existující plán dotazů: Správce vyrovnávací paměti zkontroluje, zda je plán provádění v uložené mezipaměti plánu. Pokud ano, použije se mezipaměť plánu dotazů a související datová mezipaměť.
  • První plán mezipaměti: Odkud pochází stávající mezipaměť plánu?

    Pokud je spuštěn plán provádění prvního dotazu a je složitý, má smysl jej uložit do mezipaměti roviny. Tím zajistíte rychlejší dostupnost, až příště dostane server SQL stejný dotaz. Není to tedy nic jiného než samotný dotaz, který se provádí při provádění Plánu, pokud se spouští poprvé.

Analýza dat: Vyrovnávací paměť a datové úložiště

Správce vyrovnávací paměti poskytuje přístup k požadovaným údajům. Níže jsou možné dva přístupy v závislosti na tom, zda data existují v datové mezipaměti, či nikoli:

Vyrovnávací paměť - měkká analýza:

Správce vyrovnávací paměti vyhledá data ve vyrovnávací paměti v mezipaměti dat. Pokud jsou k dispozici, pak tato data používá Query Executor. To zlepšuje výkon, protože počet I / O operací je snížen při načítání dat z mezipaměti ve srovnání s načítáním dat z úložiště dat.

Úložiště dat - tvrdá analýza:

Pokud ve Správci vyrovnávacích pamětí nejsou k dispozici data, budou v úložišti dat prohledána požadovaná data. Pokud také ukládá data do mezipaměti dat pro budoucí použití.

Špinavá stránka

Je uložen jako logika zpracování produktu Transaction Manager. Dozvíme se podrobně v části Správce transakcí.

Správce transakcí

Správce transakcí se vyvolá, když přístupová metoda určí, že dotaz je příkazem bez výběru.

Správce protokolů

  • Správce protokolů sleduje všechny aktualizace provedené v systému prostřednictvím protokolů v protokolech transakcí.
  • Protokoly mají pořadové číslo protokolů s ID transakce a záznamem o úpravě dat .
  • Slouží ke sledování potvrzení transakce a vrácení transakce .

Správce zámku

  • Během transakce jsou přidružená data v úložišti dat ve stavu zámku. Tento proces zpracovává správce zámků.
  • Tento proces zajišťuje konzistenci a izolaci dat . Také známé jako vlastnosti KYSELIN.

Proces provádění

  • Správce protokolů zahájí protokolování a správce zámků uzamkne související data.
  • Kopie dat je udržována v mezipaměti vyrovnávací paměti.
  • Kopie dat, která mají být aktualizována, je udržována ve vyrovnávací paměti protokolu a všechna data aktualizace událostí v datové vyrovnávací paměti.
  • Stránky, které ukládají data, se také nazývají Špinavé stránky .
  • Protokolování kontrolního bodu a zápisu dopředu: Tento proces spustí a označí celou stránku ze špinavých stránek na disk, ale stránka zůstane v mezipaměti. Frekvence je přibližně 1 běh za minutu. Stránka se ale nejprve přesune na datovou stránku souboru protokolu z protokolu vyrovnávací paměti. Toto je známé jako Write Ahead Logging.
  • Líný spisovatel: Špinavá stránka může zůstat v paměti. Když server SQL zjistí obrovské zatížení a pro novou transakci je potřeba vyrovnávací paměť, uvolní z mezipaměti špinavé stránky. Funguje na LRU - nejméně použitý algoritmus pro čištění stránky z fondu vyrovnávacích pamětí na disk.

Souhrn:

  • Existují tři typy architektury klientských serverů: 1) Sdílená paměť 2) TCP / IP 3) Pojmenované kanály
  • TDS, vyvinutý společností Sybase a nyní vlastněný společností Microsoft, je paket, který je zapouzdřen v síťových paketech pro přenos dat z klientského počítače na serverový počítač.
  • Relational Engine obsahuje tři hlavní komponenty:

    Analyzátor CMD: Je zodpovědný za syntaktickou a sémantickou chybu a nakonec vygeneruje strom dotazů.

    Optimalizátor: Úkolem optimalizátoru je najít nejlevnější, nikoli nejlepší, nákladově efektivní plán provádění.

    Spouštěč dotazů : Spouštěč dotazů volá metodu přístupu a poskytuje plán provádění pro logiku načítání dat požadovanou pro provedení.

  • Existují tři typy souborů Primární soubor, Sekundární soubor a Soubory protokolu.
  • Úložný modul: Má následující důležité součásti

    Metoda přístupu: Tato komponenta Určete, zda je dotazem příkaz Vybrat nebo Nevybrat. Podle toho vyvolá Buffer a Transfer Manager.

    Správce vyrovnávací paměti: Správce vyrovnávací paměti spravuje základní funkce pro mezipaměť plánu, analýzu dat a špinavou stránku.

    Správce transakcí: Správce nevybraných transakcí pomocí správců protokolů a zámků. Také usnadňuje důležitou implementaci protokolování Write Ahead a spisovatelů Lazy.