SQL Server Architecnologia (spiegato)

MS SQL Server è un'architettura client-server. Il processo di MS SQL Server inizia con l'applicazione client che invia una richiesta. SQL Server accetta, elabora e risponde alla richiesta con dati elaborati. Discutiamo in dettaglio l'intera architettura mostrata di seguito:

Come illustrato nel diagramma seguente, SQL Server contiene tre componenti principali Architecnologia:

  1. Livello protocollo
  2. Motore relazionale
  3. Motore di archiviazione
SQL Server Architectura
SQL Server Archidiagramma della struttura

Livello protocollo – SNI

IL LIVELLO PROTOCOLLO MS SQL SERVER supporta 3 tipi di server client Architectura. Inizieremo con “Tre tipi di client server Architecnologia” che MS SQL Server supporta.

Memoria condivisa

Riconsideriamo uno scenario di conversazione mattutina.

Livello protocollo - SNI

MAMMA e TOM – Qui Tom e sua mamma, erano nello stesso posto logico, cioè a casa loro. Tom ha potuto chiedere il caffè e la mamma ha potuto servirlo caldo.

SERVER MS SQL – Qui MS SQL il server fornisce PROTOCOLLO DI MEMORIA CONDIVISA. Qui CLIENTE che a MS SQL server eseguito sulla stessa macchina. Entrambi possono comunicare tramite il protocollo di memoria condivisa.

Analogia: Consente di mappare le entità nei due scenari precedenti. Possiamo facilmente mappare Tom al client, Mom al server SQL, Home alla macchina e la comunicazione verbale al protocollo di memoria condivisa.

Dal desk di configurazione e installazione:

Per la connessione al DB locale – In Studio di gestione SQL, L'opzione "Nome server" potrebbe essere

""

“ospite locale”

"127.0.0.1"

“Macchina\Istanza”

Livello protocollo - SNI

TCP / IP

Consideriamo ora che la sera Tom è in vena di festeggiare. Vuole ordinare un caffè in un noto bar. La caffetteria si trova a 10 km da casa sua.

TCP / IP

Qui Tom e Starbuck si trovano in luoghi fisici diversi. Tom a casa e Starbucks nell'affollato mercato. Stanno comunicando tramite la rete cellulare. Allo stesso modo, MS SQL SERVER offre la possibilità di interagire tramite Protocollo TCP / IP, dove CLIENT e MS SQL Server sono remoti tra loro e installati su una macchina separata.

Analogia: Consente di mappare le entità nei due scenari precedenti. Possiamo facilmente mappare Tom al cliente, Starbuck al server SQL, la casa/il mercato alla posizione remota e infine la rete cellulare al protocollo TCP/IP.

Note dal desk di Configurazione/installazione:

  • In SQL Management Studio – Per la connessione tramite TCP\IP, l'opzione "Nome server" deve essere "Macchina\Istanza del server".
  • Il server SQL utilizza la porta 1433 in TCP/IP.

TCP / IP

Named Pipes

Finalmente la sera, Tom voleva prendere un tè verde chiaro che la sua vicina Sierra prepara molto bene.

Named Pipes

Qui Tom e la sua prossimo, Sierra, sono nella stessa cosa Fisico posizione, essendo vicini l'uno dell'altro. Stanno comunicando tramite Rete interna. Analogamente, SERVER MSSQL fornisce la possibilità di interagire tramite il Pipa denominata protocollo. Qui il CLIENTE e SERVER MSSQL sono in connessione tramite LAN.

Analogia: Consente di mappare le entità nei due scenari precedenti. Possiamo facilmente mappare Tom su Client, Sierra su SQL server, Neighbor su LAN e infine Intra network su Named Pipe Protocol.

Note dal desk di Configurazione/installazione:

  • Per la connessione tramite Named Pipe. Questa opzione è disabilitata per impostazione predefinita e deve essere abilitata da Gestione configurazione SQL.

Cos'è TDS?

Ora sappiamo che esistono tre tipi di Client-Server Architecture, diamo uno sguardo a TDS:

  • TDS sta per Tabular Data Stream.
  • Tutti e 3 i protocolli utilizzano pacchetti TDS. TDS è incapsulato nei pacchetti di rete. Ciò consente il trasferimento dei dati dalla macchina client alla macchina server.
  • TDS è stato sviluppato inizialmente da Sybase e ora è di proprietà di Microsoft

Motore relazionale

Il motore relazionale è noto anche come Query Processor. Ha il SQL Server componenti che determinano esattamente cosa deve fare una query e come può essere eseguita al meglio. È responsabile dell'esecuzione delle query dell'utente richiedendo dati dal motore di archiviazione ed elaborando i risultati restituiti.

Come illustrato nel ArchiDiagramma strutturale ci sono 3 componenti principali del Motore Relazionale. Studiamo i componenti nel dettaglio:

Analizzatore CMD

I dati una volta ricevuti dal livello protocollo vengono quindi passati al motore relazionale. “Paser CMD” è il primo componente del Motore Relazionale a ricevere i dati della Query. Il compito principale di CMD Parser è verificare la query Errore sintattico e semantico. Infine, è genera un albero delle query. Discutiamo in dettaglio.

Analizzatore CMD

Controllo sintattico:

  • Come ogni altro linguaggio di programmazione, anche MS SQL ha un set predefinito di parole chiave. Inoltre, SQL Server ha una propria grammatica che SQL Server comprende.
  • SELECT, INSERT, UPDATE e molti altri appartengono agli elenchi di parole chiave predefinite di MS SQL.
  • CMD Parser esegue il controllo sintattico. Se l'input degli utenti non segue queste regole sintattiche o grammaticali, esso restituisce un errore.

Esempio: Diciamo che un russo è andato in un ristorante giapponese. Ordina fast food in lingua russa. Purtroppo il cameriere capisce solo il giapponese. Quale sarebbe il risultato più evidente?

La risposta è: il cameriere non è in grado di elaborare ulteriormente l'ordine.

Non dovrebbero esserci deviazioni nella grammatica o nella lingua accettate dal server SQL. Se ce ne sono, il server SQL non può elaborarlo e quindi restituirà un messaggio di errore.

Impareremo di più sulle query MS SQL nei prossimi tutorial. Tuttavia, considera di seguito la sintassi delle query di base come

SELECT * from <TABLE_NAME>;

Ora, per avere un'idea di cosa fa la sintassi, diciamo se l'utente esegue la query di base come di seguito:

SELECR * from <TABLE_NAME>

Tieni presente che invece di "SELECT" l'utente ha digitato "SELECR".

Risultato: THE CMD Parser analizzerà questa istruzione e genererà il messaggio di errore. Poiché "SELECR" non segue il nome e la grammatica della parola chiave predefinita. Qui CMD Parser si aspettava "SELECT".

Controllo semantico:

  • Questo viene eseguito da Normalizer.
  • Nella sua forma più semplice, controlla se il nome della colonna e il nome della tabella interrogata esistono nello schema. E se esiste, associalo a Query. Questo è anche noto come Rilegatura.
  • La complessità aumenta quando le query utente contengono VIEW. Normalizer esegue la sostituzione con la definizione della vista memorizzata internamente e molto altro.

Capiamolo con l'aiuto dell'esempio seguente:

SELECT * from USER_ID

Risultato: THE CMD Parser analizzerà questa istruzione per il controllo semantico. Il parser genererà un messaggio di errore poiché Normalizer non troverà la tabella richiesta (USER_ID) poiché non esiste.

Crea albero delle query:

  • Questo passaggio genera un diverso albero di esecuzione in cui è possibile eseguire la query.
  • Si noti che tutti i diversi alberi hanno lo stesso output desiderato.

Optimizer

Il lavoro dell'ottimizzatore è creare un piano di esecuzione per la query dell'utente. Questo è il piano che determinerà come verrà eseguita la query dell'utente.

