DevinVale: SQL, noSQL ou newSQL - Onde armazenar meus dados?
Inside SQL Server: Como funciona um banco de dados?
-
Upload
fabricio-catae -
Category
Technology
-
view
272 -
download
0
Transcript of Inside SQL Server: Como funciona um banco de dados?
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
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
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)
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
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!!!
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
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)
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?
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
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
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