Upload
fabricio-catae
View
103
Download
2
Embed Size (px)
Citation preview
2
Inside SQL ServerComo funciona um banco de dados?
Fabricio Catae (Microsoft)Premier Field EngineerMicrosoft Certified Master
Twitter: @fcataeWebSite: http://blogs.msdn.com/fcatae/
Prudente TechDay |2010
Como comecei...Escola Politecnica (USP)
1998-2002 – Engenharia Elétrica
Carreira(Estagiário)1999 – Gerente de Projeto (Poli Jr)2000 – Programador (Flexsys)2001 – Estagiário (Microsoft Consulting Services)2002 – Field Engineer (Microsoft Premier Support)
Certificações Microsoft ImportantesMS Certified Solution Developer (C++ for Windows)MS Certified Database Administrator (SQL Server 2000)
Prudente TechDay |2010
Introdução
Database Administrator (DBA)
ComparaçãoSite de Busca e Banco de Dados
Prudente TechDay |2010
Banco de Dados (Database)
O que é um Banco de Dados?Coleção de dados
Exemplos de Banco de Dados RelacionalMicrosoft SQL ServerOracleDB2SybaseMySql
Prudente TechDay |2010
Busca x Consulta
Busca por palavras específicas“Ruas Cidade Presidente Prudente”“Empregos Diretor Salário 30000 ou mais”
Consulta por informaçõesRuas (Cidade = Presidente Prudente)Empregos (Cargo = Diretor, Salário > 30000)
Prudente TechDay |2010
Site de Busca
Isso é um banco de dados relacional?Retorna resultados para a busca
Mas,Não estruturadoNão modifica dadosNão consolida resultadosNão permite fazer consultas complexas
Prudente TechDay |2010
AgendaIntrodução
Parte I – CaracterísticasEscalabilidadeAlta Disponibilidade
Parte II – Inside SQL ServerQuery OptimizerBuffer ManagerTransaction Manager
Prudente TechDay |2010
Parte I – Visão Geral
CaracterísticasEscalabilidadeRedundânciaAlta DisponibilidadeSegurança e AuditoriaControle de Concorrência
Prudente TechDay |2010
Escalabilidade
Aumento de Recursos é proporcional ao aumento de Desempenho
Exemplos:Sistema escalável em relação ao número de CPUAplicação Web escala com o aumento de servidor
Existe um limite do ganho em desempenho em relação ao aumento de recurso
Prudente TechDay |2010
Escalabilidade
Prudente TechDay |2010
Limite da Escalabilidade
Prudente TechDay |2010
Escalabilidade
Nome = ‘P1’, Tel = ‘555-5555’Nome = ‘P2’, Tel = ‘555-5556’Nome = ‘P3’, Tel = ‘555-5557’Nome = ‘P4’, Tel = ‘555-5558’Nome = ‘P5’, Tel = ‘555-5559’
Prudente TechDay |2010
Gerenciamento de Recursos
ResponsabilidadesPriorizar atividades de SistemaDistribuição de TarefasAlocação de Memória DinâmicaTransferência de Disco
“Quase” um Sistema Operacional
Prudente TechDay |2010
Gerenciamento de Recursos
Prudente TechDay |2010
Recursos de Máquina
Recursos TípicosProcessadorMemória RAMDiscoPlacas HBAPlacas de Rede
Prudente TechDay |2010
Alta Disponibilidade
Problemas Acontecem
Implementar redundância
Identificar pontos de falhaServidor (Hardware)Comunicação de Rede (Network)Armazenamento de dados (Disco)
Prudente TechDay |2010
Nome = ‘P1’, Tel = ‘555-5555’Nome = ‘P2’, Tel = ‘555-5556’Nome = ‘P3’, Tel = ‘555-5557’Nome = ‘P4’, Tel = ‘555-5558’Nome = ‘P5’, Tel = ‘555-5559’
Aplicação Cliente x Servidor
Consulta P5
555-5559
C++, ASP.NET, PHP, Java
Prudente TechDay |2010
Múltiplos Clientes
Nome = ‘P1’, Tel = ‘555-5555’Nome = ‘P2’, Tel = ‘555-5556’Nome = ‘P3’, Tel = ‘555-5557’Nome = ‘P4’, Tel = ‘555-5558’Nome = ‘P5’, Tel = ‘555-5559’
Prudente TechDay |2010
Cluster de Servidores
Nome = ‘P1’, Tel = ‘555-5555’Nome = ‘P2’, Tel = ‘555-5556’Nome = ‘P3’, Tel = ‘555-5557’Nome = ‘P4’, Tel = ‘555-5558’Nome = ‘P5’, Tel = ‘555-5559’
Prudente TechDay |2010
Cluster Geográfico
Prudente TechDay |2010
Parte II - Inside SQL ServerQuery Processor
Storage
Transaction
Prudente TechDay |2010
ComponentesAccess Method ManagerBuffer ManagerDatabase ManagerExpression ManagerFile ManagerLog ManagerMemory ManagerMetadata ManagerQuery OptimizerSecurity ManagerSQL Native ClientThread SchedulerTransaction Manager...
Prudente TechDay |2010
Principais Famílias
Principais “Famílias”Query ProcessorTransactionStorage
Storage
Query Processor
Transaction
Prudente TechDay |2010
Principais FamíliasQuery Processor: Compilação
Linguagem SQLProcesso de Compilação
StorageDiscos e Memória
TransactionsPropriedades ACIDProcesso de RollbackProcesso de Database Recovery
Prudente TechDay |2010
Query Processor: Compilação
TerminologiaQuery (Consulta)Linguagem SQLParserCompilaçãoOtimização
Prudente TechDay |2010
Semântica da Linguagem SQL
Padrão ANSI-SQLIndependência do modelo físico
A linguagem SQL descreve: QUAL a informação desejadaMas não descreve COMO obter o dado
Prudente TechDay |2010
Linguagem SQL
Descreve QUAL informação obter:
SELECT Nomes FROM vPessoasWHERE
Pessoas.Idade < 5 AND Pessoas.Amigos > 100
Prudente TechDay |2010
Exemplo: Programação
For Each(Pessoas){
if( Pessoa.Idade < 5 ) if( Amigos(Pessoa) > 100 )
PRINT(‘Valido’);}
Prudente TechDay |2010
Exemplo: Programação
For Each(Pessoas){
if( Pessoa.Idade < 60 ) if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);}
Prudente TechDay |2010
Exemplo: Programação
For Each(Pessoas){
if( Pessoa.Idade < 60 ) if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);}
Prudente TechDay |2010
Exemplo: Programação
For Each(Pessoas){
if( Amigos(Pessoa) > 1000 ) if( Pessoa.Idade < 60 )
PRINT(‘Valido’);}
Otimização de código!!!
Prudente TechDay |2010
Compilador SQL
Texto
Parser Tree
Compiled Plan
Execution Plan
Prudente TechDay |2010
Texto Inicial
Texto
Parser Tree
Compiled Plan
Execution Plan
SELECT Nomes FROM vPessoasWHEREPessoas.Idade < 60 AND Pessoas.Amigos > 1000
Prudente TechDay |2010
Compilador SQL - Parser Tree
Texto
Parser Tree
Compiled Plan
Execution Plan
SELECT
FROM PessoasPessoas
Amigos
WHERE
<Idade
60
>Amigos
1000Nomes
Prudente TechDay |2010
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 vPessoasPessoas
Amigos
WHERE
< (Menor)Idade
60
> (Maior)Amigos
1000Nomes
Prudente TechDay |2010
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
Prudente TechDay |2010
Principais FamíliasQuery Processor
Linguagem SQLProcesso de Compilação
Storage: Armazenamento de DadosDiscos e Memória
TransactionsPropriedades ACIDProcesso de RollbackProcesso de Database Recovery
Prudente TechDay |2010
Storage
Mídias de Armazenamento de DadosBuffer Manager
Prudente TechDay |2010
Mídias de Armazenamento
Cache
L1/L2
Memória RAM
Discos magnéticos(HD)
Mídia ótica e Fitas
Prudente TechDay |2010
Mundo Ideal
Sonho: Banco de Dados 100% em Memória
Crescimento do Volume de DadosQuase impossível armazenar tudo em memóriaAlto custo (compensa o benefício?)
Mídia VolátilPerda de dados em caso de falta de energia
Prudente TechDay |2010
Mídia Não-Volátil
Dispositivo de armazenamento que não perde informações ao cortar a fonte de energia
Tecnologia AtualMagnetic Disk
FuturoSolid State Disk
Prudente TechDay |2010
Dados Armazenados
Prudente TechDay |2010
Informação
DADOS
DADOS
DADOS
DADOS
DADOS
DADOS
DADOS
Tamanho Fixo: 8Kb
Prudente TechDay |2010
Buffer Manager
CONSULTA
Buffer Manager
Memória Disco
Query Processor
Storage
Prudente TechDay |2010
Leitura da Informação
Leitura
Memória
Prudente TechDay |2010
Leitura da Informação
Leitura
Memória Disco
Prudente TechDay |2010
Buffer Manager
Cache de Dados em Memória
Dados mais acessados ficam em memória, enquanto que o resto continua em disco
Responsável pelo gerenciamento de memória
Dilema sobre a Memória livre: quanto mais melhor ou pior?
Prudente TechDay |2010
Transactions
Unidade de OperaçãoPode ser composta por múltiplas operações
AçõesCommitRollback
Prudente TechDay |2010
Exemplo: Casal reformando a sala
BEGIN TRANSACTION
Pintar parede da sala de verdeColocar um abajur marrom na mesaComprar um sofá creme no lugar do azulSe não combinar, ROLLBACK TRANSACTION
COMMIT TRANSACTION
Prudente TechDay |2010
Propriedades ACID da Transação
AtomicityConsistencyIsolationDurability
Prudente TechDay |2010
Processo de Log
Log Table e Log Records (Blocks)Log TableBEGIN TRANSACTION (transaction_id = 299)
Apaga dados do usuárioInsert nova informacao
COMMIT TRAN (transaction_id = 299)BEGIN TRANSACTION (transaction_id = 300)
Apaga tabelaCOMMIT TRAN (transaction_id = 300)
Prudente TechDay |2010
Processo de Rollback
Atomicity/ConsistencyRestaurar o estado anterior
Todas as modificações registram o estado ANTES e DEPOIS
As correções são chamadas de Compensation Record
Log TableBEGIN TRANSACTION
Apaga registro (AAAA)Insert registro (BBBB)(ROLLBACK TRAN)Apaga registro (BBB) CompensationInsere registro (AAA) Compensation
Rollback completo
Prudente TechDay |2010
Database Checkpoint
RepositórioDe Dados
LOG
Prudente TechDay |2010
CHECKPOINT
Memória
Log TableBEGIN TRANSACTION
INSERTUPDATEDELETE
COMMIT TRAN
Disco
Prudente TechDay |2010
Integração do Log e Buffer Manager
Todas operações devem ser escritas no LOG antes de escrever nos BUFFERS de DADOS.
MemóriaDisco
INSERT
Log Table
BEGIN TRANSACTION
INSERT
COMMIT TRAN
Prudente TechDay |2010
Processo de Recovery
É possível perder dados se...Desligar o computador inesperadamente?Faltar de energia elétrica?
Database RecoveryProcesso automáticoGarantia de Consistência de Dados
Prudente TechDay |2010
Resumo
Principais “Famílias”Query ProcessorTransactionStorage
Storage
Query Processor
Transaction
59
Dúvidas?
Prudente TechDay |2010
Certificação Microsoft
Microsoft Certified Technology SpecialistMicrosoft Certified IT ProfessionalMicrosoft Certified MasterMicrosoft Certified Architect
Certificação Microsoft (SQL Server)
http://www.microsoft.com/learning/pt/br/certification/cert-sql-server.aspx
Prudente TechDay |2010
Parceiros
LIVETEC INFORMÁTICA
Prudente TechDay |2010
Apoio:
63
Dúvidas?