SQL Server Architextura (explicado)

⚡ Resumo Inteligente

SQL Server ArchiA arquitetura segue um modelo cliente-servidor organizado em três camadas principais: Camada de Protocolo para comunicação em rede, Motor Relacional para processamento de consultas e Motor de Armazenamento para gerenciamento e recuperação de dados.

  • ✅ Seleção de protocolo: Escolha Memória Compartilhada para conexões locais, TCP/IP para acesso remoto ou Named Pipes para ambientes de LAN, com base na topologia da sua rede.
  • 🔥 Processamento de consulta: O mecanismo relacional analisa a sintaxe, otimiza os planos de execução por meio de análise de custos multifásica e delega a recuperação de dados ao mecanismo de armazenamento.
  • 📦 Gerenciamento de armazenamento: Os arquivos de dados usam páginas de 8 KB agrupadas em extensões, com Buffer Gerenciador de cache e Gerenciador de transações, garantindo a conformidade com ACID.
  • 🔒 Otimização de performance: Buffer O cache reduz a E/S ao servir dados acessados ​​com frequência a partir da memória, enquanto o cache de planos armazena planos de execução para reutilização de consultas.
  • ⚡ transação Integrity: Registro antecipado de escrita e preguiçoso Writer Os processos trabalham em conjunto para garantir a durabilidade dos dados e o gerenciamento eficiente da memória.
  • 📋 Fluxo de dados: Cada consulta passa pela codificação de pacotes TDS, análise de comandos (CMD), otimização, execução e interação com a camada de armazenamento antes que os resultados retornem ao cliente.

SQL Server Archiarquitetura

O MS SQL Server possui uma arquitetura cliente-servidor. O processo do MS SQL Server inicia-se quando a aplicação cliente envia uma solicitação. O SQL Server aceita, processa e responde à solicitação com os dados processados. Vamos discutir em detalhes toda a arquitetura mostrada abaixo:

Conforme ilustrado no diagrama abaixo, o SQL Server possui três componentes principais. Architextura:

  1. Camada de protocolo
  2. Motor Relacional
  3. Motor de Armazenamento

SQL Server ArchiDiagrama de arquitetura mostrando os componentes da Camada de Protocolo, do Motor Relacional e do Motor de Armazenamento.

Camada de protocolo – SNI

A camada de protocolo do SQL Server, também conhecida como Interface de Rede do Servidor (SNI), suporta três tipos de arquitetura cliente-servidor. Cada protocolo atende a um cenário de rede diferente. Compreender esses protocolos é essencial antes de explorar como as consultas são processadas internamente.

Memoria compartilhada

Imagine uma conversa matinal. Tom e sua mãe estão no mesmo lugar, em casa. Tom pede um café e a mãe o serve imediatamente. De forma semelhante, o SQL Server oferece o protocolo de Memória Compartilhada quando o cliente e o servidor são executados na mesma máquina. Ambos se comunicam por meio da memória compartilhada, sem qualquer sobrecarga de rede.

Diagrama do protocolo de memória compartilhada mostrando o cliente e o SQL Server na mesma máquina.

Analogia: Tom corresponde ao Cliente, Mom ao SQL Server, Home à Máquina e a comunicação verbal ao protocolo de Memória Compartilhada.

Mapa de analogia do protocolo de memória compartilhadaping cliente para Tom e SQL Server para Mom

Notas de configuração: In SQL Management StudioA opção “Nome do servidor” para uma conexão local pode ser “.”, “localhost”, “127.0.0.1” ou “Máquina\Instância”.

TCP / IP

Agora imagine que Tom quer um café de uma cafeteria localizada a 10 km de distância. Tom está em casa e a cafeteria fica em um mercado movimentado. Eles se comunicam por meio de uma rede celular. Da mesma forma, o SQL Server fornece a Protocolo TCP / IP quando o cliente e o SQL Server estão em máquinas separadas, conectadas por uma rede.

Diagrama do protocolo TCP/IP mostrando o cliente e o SQL Server em máquinas remotas.

Analogia: Tom representa o Cliente, a cafeteria representa o SQL Server, a casa e o mercado representam locais remotos e a rede celular representa o protocolo TCP/IP.

Mapa de analogia do protocolo TCP/IPping comunicação remota cliente-servidor

Notas de configuração: No SQL Server Management Studio, a opção "Nome do Servidor" para uma conexão TCP/IP deve ser "Máquina\Instância do servidor". O SQL Server usa a porta 1433 por padrão para conexões TCP/IP.

Tubulações nomeadas