Tieni presente che non tutte le query sono ottimizzate. L'ottimizzazione viene eseguita per i comandi DML (Data Modification Language) come SELECT, INSERT, DELETE e UPDATE. Tali query vengono prima contrassegnate e quindi inviate all'ottimizzatore. I comandi DDL come CREATE e ALTER non sono ottimizzati, ma sono invece compilati in un modulo interno. Il costo delle query viene calcolato in base a fattori quali l'utilizzo della CPU, l'utilizzo della memoria e le esigenze di input/output.

Il ruolo dell'ottimizzatore è trovare il file piano di esecuzione più economico, non il migliore ed economicamente vantaggioso.

Prima di entrare nei dettagli più tecnici dell'ottimizzatore, considera l'esempio di vita reale riportato di seguito:

Esempio:

Diciamo che vuoi aprire un conto bancario online. Conosci già una banca che impiega un massimo di 2 giorni per aprire un conto. Ma hai anche un elenco di altre 20 banche, che potrebbero richiedere o meno meno di 2 giorni. Puoi iniziare a collaborare con queste banche per determinare quali banche impiegano meno di 2 giorni. Ora, potresti non trovare una banca che impiega meno di 2 giorni e si perde ulteriore tempo a causa dell'attività di ricerca stessa. Sarebbe stato meglio aprire un conto presso la prima banca stessa.

Conclusione: È più importante selezionare con saggezza. Per essere precisi, scegliere quale l'opzione è la migliore, non la più economica.

Allo stesso modo, MS SQL Optimizer funziona su algoritmi esaustivi/euristici integrati. L'obiettivo è ridurre al minimo il tempo di esecuzione delle query. Tutti gli algoritmi dell'ottimizzatore lo sono proprietà di Microsoft e un segreto. Sebbene il, di seguito sono riportati i passaggi di alto livello eseguiti da MS SQL Optimizer. Le ricerche di ottimizzazione seguono tre fasi come mostrato nel diagramma seguente:

Optimizer

Fase 0: ricerca del piano banale:

  • Questo è anche noto come Fase di pre-ottimizzazione.
  • In alcuni casi, potrebbe esserci un solo piano pratico e realizzabile, noto come piano banale. Non c'è bisogno di creare un piano ottimizzato. Il motivo è che cercare di più porterebbe a trovare lo stesso piano di esecuzione in fase di esecuzione. Anche questo con il costo aggiuntivo della ricerca di un piano ottimizzato che non era affatto necessario.
  • Se non è stato trovato alcun piano Banale, allora 1st Inizia la fase.

Fase 1: ricerca dei piani di elaborazione delle transazioni

  • Ciò include la ricerca di Piano semplice e complesso.
  • Ricerca del piano semplice: i dati passati della colonna e dell'indice coinvolti nella query verranno utilizzati per l'analisi statistica. Questo di solito consiste ma non è limitato a un indice per tabella.
  • Tuttavia, se il piano semplice non viene trovato, viene ricercato un piano più complesso. Ciò comporta un indice multiplo per tabella.

Fase 2: elaborazione parallela e ottimizzazione.

  • Se nessuna delle strategie di cui sopra funziona, Optimizer cerca le possibilità di elaborazione parallela. Ciò dipende dalle capacità di elaborazione e dalla configurazione della Macchina.
  • Se ciò non è ancora possibile, inizia la fase finale di ottimizzazione. Ora, l'obiettivo finale dell'ottimizzazione è trovare tutte le altre opzioni possibili per eseguire la query nel modo migliore. Fase finale di ottimizzazione Algorithms sono Microsoft Proprietà.

Esecutore di interrogazioni

Esecutore di interrogazioni

Chiamate dell'esecutore di query Metodo di accesso. Fornisce un piano di esecuzione per la logica di recupero dei dati richiesta per l'esecuzione. Una volta ricevuti i dati da Storage Engine, il risultato viene pubblicato nel livello Protocol. Infine, i dati vengono inviati all'utente finale.

Motore di archiviazione

