O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

TDC2016POA | Trilha Banco de Dados - TempDB, aprecie com moderação

145 visualizações

Publicada em

TempDB, aprecie com moderação

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

TDC2016POA | Trilha Banco de Dados - TempDB, aprecie com moderação

  1. 1. Globalcode – Open4education Trilha – Banco de Dados Ricardo Leka
  2. 2. Globalcode – Open4education Quem? Ricardo @Leka.com.br
  3. 3. Globalcode – Open4education Por que TempDB ? Todos usam Muita informação por aí Mau interpretada
  4. 4. Globalcode – Open4education Quantos arquivos? No Final Da Palestra
  5. 5. 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
  6. 6. 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?
  7. 7. 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
  8. 8. 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
  9. 9. Globalcode – Open4education A Lixeira do SQL
  10. 10. Globalcode – Open4education A Lixeira do SQL • Tabelas temporárias • Tabelas variáveis • Procedures temporárias • User defined objects Explícito • Sorts • Work tables • Work files • Versionamento Implícito
  11. 11. 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
  12. 12. Globalcode – Open4education Índices e Sorts Normalmente usa Base do usuário A não ser SORT_IN_TEMPDB Se houver RAM, RAM será Recomendado para índice particionado
  13. 13. Globalcode – Open4education Worktables PlayGroud dos DEV’s Page ID 10 Object ID negativo Mixed Extent
  14. 14. Globalcode – Open4education Worktables Service Broker XML documents CHECKDB SPOOL operators Exchange Spill Merge Joins Cursors LOB variables
  15. 15. Globalcode – Open4education Workfile Hash Joins Páginas no Buffer Pool Sem log Uniform Extents Usa WorkTables Page file 6
  16. 16. Globalcode – Open4education Versionamento Nada é logado Normalmente usar para SnapShot Limpo assíncrono Rebuild online índice Page Type 2
  17. 17. 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 É feito um cálculo de proporção • Após o recovery • Quando um arquivo é adicionado ou removido • A cada 8192 extent
  18. 18. 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…
  19. 19. Globalcode – Open4education Criação de uma tabela Criação do catálogo de sistema – páginas das tabelas de sistema Aloca IAM – localiza uma mixed extent e marca uma PFS Aloca 1 página Regista a alocação na tabela de sistema Localiza SGAM Localiza e atualiza PFS Atualiza IAM Criação do catálogo de sistema – páginas das tabelas de sistema
  20. 20. Globalcode – Open4education Cache de tabela temporária • Apenas em procedures • Sem DDL após a criação • Sem constraints nomeadas • Removido por pressão de memória Restrições • Cache de Metadados • Cache por objeto para lincar ao cache plan • Qualquer auto-estatística é lincada a tabela Detalhes
  21. 21. 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
  22. 22. 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.
  23. 23. Globalcode – Open4education Latchs File 2 PFS SGAM PFS SGAM 64MB 4GB File 1 PFS SGAM PFS SGAM 64MB 4GB
  24. 24. 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).
  25. 25. 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

×