Por fim, Tom quer chá verde da sua vizinha Sierra. Eles estão no mesmo local físico, por serem vizinhos, e se comunicam por meio de uma rede interna. Da mesma forma, o SQL Server oferece o protocolo Named Pipe quando o cliente e o servidor estão conectados por meio de uma Rede Local (LAN).

Diagrama do protocolo Named Pipes para conexões SQL Server em rede local (LAN).

Analogia: Tom corresponde ao Cliente, Sierra corresponde ao SQL Server, ser vizinho corresponde à LAN e a rede interna corresponde ao protocolo Named Pipe.

Notas de configuração: O recurso Named Pipes está desativado por padrão e deve ser ativado por meio do SQL Server Configuration Manager.

O que é TDS?

Agora que os três tipos de arquitetura cliente-servidor estão claros, vejamos o TDS:

  • TDS significa Fluxo de Dados Tabulares.
  • Todos os três protocolos utilizam pacotes TDS.
  • O TDS é encapsulado em pacotes de rede, permitindo a transferência de dados da máquina cliente para a máquina servidora.
  • O TDS foi desenvolvido inicialmente pela Sybase e agora pertence à Microsoft.

A tabela a seguir compara os três protocolos de conexão do SQL Server:

Característica Memoria compartilhada TCP / IP Tubulações nomeadas
Âmbito da rede Mesma máquina Remoto (WAN/Internet) Apenas LAN
Porta padrão N/D 1433 445
Desempenho Mais rápido (sem sobrecarga de rede) Bom (otimizado para WAN) Bom (otimizado para LAN)
Ativado por padrão Sim Sim Não
Melhor Caso de Uso Desenvolvimento e testes locais Acesso remoto à produção Ambientes de LAN confiáveis

Com a camada de protocolo lidando com a comunicação de rede, o próximo passo na arquitetura do SQL Server é processar a própria consulta. É aqui que o mecanismo relacional entra em ação.

Motor Relacional

O Mecanismo Relacional também é conhecido como Processador de Consultas. Ele contém os componentes do SQL Server que determinam o que uma consulta precisa fazer e como ela pode ser executada da maneira mais eficiente. É responsável por executar as consultas do usuário, solicitando dados do Mecanismo de Armazenamento e processando os resultados retornados.

Conforme ilustrado no diagrama arquitetônico, o Motor Relacional possui três componentes principais:

Analisador CMD

Os dados recebidos da Camada de Protocolo são passados ​​para o Motor Relacional. O Analisador CMD é o primeiro componente a receber os dados da consulta. Sua principal função é verificar a consulta em busca de erros sintáticos e semânticos e, em seguida, gerar uma árvore de consulta.

Componente CMD Parser mostrando verificação sintática, verificação semântica e geração de árvore de consulta.

Verificação sintática: Assim como qualquer outra linguagem de programação, o SQL Server possui um conjunto predefinido de palavras-chave e regras gramaticais. SELECT, INSERT, UPDATE e muitas outras pertencem à lista de palavras-chave predefinidas. O analisador CMD verifica se a entrada segue essas regras. Se a entrada do usuário se desviar da sintaxe esperada, o analisador retorna um erro.

Exemplo: Imagine um russo entrando em um restaurante japonês e fazendo um pedido em russo. O garçom só entende japonês e não consegue processar o pedido. Da mesma forma, se um usuário digitar “SELECR” em vez de “SELECT”, o analisador de comando (CMD Parser) retorna um erro porque não reconhece a palavra-chave.

Verificação semântica: Essa operação é realizada pelo Normalizador. Ele verifica se os nomes das colunas, nomes das tabelas e outros objetos consultados realmente existem no esquema. Se existirem, o Normalizador os vincula à consulta. Esse processo também é conhecido como Vinculação. Quando as consultas do usuário contêm uma VIEW, o Normalizador a substitui pela definição da view armazenada internamente.

Exemplo: Corrida SELECT * from USER_ID Isso faria com que o analisador gerasse um erro durante a verificação semântica se a tabela USER_ID não existisse no banco de dados.

Criar árvore de consulta: Esta etapa gera diferentes árvores de execução que representam as várias maneiras pelas quais uma consulta pode ser executada. Todas as árvores produzem a mesma saída desejada.

Optimizer

O otimizador cria um plano de execução para a consulta do usuário. Esse plano determina como a consulta será executada. Nem todas as consultas são otimizadas. A otimização se aplica a comandos DML (Linguagem de Modificação de Dados), como SELECT, INSERT, DELETE e UPDATE. Comandos DDL, como CREATE e ALTER, não são otimizados, mas compilados em um formato interno.