Il lavoro del motore di archiviazione è archiviare i dati in un sistema di archiviazione come disco o SAN e recuperare i dati quando necessario. Prima di approfondire l'argomento Storage Engine, diamo un'occhiata a come vengono archiviati i dati Banca Dati che a tipo di file disponibili.

File di dati ed estensione:

Motore di archiviazione

File di dati, archivia fisicamente i dati sotto forma di pagine di dati, ciascuna pagina di dati ha una dimensione di 8 KB, formando l'unità di archiviazione più piccola in SQL Server. Queste pagine di dati sono raggruppate logicamente per formare estensioni. A nessun oggetto viene assegnata una pagina in SQL Server.

La manutenzione dell'oggetto viene eseguita tramite le estensioni. La pagina ha una sezione chiamata Intestazione pagina con una dimensione di 96 byte, che contiene le informazioni sui metadati sulla pagina come Tipo di pagina, Numero di pagina, Dimensione dello spazio utilizzato, Dimensione dello spazio libero e Puntatore alla pagina successiva e alla pagina precedente , eccetera.

Tipi di file

Tipi di file

  1. Fascicolo primario
  • Ogni database contiene un file primario.
  • Memorizza tutti i dati importanti relativi a tabelle, visualizzazioni, trigger, ecc.
  • L'estensione è .mdf di solito ma può avere qualsiasi estensione.
  1. Fascicolo secondario
  • Il database può contenere o meno più file secondari.
  • Questo è facoltativo e contiene dati specifici dell'utente.
  • L'estensione è .naf di solito ma può avere qualsiasi estensione.
  1. File di registro
  • Noto anche come log Write ahead.
  • L'estensione è .ldf
  • Utilizzato per la gestione delle transazioni.
  • Questo viene utilizzato per il ripristino da eventuali istanze indesiderate. Esegui l'importante attività di rollback delle transazioni senza impegno.

Storage Engine ha 3 componenti; esaminiamoli in dettaglio.

Metodo di accesso

Funziona come un'interfaccia tra l'esecutore della query e Buffer Gestore/registri delle transazioni.

Il metodo di accesso in sé non esegue alcuna esecuzione.

La prima azione è determinare se la query è:

  1. Seleziona istruzione (DDL)
  2. Dichiarazione di non selezione (DDL e DML)

A seconda del risultato, il metodo di accesso esegue i seguenti passaggi:

  1. Se la domanda è DDL, istruzione SELECT, la query viene passata al Buffer direttore per ulteriori elaborazioni.
  2. E se chiedi se DDL, istruzione NON-SELECT, la query viene passata a Transaction Manager. Ciò include principalmente l'istruzione UPDATE.

Metodo di accesso

Buffer direttore

Buffer manager gestisce le funzioni principali per i moduli seguenti:

  • Piano di cache
  • Analisi dei dati: Buffer cache e archiviazione dati
  • Pagina sporca

Impareremo il Piano, Buffer e Cache dati in questa sezione. Tratteremo le pagine sporche nella sezione Transazioni.

Buffer direttore

Piano di cache

  • Piano di query esistente: Il gestore buffer controlla se il piano di esecuzione è presente nella cache del piano archiviata. In caso affermativo, vengono utilizzati la cache del piano di query e la cache dei dati associata.
  • Piano cache per la prima volta: Da dove proviene la cache del piano esistente? Se il piano di esecuzione della query per la prima volta viene eseguito ed è complesso, ha senso archiviarlo nella cache del piano. Ciò garantirà una disponibilità più rapida quando il server SQL riceverà la stessa query la prossima volta. Quindi, non è altro che la query stessa che l'esecuzione del piano viene archiviata se viene eseguita per la prima volta.

Analisi dei dati: Buffer cache e archiviazione dati

Buffer manager fornisce l'accesso ai dati richiesti. Di seguito sono possibili due approcci a seconda che i dati esistano o meno nella cache dei dati:

Buffer Cache – Analisi soft:

Buffer Cache: analisi morbida

