TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha Banco de Dados - TempDB, aprecie com moderação
-
Upload
tdc-globalcode -
Category
Education
-
view
60 -
download
1
Transcript of TDC2016POA | Trilha Banco de Dados - TempDB, aprecie com moderação
Globalcode – Open4education
Trilha – Banco de DadosRicardo Leka
Globalcode – Open4education
Por que TempDB ?
Todos usam
Muita informação
por aí
Mau interpretada
Globalcode – Open4education
Quantos arquivos?
No Final Da Palestra
Globalcode – Open4education
Que se faça a luz
Logo após a Master
ser iniciada, o TempDB é criado
A Model é aberta
O TempDB é criado
baseado na Model
O SQL é informado que a base está pronta
Em caso de falha, o
serviço do SQL para
Globalcode – Open4education
Criando o TempDB
• Conexões permitidas• Mas nenhum acesso a TempDB
Lock na Model e na TempDB
• Cria o arquivo primário da base• Copia os extents do Model para o arquivo primário• Ajusta as configurações para a TempDB• Cria o arquivo de transaction log• Cria e anexa os outros arquivos
Create the new tempdb database
• Cria um arquivo primário do tamanho do da base Model• Cria um arquivo de transaction log• Cria os arquivos no diretório padrão para o DATA• As informações originais são mantidas
E a opção –f?
Globalcode – Open4education
TempDB pronta
• Bases de usuários só termiam recovery após TempDB Online
Recovery
• Arquivos atuais >= novos arquivos?• Transaction Log <> IFI
Arquivos existentes
Globalcode – Open4education
Transaction Log
• Mínimo• Sem informações sobre “after”
Insert/Update (heaps)Log
• Sem Recovery• Hard Checkpoint trunca o logSimple• Shutdown• Sem redoRollback
Globalcode – Open4education
A Lixeira do SQL
Globalcode – Open4education
A Lixeira do SQL
Explícito
•Tabelas temporárias•Tabelas variáveis•Procedures temporárias•User defined objects
Implícito•Sorts•Work tables•Work files•Versionamento
Globalcode – Open4education
Sorts
WorkSpace ou QueryMemory
Não coube na memória? TempDB
Pode ocupar mais espaço do que você imagina Uniform extents
Cache?Page type 7
Globalcode – Open4education
Índices e Sorts
Normalmente usa Base do
usuário
A não ser SORT_IN_TE
MPDB
Se houver RAM, RAM
será
Recomendado para índice particionado
Globalcode – Open4education
Worktables
PlayGroud dos DEV’s
Page ID 10
Object ID
negativo
Mixed Extent
Globalcode – Open4education
Worktables
Service Broker
XML documents
CHECKDB
SPOOL operators
Exchange Spill
Merge Joins
Globalcode – Open4education
Workfile
Hash Joins
Páginas no Buffer Pool
Sem log Uniform Extents
Usa WorkTables
Page file 6
Globalcode – Open4education
Versionamento
Nada é logado
Normalmente usar para SnapShot
Limpo assíncrono
Rebuild online índice
Page Type 2
Globalcode – Open4education
Múltiplos arquivos
Round robin/preenchimento proporcional
Para cada “alocação” é alterado para o próximo
arquivo com espaço livre equivalente
Arquivos mais ocupados são
ignorados
Globalcode – Open4education
Já sei qual arquivo usar,,, e agora?
Para uniform extents
Arquivo escolhido
Localize uma extent livre nas GAMs do arquivo atual
Não possui espaço livre? Localize extents livres em outros arquivos
Não deu certo? Cresça…
Para mixed extents
Arquivo escolhido
Localize um mixed extent livre no arquivo
Aloque o mixed extent no arquivo
Faça a mesma coisa em outros arquivos
Não deu certo? Cresça…
Globalcode – Open4education
Criação de uma tabela
Criação do catálogo de sistema – páginas das tabelas de sistema
Localiza SGAM
Localiza e atualiza
PFS
Atualiza IAM
CACHE TABELA
TEMPORÁROA
Criação do catálogo de sistema –
páginas das tabelas de
sistema
Globalcode – Open4education
Cache de tabela temporária
Restrições
• Apenas em procedures• Sem DDL após a criação• Sem constraints nomeadas• Removido por pressão de memória
Detalhes
• Cache de Metadados• Cache por objeto para lincar ao cache plan• Qualquer auto-estatística é lincada a tabela
Globalcode – Open4education
Contenção
A solução• Temp Table caching• Trace flag 1118• Múltiplos arquivos
Data• Desabilitar autogrow• Avaliar utilização• Localizar quais
objetos estão consumindo recursos
A Pressão• Páginas PFS, GAM e
SGAM• Criação/remoção frequente
de tabelas• Alocação/desalocação de
objetos internos• Utilização de Heaps e PFS
Os sintomas• PAGELATCH• 2:<fileid>:<núm. da página>• Não é PAGEIOLATCH
Globalcode – Open4education
Mapas de Alocações No momento que as threads são disparadas, temos um grande
número de requisições nas páginas de alocações, SGAM e PFS.
GAM – Global Allocation Map Atende um intervalo de aproximadamente 511232 páginas ou 64000 extents (4GB).
Mapeia quais uniforms extents estão ou não sendo utilizadas. Cada Extent pertence unicamente a um objeto.
SGAM – Shared Global Allocation Map Atende as mesmas descrições da página GAM, entretanto, cada extent monitorada por
essa página são do tipo mistas, ( Cada Extent pode conter páginas de dados de diferentes objetos.)
PFS – Page Free Space Responsável por armazenar informações sobre espaço utlizado por cada página no
banco de dados (Heap ou LOB). PFS monitora um intervalo de 8088 páginas ou 64MB.
Globalcode – Open4education
Latchs
File 2
PFS
SGAM
PFS
SGAM
64MB
4GB
File 1
PFS
SGAM
PFS
SGAM
64MB
4GB
Globalcode – Open4education
Tipos de Latch Latch Waits
PAGEIOLATCH_XX SH – Quando uma task aguarda uma solicitação de página realizada pelo Buffer ao
disco. Tipos de espera SH(Shared) são compartilhados. EX – Quando uma task aguarda uma solicitação de página realizada pelo Buffer ao
disco. Tipos de espera EX(Exclusive) são exclusivos. UP – Quando uma task aguarda uma solicitação de página realizada pelo Buffer ao
disco. Tipo de espera UP(UPDATE) é realizado no momento de uma atualização (Diferentemente de um T-SQL Update).
PAGELATCH_XX SH – Uma task aguarda por uma solicitação de página que exista no buffer. Tipos de
espera SH(Shared) são compartilhados. EX – Uma task aguarda por uma solicitação de página que exista no buffer. Tipos de
espera EX(Exclusive) são de modo exclusivo. UP – Uma task aguarda por uma solicitação de página que exista no buffer. Tipos de
espera UP(UPDATE) é realizado no momento de uma atualização (Diferentemente de um T-SQL Update).
Globalcode – Open4education
Quantos arquivos????
< 8 CPUs, 1 arquivo por CPU
• 8 ou mais pode ajudar a ficar mais rápido• -T1118 se você usa muita temp table ou tabela variável
>= 8 CPUs, começa com 8
• Teste sua aplicação e monitore por contenção de PAGELATCH• Aumente em 4 arquivos• Na emergência, considere um arquivo por CPU