Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Camada de Protocolo
2. Mecanismo Relacional
3. Mecanismo de Armazenamento
Memoria compartilhada
Vamos reconsiderar um cenário de conversa matinal.
MOM e TOM – Aqui Tom e sua mãe, estavam no mesmo lugar lógico, ou seja, em
casa. Tom conseguiu pedir café e mamãe serviu quente.
Analogia: Permite mapear entidades nos dois cenários acima. Podemos facilmente
mapear Tom para Cliente, Mãe para servidor SQL, Casa para Máquina e Comunicação
Verbal para Protocolo de Memória Compartilhada.
Para conexão com o banco de dados local – no SQL Management Studio, a opção “Nome
do servidor” pode ser
“.”
"localhost"
“127.0.0.1”
“Máquina\Instância”
TCP/IP
Agora considere que à noite, Tom está no clima de festa. Ele quer um café encomendado
em uma cafeteria conhecida. A cafeteria está localizada a 10 km de sua casa.
Aqui, Tom e Starbuck estão em locais físicos diferentes. Tom em casa e Starbucks no
movimentado mercado. Eles estão se comunicando via rede celular. Da mesma forma,
MS SQL SERVER fornece a capacidade de interagir via protocolo TCP/IP, onde
CLIENT e MS SQL Server são remotos entre si e instalados em uma máquina separada.
Analogia: Permite mapear entidades nos dois cenários acima. Podemos mapear
facilmente o Tom para o cliente, o Starbuck para o servidor SQL, o local
doméstico/mercado para o local remoto e, finalmente, a rede celular para o protocolo
TCP/IP.
Pipes nomeados
Agora, finalmente à noite, Tom queria tomar um chá verde claro que sua vizinha Sierra
preparava muito bem.
Aqui , Tom e sua vizinha , Sierra, estão no mesmo local físico , sendo vizinhos um do
outro. Eles estão se comunicando via rede Intra. Da mesma forma, o MS SQL
SERVER fornece a capacidade de interagir por meio do protocolo Named Pipe . Aqui o
CLIENT e o MS SQL SERVER estão conectados via LAN .
Analogia: Permite mapear entidades nos dois cenários acima. Podemos mapear
facilmente o Tom para o cliente, o Sierra para o servidor SQL, o vizinho para a LAN e,
finalmente, a rede Intra para o Named Pipe Protocol.
Para conexão via pipe nomeado. Essa opção está desabilitada por padrão e
precisa ser habilitada pelo SQL Configuration Manager.
O que é TDS?
Agora que sabemos que existem três tipos de Arquitetura Cliente-Servidor, vamos dar
uma olhada no TDS:
Mecanismo Relacional
O Mecanismo Relacional também é conhecido como Processador de Consultas. Ele tem
os componentes do SQL Server que determinam exatamente o que uma consulta precisa
fazer e como ela pode ser feita da melhor maneira. Ele é responsável pela execução das
consultas do usuário solicitando dados do mecanismo de armazenamento e processando
os resultados que são retornados.
Analisador CMD
Os dados, uma vez recebidos da Camada de Protocolo, são passados para o Mecanismo
Relacional. O “CMD Parser” é o primeiro componente do Relational Engine a receber
os dados da Consulta. O principal trabalho do CMD Parser é verificar a consulta de erros
sintáticos e semânticos. Por fim, gera uma Query Tree . Vamos discutir em detalhes.
Verificação sintática:
Exemplo: digamos que um russo foi a um restaurante japonês. Ele pede fast food em
russo. Infelizmente, o garçom só entende japonês. Qual seria o resultado mais óbvio?
Não deve haver nenhum desvio na gramática ou linguagem que o servidor SQL aceita. Se
houver, o servidor SQL não poderá processá-lo e, portanto, retornará uma mensagem de
erro.
SELECT * de <TABLE_NAME>;
Agora, para ter a percepção do que a sintática faz, digamos se o usuário executar a query
básica abaixo:
SELECR * de <TABLE_NAME>
Observe que, em vez de 'SELECT', o usuário digitou "SELECR".
Resultado: o analisador CMD analisará esta instrução e lançará a mensagem de
erro. Como “SELECR” não segue o nome e a gramática predefinidos da palavra-
chave. Aqui CMD Parser estava esperando “SELECT”.
Verificação semântica:
SELECT * de USER_ID
Resultado: O analisador CMD analisará esta instrução para verificação semântica. O
analisador lançará uma mensagem de erro, pois o Normalizer não encontrará a tabela
solicitada (USER_ID), pois ela não existe.
Esta etapa gera diferentes árvores de execução nas quais a consulta pode ser
executada.
Observe que todas as diferentes árvores têm a mesma saída desejada.
Otimizador
O trabalho do otimizador é criar um plano de execução para a consulta do usuário. Este é
o plano que determinará como a consulta do usuário será executada.
Observe que nem todas as consultas são otimizadas. A otimização é feita para comandos
DML (Data Modification Language) como SELECT, INSERT, DELETE e
UPDATE. Essas consultas são primeiro marcadas e depois enviadas para o
otimizador. Comandos DDL como CREATE e ALTER não são otimizados, mas são
compilados em um formulário interno. O custo da consulta é calculado com base em
fatores como uso de CPU, uso de memória e necessidades de entrada/saída.
Digamos que você queira abrir uma conta bancária online. Você já conhece um banco
que leva no máximo 2 dias para abrir uma conta. Mas, você também tem uma lista de 20
outros bancos, que podem ou não demorar menos de 2 dias. Você pode começar a se
envolver com esses bancos para determinar quais bancos levam menos de 2 dias. Agora,
você pode não encontrar um banco que demore menos de 2 dias, e há um tempo adicional
perdido devido à própria atividade de pesquisa. Teria sido melhor abrir uma conta no
próprio primeiro banco.
Executor de consulta
O executor de consulta chama o método de acesso. Ele fornece um plano de execução para
a lógica de busca de dados necessária para a execução. Depois que os dados são recebidos
do Storage Engine, o resultado é publicado na camada de protocolo. Finalmente, os dados
são enviados para o usuário final.
Mecanismo de Armazenamento
Arquivo de Dados, armazena dados fisicamente na forma de páginas de dados, com cada
página de dados tendo um tamanho de 8KB, formando a menor unidade de armazenamento
no SQL Server. Essas páginas de dados são agrupadas logicamente para formar
extensões. Nenhum objeto é atribuído a uma página no SQL Server.
A manutenção do objeto é feita via extensões. A página tem uma seção chamada Cabeçalho
da página com um tamanho de 96 bytes, contendo as informações de metadados sobre a
página, como Tipo de página, Número da página, Tamanho do espaço usado, Tamanho do
espaço livre e Ponteiro para a próxima página e para a página anterior , etc
Tipos de arquivo
1. arquivo principal
2. arquivo secundário
3. Arquivo de log
Método de acesso
Ele atua como uma interface entre o executor de consultas e o Buffer
Manager/Transaction Logs.
1. Se a consulta for DDL , instrução SELECT, a consulta será passada para o Buffer
Manager para processamento posterior.
2. E se a consulta for DDL, instrução NON-SELECT , a consulta será passada para
o Gerenciador de transações. Isso inclui principalmente a instrução UPDATE.
Gerenciador de buffer
O gerenciador de buffer gerencia as principais funções dos módulos abaixo:
Plano de Cache
Análise de dados: cache de buffer e armazenamento de dados
página suja
O Buffer Manager procura dados no buffer no cache de dados. Se presente, então esses
dados são usados pelo Query Executor. Isso melhora o desempenho, pois o número de
operações de E/S é reduzido ao buscar dados do cache em comparação com a busca de
dados do armazenamento de dados.
Armazenamento de Dados - Análise Difícil:
página suja
Ele é armazenado como uma lógica de processamento do Transaction
Manager. Aprenderemos em detalhes na seção Gerenciador de transações.
Gerenciador de transações
Gerenciador de registros
Processo de Execução
Resumo: