62
2 Inside SQL Server Como funciona um banco de dados? Fabricio Catae (Microsoft) Premier Field Engineer Microsoft Certified Master Twitter: @ fcatae WebSite: http://blogs.msdn.com/fcatae/

Como funciona um banco de dados? (Prudente TechDay 2010)

Embed Size (px)

Citation preview

Page 1: Como funciona um banco de dados? (Prudente TechDay 2010)

2

Inside SQL ServerComo funciona um banco de dados?

Fabricio Catae (Microsoft)Premier Field EngineerMicrosoft Certified Master

Twitter: @fcataeWebSite: http://blogs.msdn.com/fcatae/

Page 2: Como funciona um banco de dados? (Prudente TechDay 2010)

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)

Page 3: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Introdução

Database Administrator (DBA)

ComparaçãoSite de Busca e Banco de Dados

Page 4: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 5: Como funciona um banco de dados? (Prudente TechDay 2010)

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)

Page 6: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 7: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

AgendaIntrodução

Parte I – CaracterísticasEscalabilidadeAlta Disponibilidade

Parte II – Inside SQL ServerQuery OptimizerBuffer ManagerTransaction Manager

Page 8: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Parte I – Visão Geral

CaracterísticasEscalabilidadeRedundânciaAlta DisponibilidadeSegurança e AuditoriaControle de Concorrência

Page 9: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 10: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Escalabilidade

Page 11: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Limite da Escalabilidade

Page 12: Como funciona um banco de dados? (Prudente TechDay 2010)

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’

Page 13: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 14: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Gerenciamento de Recursos

Page 15: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Recursos de Máquina

Recursos TípicosProcessadorMemória RAMDiscoPlacas HBAPlacas de Rede

Page 16: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Alta Disponibilidade

Problemas Acontecem

Implementar redundância

Identificar pontos de falhaServidor (Hardware)Comunicação de Rede (Network)Armazenamento de dados (Disco)

Page 17: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 18: Como funciona um banco de dados? (Prudente TechDay 2010)

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’

Page 19: Como funciona um banco de dados? (Prudente TechDay 2010)

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’

Page 20: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Cluster Geográfico

Page 21: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Parte II - Inside SQL ServerQuery Processor

Storage

Transaction

Page 22: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

ComponentesAccess Method ManagerBuffer ManagerDatabase ManagerExpression ManagerFile ManagerLog ManagerMemory ManagerMetadata ManagerQuery OptimizerSecurity ManagerSQL Native ClientThread SchedulerTransaction Manager...

Page 23: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Principais Famílias

Principais “Famílias”Query ProcessorTransactionStorage

Storage

Query Processor

Transaction

Page 24: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 25: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Query Processor: Compilação

TerminologiaQuery (Consulta)Linguagem SQLParserCompilaçãoOtimização

Page 26: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 27: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Linguagem SQL

Descreve QUAL informação obter:

SELECT Nomes FROM vPessoasWHERE

Pessoas.Idade < 5 AND Pessoas.Amigos > 100

Page 28: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Exemplo: Programação

For Each(Pessoas){

if( Pessoa.Idade < 5 ) if( Amigos(Pessoa) > 100 )

PRINT(‘Valido’);}

Page 29: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Exemplo: Programação

For Each(Pessoas){

if( Pessoa.Idade < 60 ) if( Amigos(Pessoa) > 1000 )

PRINT(‘Valido’);}

Page 30: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Exemplo: Programação

For Each(Pessoas){

if( Pessoa.Idade < 60 ) if( Amigos(Pessoa) > 1000 )

PRINT(‘Valido’);}

Page 31: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Exemplo: Programação

For Each(Pessoas){

if( Amigos(Pessoa) > 1000 ) if( Pessoa.Idade < 60 )

PRINT(‘Valido’);}

Otimização de código!!!

Page 32: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Compilador SQL

Texto

Parser Tree

Compiled Plan

Execution Plan

Page 33: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Texto Inicial

Texto

Parser Tree

Compiled Plan

Execution Plan

SELECT Nomes FROM vPessoasWHEREPessoas.Idade < 60 AND Pessoas.Amigos > 1000

Page 34: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Compilador SQL - Parser Tree

Texto

Parser Tree

Compiled Plan

Execution Plan

SELECT

FROM PessoasPessoas

Amigos

WHERE

<Idade

60

>Amigos

1000Nomes

Page 35: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 36: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 37: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 38: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Storage

Mídias de Armazenamento de DadosBuffer Manager

Page 39: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Mídias de Armazenamento

Cache

L1/L2

Memória RAM

Discos magnéticos(HD)

Mídia ótica e Fitas

Page 40: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 41: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 42: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Dados Armazenados

Page 43: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Informação

DADOS

DADOS

DADOS

DADOS

DADOS

DADOS

DADOS

Tamanho Fixo: 8Kb

Page 44: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Buffer Manager

CONSULTA

Buffer Manager

Memória Disco

Query Processor

Storage

Page 45: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Leitura da Informação

Leitura

Memória

Page 46: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Leitura da Informação

Leitura

Memória Disco

Page 47: Como funciona um banco de dados? (Prudente TechDay 2010)

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?

Page 48: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Transactions

Unidade de OperaçãoPode ser composta por múltiplas operações

AçõesCommitRollback

Page 49: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 50: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Propriedades ACID da Transação

AtomicityConsistencyIsolationDurability

Page 51: Como funciona um banco de dados? (Prudente TechDay 2010)

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)

Page 52: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 53: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Database Checkpoint

RepositórioDe Dados

LOG

Page 54: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

CHECKPOINT

Memória

Log TableBEGIN TRANSACTION

INSERTUPDATEDELETE

COMMIT TRAN

Disco

Page 55: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 56: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 57: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Resumo

Principais “Famílias”Query ProcessorTransactionStorage

Storage

Query Processor

Transaction

Page 58: Como funciona um banco de dados? (Prudente TechDay 2010)

59

Dúvidas?

Page 59: Como funciona um banco de dados? (Prudente TechDay 2010)

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

Page 60: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Parceiros

LIVETEC INFORMÁTICA

Page 61: Como funciona um banco de dados? (Prudente TechDay 2010)

Prudente TechDay |2010

Apoio:

Page 62: Como funciona um banco de dados? (Prudente TechDay 2010)

63

Dúvidas?