Fluxo de trabalho do SQL Server Optimizer mostrando três fases de otimização.

O custo da consulta é calculado com base em fatores como uso de CPU, uso de memória e necessidades de entrada/saída. O papel do otimizador é encontrar o plano de execução mais econômico, não necessariamente o melhor em todos os aspectos.

Exemplo: Imagine que você queira abrir uma conta bancária online. Um banco leva no máximo 2 dias. Você também tem uma lista de outros 20 bancos que podem ou não levar menos tempo. Pesquisar em todos os 20 bancos pode não encontrar uma opção mais rápida, e a própria pesquisa consome tempo. Teria sido melhor optar pelo primeiro banco. Da mesma forma, o otimizador de SQL usa algoritmos exaustivos e heurísticos para minimizar o tempo de execução da consulta.

O otimizador realiza buscas em três fases:

Fase 0: Busca por um Plano Trivial

Esta é a fase de pré-otimização. Para algumas consultas, existe apenas um plano prático, conhecido como plano trivial. Não há necessidade de pesquisar mais a fundo, pois qualquer busca adicional encontraria o mesmo plano de execução a um custo extra.

Fase 1: Busca por Planos de Processamento de Transações

Isso inclui a busca por planos simples e complexos. A busca por planos simples utiliza análise estatística de dados de colunas e índices, geralmente restrita a um índice por tabela. Se nenhum plano simples for encontrado, uma busca mais complexa, envolvendo múltiplos índices por tabela, é realizada.

Fase 2: Processamento Paralelo e Otimização

Se as estratégias anteriores não produzirem um plano adequado, o Otimizador busca possibilidades de processamento paralelo com base nas capacidades de processamento da máquina. Se o processamento paralelo não for possível, inicia-se uma fase final de otimização que utiliza todas as opções restantes para encontrar o melhor plano de execução possível.

Executor de Consultas

O Executor de Consultas chama o Método de Acesso no Mecanismo de Armazenamento. Ele fornece um plano de execução contendo a lógica de busca de dados necessária para a execução. Assim que os dados são recebidos do Mecanismo de Armazenamento, o resultado é publicado na Camada de Protocolo e enviado ao usuário final.

O executor de consultas passa o plano de execução para o método de acesso no mecanismo de armazenamento.

Após o mecanismo relacional determinar como executar uma consulta, o mecanismo de armazenamento lida com as operações físicas de dados. Essa camada gerencia como os dados são armazenados, colocados em cache e recuperados do disco.

Motor de Armazenamento

O mecanismo de armazenamento é responsável por armazenar dados em um sistema de armazenamento, como um disco ou SAN, e recuperá-los quando necessário. Antes de examinar os componentes do mecanismo de armazenamento, é importante entender como os dados são armazenados fisicamente.

Arquitetura do mecanismo de armazenamento mostrando o método de acesso. Buffer Gerente e Gerente de Transações

Arquivos de dados e extensões

Os arquivos de dados armazenam fisicamente os dados na forma de páginas de dados, com cada página tendo um tamanho de 8 KB. Esta é a menor unidade de armazenamento em SQL ServerAs páginas de dados são agrupadas logicamente em extensões. Nenhum objeto é atribuído diretamente a uma página individual; em vez disso, a manutenção é feita por meio de extensões. Cada página possui um cabeçalho de página (96 bytes) contendo metadados como tipo de página, número da página, espaço usado, espaço livre e ponteiros para as páginas seguinte e anterior.

Tipos de arquivo

Tipos de arquivos do SQL Server, incluindo arquivos primários, secundários e de log.

Arquivo principal: Todo banco de dados contém um arquivo principal. Ele armazena todos os dados importantes relacionados a tabelas, visualizações, gatilhos e outros objetos. A extensão geralmente é .mdf, mas pode ser qualquer outra.

Arquivo secundário: Um banco de dados pode ou não conter vários arquivos secundários. Estes são opcionais e contêm dados específicos do usuário. A extensão normalmente é .ndf, mas pode ser qualquer extensão.

Arquivo de registro: Também conhecidos como Write-Ahead Logs (Logs de Gravação Antecipada). A extensão é .ldf. Os arquivos de log são usados ​​para gerenciamento de transações, recuperação de instâncias indesejadas e reversão de transações não confirmadas.

O mecanismo de armazenamento possui três componentes principais. Cada um desempenha um papel específico no gerenciamento do acesso e da integridade dos dados.

Método de Acesso

O método de acesso atua como uma interface entre o executor de consultas e o Buffer Gerenciador de Logs de Transações. Ele não executa a consulta em si, mas determina o tipo de consulta:

  • Se a consulta for uma Instrução SELECT (DML), é passado para o Buffer Gerente para processamento posterior.
  • Se a consulta for uma Instruções que não sejam SELECT (DDL e DML), é passado para o Gerenciador de Transações. Isso inclui principalmente instruções UPDATE, INSERT e DELETE.

Roteamento de métodos de acesso para consultas SELECT Buffer Gerente e Não-SELECT para Gerente de Transações

Buffer Manager

O Buffer O gerenciador administra as funções principais do Cache de Planos, análise de dados e tratamento de páginas modificadas.

Buffer Arquitetura do gerenciador mostrando o cache de planos, Buffer Interação entre cache e armazenamento de dados

Cache do plano

Plano de consulta existente: O Buffer O gerenciador verifica se o plano de execução existe no cache de planos armazenado. Se existir, o plano de consulta em cache e seu cache de dados associado são usados ​​diretamente.

Plano de cache para iniciantes: Se um plano de execução de consulta inicial for complexo, ele será armazenado no Cache de Planos. Isso garante maior disponibilidade na próxima vez que o SQL Server receber a mesma consulta.

Análise de dados: Buffer Armazenamento de cache e dados

O Buffer O gerenciador fornece acesso aos dados necessários. Duas abordagens são possíveis, dependendo da existência de dados no cache:

Buffer Cache – Análise sintática suave

O Buffer O gerente procura dados no Buffer Cache. Se os dados estiverem presentes, o Executor de Consultas os utiliza diretamente. Isso melhora o desempenho, pois buscar dados do cache requer menos operações de E/S em comparação com a busca no armazenamento em disco.

Buffer Fluxo de análise sintática suave em cache, onde os dados são recuperados do cache de memória.

Armazenamento de dados – Análise sintática complexa

Se os dados não estiverem presentes no Buffer Em cache, os dados necessários são pesquisados ​​no armazenamento de dados em disco. Os dados são então armazenados em cache para uso futuro.

Fluxo de análise sintática complexa, onde os dados são buscados no armazenamento em disco e armazenados em cache.

Gerente de Transação

O Gerenciador de Transações é invocado quando o Método de Acesso determina que uma consulta não é uma instrução SELECT. Ele garante a consistência e a durabilidade dos dados por meio de vários subcomponentes:

Gerenciador de transações mostrando o Gerenciador de logs, o Gerenciador de bloqueios e o fluxo do processo de execução.

Gerenciador de registros

O Gerenciador de Logs mantém track de todas as atualizações realizadas no sistema por meio de registros armazenados nos Logs de Transações. Cada entrada de log contém um Número de Sequência de Log, juntamente com o ID da Transação e o Registro de Modificação de Dados. Este mecanismo tracks confirmou e reverteu transações.

Gerenciador de bloqueio

Durante uma transação, os dados associados no armazenamento entram em um estado bloqueado. O Gerenciador de Bloqueios lida com esse processo, garantindo a consistência e o isolamento dos dados. Essas propriedades também são conhecidas como ACID (Anti-Integrated, Disclosure and Acids).Atomgelo, consistência, isolamento, durabilidade).

Processo de Execução

O processo de execução segue estes passos:

  1. O Gerenciador de Logs inicia o registro de logs e o Gerenciador de Bloqueios bloqueia os dados associados.
  2. Uma cópia dos dados é mantida no Buffer Escondido.
  3. Uma cópia dos dados a serem atualizados é mantida no Log. Buffere todos os eventos atualizam os dados nos Dados Buffer.
  4. Páginas que armazenam dados modificados são conhecidas como Páginas sujas.

Registro de ponto de verificação e gravação antecipada

O processo de checkpoint é executado aproximadamente uma vez por minuto e marca todas as páginas sujas para gravação em disco. No entanto, a página é primeiro movida para a página de dados do arquivo de log a partir do Buffer Log. Esse mecanismo é conhecido como Write-Ahead Logging (Logging antecipado). As páginas sujas permanecem no cache mesmo depois de serem gravadas em disco.

Preguiçoso Writer

Quando o SQL Server detecta uma carga elevada e precisa de memória de buffer para novas transações, ele libera páginas sujas do cache. O Lazy Writer Opera com base no algoritmo LRU (Least Recently Used - Menos Recentemente Usado) para limpar páginas do buffer pool e gravá-las em disco.

Como o SQL Server processa uma consulta de ponta a ponta

