O documento fornece um resumo de alto nível sobre como o Microsoft SQL Server funciona internamente, descrevendo seus principais componentes e como eles interagem. Em três frases ou menos:
O documento explica que o SQL Server é composto por vários componentes que trabalham juntos para processar consultas SQL, armazenar e recuperar dados, incluindo o otimizador de consulta, o mecanismo de armazenamento, o SQLOS e os protocolos SQL. Estes componentes convertem instruções SQL em planos de execução efetivos que acessam e ger
2. 2
Como funciona um banco de dados
Microsoft SQL Server?
Fabricio Catae
Premier Field Engineer
Microsoft Certified Master
Twitter: @fcatae
WebSite: http://blogs.msdn.com/fcatae/
4. OnlineTechDay
|2010
Worldwide
Fabricio Catae
Premier Field Engineer na Microsoft
Engenheiro de Suporte: Especialista em SQL Server, atuando em
clientes com contrato Premier Support.
• Situações críticas e emergenciais
• Revisões periódicas de ambiente
• Apresentações e Workshops
Microsoft Certified Master - SQL Server
SQL Blog Ninja: http://blogs.msdn.com/fcatae
9. OnlineTechDay
|2010
Worldwide
Language Processing and Execution
(LPE)
Comunicação cliente/servidor: componentes de acesso a
dados: ODBC, OLEDB, ADO.NET, JDBC
Parsing: Recebimento do comando e interpretação das
instruções, validando a sintaxe T-SQL e criando uma
estrutura inicial de Query
Compilação: Processo de otimização da Query SQL, incluindo
a reescrita do comando e a avaliação de índices a serem
usados para rápido acesso à informação
Execução: Dado um plano de execução, SQL Server roda a
linguagem T-SQL para obter os resultados solicitados
11. OnlineTechDay
|2010
Worldwide
SQL Protocols
Microsoft Data Access Components (MDAC) e SQL
Native Client (SNAC): Bibliotecas para acesso aos
dados, disponibilizam acesso através das interfaces
padrão OLEDB e ODBC
Tabular Data Stream (TDS): Protocolo de
comunicação utilizado pelo SQL Server
Listener: SQL Server utiliza diferentes protocolos
de rede para receber os comandos, entre eles o
Named Pipe e TCP/IP
23. OnlineTechDay
|2010
Worldwide
Compilador SQL – Compiled Plan
Texto
Parser Tree
Compiled Plan
Execution Plan
For Each(Pessoas)
{
if( Amigos(Pessoa) > 1000 )
if( Pessoa.Idade < 60 )
PRINT(‘Valido’);
}
For Each(Pessoas)
{
if( Pessoa.Idade < 60 )
if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);
}
SELECT
FROM vPessoas
Pessoas
Amigos
WHERE
< (Menor)
Idade
60
> (Maior)
Amigos
1000
Nomes
24. OnlineTechDay
|2010
Worldwide
Compilador SQL – Execution Plan
Texto
Parser Tree
Compiled Plan
Execution Plan
Compiled Plan
(Cplan)
For Each(Pessoas)
if( Amigos(Pessoa) > 1000 )
if( Pessoa.Idade < 60 )
PRINT(‘Valido’);
Variáveis
Ambiente
CPlan
Variáveis
Ambiente
CPlan
Variáveis
Ambiente
CPlan
25. OnlineTechDay
|2010
Worldwide
Otimização: Exemplo 1
Ordem dos predicados não influencia, ou seja,
as queries abaixo são idênticas
SELECT * FROM tbUsuarios
WHERE id = 1 AND nome='catae'
SELECT * FROM tbUsuarios
WHERE nome='catae' AND id = 1
26. OnlineTechDay
|2010
Worldwide
Otimização: Exemplo 2
Se A = B e B = C, então A = C
SELECT * FROM tbUsuarios u JOIN tbCompras c
ON u.id = c.usu_id
1) WHERE u.id = 1
2) WHERE c.usu_id = 1
3) WHERE u.id = 1 AND c.usu_id = 1
27. OnlineTechDay
|2010
Worldwide
Cache de Plano de Execução
SELECT * FROM tbUsuarios u
INNER JOIN tbCompras c
ON u.id = c.usu_id
EXECUTE PROCEDURE
(procUsuarios)
Texto
Parser Tree
Compiled Plan
Execution Plan
28. OnlineTechDay
|2010
Worldwide
Procedure Cache
Procedure Cache armazena os planos de
execução em memória
Database, Object ID -> Plano de Execução
Comandos usados frequentementes são
mantidos no cache, evitando o longo processo
de compilação
Exemplo: Lista dos produtos disponíveis
31. OnlineTechDay
|2010
Worldwide
Operadores
Plano de Execução é composto por operadores, que
estão associados dentro de uma hierarquia. Cada
operador apresenta um custo de CPU, memória e disco.
Operadores
Table Scan
Index Seek
Index Scan
Loop Join
Sort
Access Manager é a interface de comunicação com os
dados armazenados em tabela e índice, traduzindo em
Buffer e Log
41. OnlineTechDay
|2010
Worldwide
Exemplo: Casal reformando a sala
BEGIN TRANSACTION
Pintar parede da sala de verde
Colocar um abajur marrom na mesa
Comprar um sofá creme no lugar do azul
Se não combinar, ROLLBACK TRANSACTION
COMMIT TRANSACTION
43. OnlineTechDay
|2010
Worldwide
Processo de Log
Arquivo de Log
BEGIN TRANSACTION (transaction_id = 299)
Apaga dados do usuário
Insert nova informacao
COMMIT TRAN (transaction_id = 299)
BEGIN TRANSACTION (transaction_id = 300)
Apaga tabela
COMMIT TRAN (transaction_id = 300)
44. OnlineTechDay
|2010
Worldwide
Processo de Rollback
Atomicity/Consistency
Restaurar o estado anterior
Todas as modificações
registram o estado ANTES
e DEPOIS
As correções são
chamadas de
Compensation Record
Arquivo de Log
BEGIN TRANSACTION
Apaga registro (AAAA)
Insert registro (BBBB)
(ROLLBACK TRAN)Apaga registro (BBBB)
Compensation
Insere registro (AAAA)
Compensation
Rollback completo
46. OnlineTechDay
|2010
Worldwide
Integração do Log e Buffer Manager
Todas operações devem ser escritas no LOG
antes de escrever nos BUFFERS de DADOS.
Memória
Disco
INSERT
Log Table
BEGIN TRANSACTION
INSERT
COMMIT TRAN
Background
Memória
48. OnlineTechDay
|2010
Worldwide
Processo de Recovery
É possível perder dados se...
Desligar o computador inesperadamente?
Faltar de energia elétrica?
Database Recovery
Processo automático
Garantia de Consistência de Dados
Nenhuma perda de dados