Buffer Il manager cerca i dati in Buffer nella cache dei dati. Se presenti, questi dati vengono utilizzati da Query Executor. Ciò migliora le prestazioni poiché il numero di operazioni I/O viene ridotto durante il recupero dei dati dalla cache rispetto al recupero dei dati dall'archivio dati.

Archiviazione dei dati – Analisi difficile:

Archiviazione dei dati: analisi difficile

Se i dati non sono presenti in Buffer Manager rispetto a quello richiesto I dati vengono cercati in Archiviazione dati. Memorizza anche i dati nella cache dei dati per un uso futuro.

Pagina sporca

Viene archiviato come logica di elaborazione di Transaction Manager. Impareremo in dettaglio nella sezione Gestore transazioni.

Responsabile delle transazioni

Responsabile delle transazioni

Il Gestore transazioni viene richiamato quando il metodo di accesso determina che Query è un'istruzione Non-Select.

Log Manager Log

  • Log Manager tiene traccia di tutti gli aggiornamenti effettuati nel sistema tramite i registri nei registri delle transazioni.
  • I registri hanno Numero di sequenza dei log con l'ID della transazione e il record di modifica dei dati.
  • Questo viene utilizzato per tenere traccia di Transazione impegnata e rollback della transazione.

Gestore delle serrature

  • Durante la transazione, i dati associati in Data Storage sono nello stato di blocco. Questo processo è gestito da Lock Manager.
  • Questo processo garantisce coerenza e isolamento dei dati. Conosciute anche come proprietà ACIDO.

Processo di esecuzione

  • Log Manager avvia la registrazione e Lock Manager blocca i dati associati.
  • La copia dei dati viene mantenuta nel file Buffer cache.
  • Una copia dei dati che si suppone debbano essere aggiornati viene mantenuta nel buffer di registro e tutti gli eventi aggiornano i dati nel buffer di dati.
  • Le pagine che memorizzano i dati sono anche conosciute come Pagine sporche.
  • Checkpoint e registrazione write-ahead: Questo processo viene eseguito e contrassegna tutta la pagina da Dirty Pages a Disk, ma la pagina rimane nella cache. La frequenza è di circa 1 corsa al minuto. Ma la pagina viene prima inviata alla pagina Dati del file di registro da Buffer tronco d'albero. Questo è noto come Scrivi in ​​anticipo la registrazione.
  • Scrittore pigro: La pagina sporca può rimanere in memoria. Quando il server SQL osserva un carico enorme e Buffer è necessaria memoria per una nuova transazione, libera le pagine sporche dalla cache. Funziona su LRU – Algoritmo meno utilizzato di recente per la pulizia della pagina dal buffer pool al disco.

Sommario

  • Tre tipi di server client Archiesistono: 1) Memoria condivisa 2) TCP/IP 3) Named Pipes
  • TDS, sviluppato da Sybase e ora di proprietà di Microsoft, è un pacchetto incapsulato in pacchetti di rete per il trasferimento dei dati dalla macchina client alla macchina server.
  • Il motore relazionale contiene tre componenti principali:Analizzatore CMD: Questo è responsabile dell'errore sintattico e semantico e infine genera un albero delle query.Ottimizzatore: Il ruolo dell'ottimizzatore è trovare il piano di esecuzione più economico, non il migliore ed economicamente vantaggioso.

    Esecutore di query: L'esecutore della query chiama il metodo di accesso e fornisce il piano di esecuzione per la logica di recupero dei dati richiesta per l'esecuzione.

  • Esistono tre tipi di file: file primario, file secondario e file di registro.
  • Motore di archiviazione: ha i seguenti componenti importantiMetodo di accesso: Questo componente Determina se la query è un'istruzione Select o Non-Select. Invoca Buffer e Transfer Manager di conseguenza.Buffer Allenatore: Buffer manager gestisce le funzioni principali per Plan Cache, Data Parsing e Dirty Page.

    Responsabile delle transazioni: Gestisce le transazioni non selezionate con l'aiuto dei gestori di registri e blocchi. Inoltre, facilita l'importante implementazione della registrazione Write Ahead e degli scrittori Lazy.

Scopri di più leggi di più