Compreender cada camada individualmente é valioso, mas ver como elas funcionam em conjunto esclarece o panorama completo. Quando um aplicativo cliente envia uma consulta SQL, a seguinte sequência ocorre:

O Camada de protocolo Recebe a solicitação via memória compartilhada, TCP/IP ou Named Pipes e a encapsula em um pacote TDS. Motor Relacional Em seguida, o processo assume o controle: o analisador CMD verifica a sintaxe e a semântica, o otimizador gera o plano de execução mais econômico e o executor de consultas inicia a recuperação de dados.

O executor de consultas chama o Motor de armazenamento Método de acesso, que encaminha consultas SELECT para o Buffer Consultas de gerenciamento e modificação para o Gerenciador de Transações. Buffer O gerenciador verifica o cache do plano e Buffer Primeiro, o sistema armazena os dados em cache (análise sintática suave). Se os dados não estiverem em cache, realiza uma leitura do disco (análise sintática completa). Para operações de gravação, o Gerenciador de Transações coordena o Gerenciador de Logs, o Gerenciador de Bloqueios e o processo de checkpoint para garantir a conformidade com os protocolos ACID.

Assim que o mecanismo de armazenamento retorna os dados solicitados, o mecanismo relacional formata o conjunto de resultados e a camada de protocolo o entrega de volta ao aplicativo cliente por meio do mesmo protocolo TDS.

Como escolher o protocolo correto para conexões com o SQL Server

A escolha do protocolo correto depende da relação física entre o cliente e o servidor, bem como dos requisitos de desempenho.

Usar memória compartilhada Quando a aplicação cliente é executada na mesma máquina que o SQL Server. Esta é a opção mais rápida, pois elimina toda a sobrecarga de rede. É ideal para desenvolvimento local, testes e implantações em uma única máquina.

Utilizar TCP/IP Quando o cliente e o servidor estão em máquinas diferentes conectadas por uma WAN ou pela internet, este é o protocolo mais comumente usado em ambientes de produção. O SQL Server utiliza a porta 1433 por padrão, e este protocolo suporta conexões criptografadas via TLS.

Use pipes nomeados Quando o cliente e o servidor estão na mesma LAN confiável e o desempenho em redes internas é uma prioridade, o recurso Named Pipes é desativado por padrão e deve ser ativado por meio do SQL Server Configuration Manager. Embora seja menos comum em implantações modernas, continua sendo útil para aplicações legadas de intranet.

Perguntas Frequentes

A arquitetura do SQL Server consiste em três camadas: a Camada de Protocolo (que lida com a comunicação de rede via Memória Compartilhada, TCP/IP ou Named Pipes), o Mecanismo Relacional (que processa consultas) e o Mecanismo de Armazenamento (que gerencia o armazenamento e a recuperação de dados).

TDS (Tabular Data Stream) é um protocolo usado pelos três métodos de conexão do SQL Server. Ele encapsula dados em pacotes de rede para transferência entre o cliente e o servidor. O TDS foi originalmente desenvolvido pela Sybase.

A análise sintática flexível recupera dados do Buffer O armazenamento em cache na memória resulta em uma execução mais rápida. A análise sintática completa ocorre quando os dados não estão em cache e precisam ser lidos do armazenamento em disco, exigindo mais operações de E/S.

O otimizador realiza uma busca em três fases: detecção de planos triviais, busca de planos de processamento de transações e otimização de processamento paralelo. Ele seleciona o plano mais econômico com base em fatores como CPU, memória e E/S.

Páginas sujas são páginas de dados no Buffer Cache que foi modificado, mas ainda não gravado em disco. O processo de checkpoint e Lazy. Writer Gerenciar a liberação periódica de páginas sujas para o armazenamento em disco.

O Write-Ahead Logging garante que as entradas do log de transações sejam gravadas em disco antes das páginas de dados reais. Isso garante a recuperação de dados em caso de falha do sistema e mantém a durabilidade das transações.

Sim. As ferramentas de gerenciamento de banco de dados com inteligência artificial podem analisar padrões de consulta, recomendar otimizações de índice, prever gargalos de recursos e automatizar tarefas de ajuste de desempenho que tradicionalmente exigem intervenção manual do DBA.

Plataformas baseadas em IA oferecem ajuste automático de consultas, planejamento preditivo de capacidade, detecção de anomalias e gerenciamento inteligente de cargas de trabalho. Esses recursos reduzem o esforço manual e ajudam os administradores a prevenir proativamente problemas de desempenho.

Resuma esta postagem com: