55
1 Marília TechDay | 2010

Inside SQL Server: Como funciona um banco de dados?

Embed Size (px)

Citation preview

1

Marília TechDay |2010

2

Inside SQL ServerComo funciona um banco de dados?

Fabricio Catae (Microsoft)Premier Field EngineerMicrosoft Certified Master

WebSite: http://blogs.msdn.com/fcatae/

3Marília TechDay

|2010

Como comecei...Escola Politecnica (USP)

1998-2002 – Engenharia Elétrica (Automação de Sistemas)

Carreira(Estagiário)1999 – Poli Jr (Gerente de Projeto)2000 – Flexsys (Integração Linux/Windows/OS2) 2001 – Estagiário Microsoft (Microsoft Consulting Services)2002 – Field Engineer (Microsoft Premier Support)

Certificações Microsoft ImportantesMicrosoft Certified Solution Developer (C++ for Windows)Microsoft Certified Database Administrator (SQL Server 2000)

4Marília TechDay

|2010

Introdução

Database Administrator (DBA)

ComparaçãoSite de Busca e Banco de Dados

5Marília TechDay

|2010

Banco de Dados (Database)

O que é um Banco de Dados?Coleção de dados

Exemplos de Banco de Dados Relacional:Microsoft SQL ServerOracleDB2SybaseMySql

6Marília TechDay

|2010

Busca x Consulta

Busca por palavras específicas“Ruas Cidade Marília”“Empregos Diretor Salário 20000 ou mais”

Consulta por informaçõesRuas (Cidade = Marília)Empregos (Cargo = Diretor, Salário > 20000)

7Marília 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

8Marília TechDay

|2010

Nome = ‘P1’, Telefone = ‘555-5555’Nome = ‘P2’, Telefone = ‘555-5556’Nome = ‘P3’, Telefone = ‘555-5557’Nome = ‘P4’, Telefone = ‘555-5558’Nome = ‘P5’, Telefone = ‘555-5559’Nome = ‘P6’, Telefone = ‘555-5560’Nome = ‘P7’, Telefone = ‘555-5561’

Aplicação Cliente x Servidor

Consulta Telefone(P5)

555-5559

C++, ASP.NET, PHP, Java

9Marília TechDay

|2010

Clientes Distribuídos

Nome = ‘P1’, Telefone = ‘555-5555’Nome = ‘P2’, Telefone = ‘555-5556’Nome = ‘P3’, Telefone = ‘555-5557’Nome = ‘P4’, Telefone = ‘555-5558’Nome = ‘P5’, Telefone = ‘555-5559’Nome = ‘P6’, Telefone = ‘555-5560’Nome = ‘P7’, Telefone = ‘555-5561’

10Marília TechDay

|2010

AgendaIntrodução

Parte I – CaracterísticasEscalabilidadeAlta Disponibilidade

Parte II – Inside SQL ServerQuery OptimizerTransaction ManagerBuffer Manager

11Marília TechDay

|2010

Parte I – Visão Geral

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

12Marília TechDay

|2010

1 é pouco, 2 é bom, 3 é demais

13Marília 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

14Marília TechDay

|2010

Limite da Escalabilidade

15Marília TechDay

|2010

Escalabilidade

Nome = ‘P1’, Telefone = ‘555-5555’Nome = ‘P2’, Telefone = ‘555-5556’Nome = ‘P3’, Telefone = ‘555-5557’Nome = ‘P4’, Telefone = ‘555-5558’Nome = ‘P5’, Telefone = ‘555-5559’Nome = ‘P6’, Telefone = ‘555-5560’Nome = ‘P7’, Telefone = ‘555-5561’

16Marília 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

17Marília TechDay

|2010

Recursos de Máquina

Recursos TípicosProcessador (32/64-bits, CPU Cores)Memória RAMDisco SATA/SCSI/FCPlacas HBAPlacas de Rede (100Mbit/1Gbit)

18Marília TechDay

|2010

Gerenciamento de Recursos

19Marília TechDay

|2010

Cluster de Servidores

Nome = ‘P1’, Telefone = ‘555-5555’Nome = ‘P2’, Telefone = ‘555-5556’Nome = ‘P3’, Telefone = ‘555-5557’Nome = ‘P4’, Telefone = ‘555-5558’Nome = ‘P5’, Telefone = ‘555-5559’Nome = ‘P6’, Telefone = ‘555-5560’Nome = ‘P7’, Telefone = ‘555-5561’

20Marília TechDay

|2010

Alta Disponibilidadee Disaster Recovery

Problemas Acontecem

Identificar pontos de falhaServidor (Hardware)Comunicação de Rede (Network)Proteção do Data Center (Site Protection)

Implementar redundância

21Marília TechDay

|2010

Cluster Geográfico

22Marília TechDay

|2010

Parte II - Inside SQL ServerQuery Optimizer

Transaction Manager

Buffer Manager

23Marília TechDay

|2010

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

24Marília TechDay

|2010

Principais Famílias

Principais “Famílias”Query ProcessorTransactionStorage

Storage

Query Processor

Transaction

25Marília TechDay

|2010

Principais FamíliasQuery Processor: Compilação

Linguagem SQLProcesso de Compilação

TransactionsPropriedades ACIDProcesso de RollbackProcesso de Database Recovery

Storage: Buffer ManagerDiscos, Memória e Buffers

26Marília TechDay

|2010

Query Processor: Compilação

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

27Marília 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

28Marília TechDay

|2010

Linguagem SQL

Descreve QUAL informação obter:

SELECT Nomes FROM vPessoasWHERE

Pessoas.Idade < 5 AND Pessoas.Amigos > 100

29Marília TechDay

|2010

Exemplo: Programação

For Each(Pessoas){

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

PRINT(‘Valido’);}

30Marília TechDay

|2010

Exemplo: Programação

For Each(Pessoas){

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

PRINT(‘Valido’);}

31Marília TechDay

|2010

Exemplo: Programação

For Each(Pessoas){

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

PRINT(‘Valido’);}

32Marília TechDay

|2010

Exemplo: Programação

For Each(Pessoas){

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

PRINT(‘Valido’);}

Otimização de código!!!

33Marília TechDay

|2010

Compilador SQL

Texto

Parser Tree

Compiled Plan

Execution Plan

34Marília TechDay

|2010

Texto Inicial

Texto

Parser Tree

Compiled Plan

Execution Plan

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

35Marília TechDay

|2010

Compilador SQL - Parser Tree

Texto

Parser Tree

Compiled Plan

Execution Plan

SELECT

FROM vPessoasPessoas

Amigos

WHERE

< (Menor)Idade

60

> (Maior)Amigos

1000Nomes

36Marília 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

37Marília 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

38Marília TechDay

|2010

Transactions

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

AçõesCommitRollback

39Marília 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

40Marília TechDay

|2010

Propriedades ACID (Transação)

AtomicityConsistencyIsolationDurability

41Marília TechDay

|2010

Processo de Log

Log TableLog Records (Blocks)

Log Table

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)

42Marília TechDay

|2010

Database Checkpoint

RepositórioDe Dados

LOG

43Marília TechDay

|2010

Processo de RollbackAtomicity/Consistency

Restaurar o estado anterior

Todas as modificações registram o estado ANTES e DEPOIS

As correções são chamadas de Compensation Record

Log Table

BEGIN TRANSACTION

Apaga registro (AAAA)

Insert registro (BBBB)

(ROLLBACK TRAN)Apaga registro (BBB) Compensation

Insere registro (AAA) Compensation

ROLLBACK TRAN

44Marília TechDay

|2010

Processo de Recovery

Por que Database Recovery?Garantia de Consistency/DurabilityInicia um Checkpoint

Como perder dados:Desligar o computador inesperadamente?Faltar de energia elétrica?Pegar fogo na CPU?Arremessar o HD contra a janela?

45Marília TechDay

|2010

Pergunta

Como perder dados:Desligar o computador inesperadamente?Faltar de energia elétrica?Pegar fogo na CPU?Arremessar o HD contra a janela?

46Marília TechDay

|2010

Storage: Buffer Manager

Mídias de Armazenamento de DadosBuffer Manager

47Marília TechDay

|2010

Mídias de Armazenamento de Dados

Cache

L1/L2

Memória RAM

Discos magnéticos(HD)

Mídia ótica e Fitas

48Marília TechDay

|2010

Performance de Acesso

Banco de Dados 100% em MemóriaVantagem: PerformanceDesvantagem: Custo

Crescimento do Volume de DadosQuase impossível armazenar tudo em memória

49Marília TechDay

|2010

Buffer Manager

Query

Buffer Manager

Memória Disco

Query Processor

Storage

50Marília 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

51Marília TechDay

|2010

Fácil?

52Marília TechDay

|2010

Agenda do EventoHorário Título Palestrante Local

12:00 - 13:00 SQL Azure Database Diego Nogare Auditório 1

12:00 - 13:00 Introdução ao desenvolvimento de Sistemas Conectados com WCF 4.0 Evilázaro Alves Auditório 2

13:00 - 14:00 Almoço

14:00 - 15:00 Exchange 2010 - Cozinhando com o correio Rob Ranches Auditório 1

14:00 - 15:00 Automatizando Processos no SQL Server com Powershell e SQL Server Powershell Extensions Laerte Junior Auditório 2

15:00 - 15:45 Intervalo e Expo Parceiros

15:45 - 16:45 SharePoint 2010 - O que mudou? Rodolfo Roim Auditório 1

15:45 - 16:45 Armazenamento de dados no SQL Server Fabricio Catae Auditório 2

16:45 - 17:00 Mudança de Sessão

17:00 - 18:00 Otimizando Performance no SQL Server Rodrigo Fernandes Auditório 1

17:00 - 18:00 Conhecendo o SQL Server 2008 Express - A edição grátis do SQL Server Nilton Pinheiro Auditório 2

18:00 Encerramento

53Marília TechDay

|2010

Parceiros

LIVETEC INFORMÁTICA

54Marília TechDay

|2010

Apoio:

55

Dúvidas?