tdc2016poa | trilha banco de dados - tempdb, aprecie com moderação

25
Globalcode – Open4education Trilha – Banco de Dados Ricardo Leka

Upload: tdc-globalcode

Post on 15-Apr-2017

60 views

Category:

Education


1 download

TRANSCRIPT

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

Globalcode – Open4education

Trilha – Banco de DadosRicardo Leka

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

Globalcode – Open4education

Quem?

[email protected]

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

Globalcode – Open4education

Por que TempDB ?

Todos usam

Muita informação

por aí

Mau interpretada

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

Globalcode – Open4education

Quantos arquivos?

No Final Da Palestra

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

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

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

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?

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

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

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

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

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

Globalcode – Open4education

A Lixeira do SQL

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

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

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

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

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

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

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

Globalcode – Open4education

Worktables

PlayGroud dos DEV’s

Page ID 10

Object ID

negativo

Mixed Extent

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

Globalcode – Open4education

Worktables

Service Broker

XML documents

CHECKDB

SPOOL operators

Exchange Spill

Merge Joins

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

Globalcode – Open4education

Workfile

Hash Joins

Páginas no Buffer Pool

Sem log Uniform Extents

Usa WorkTables

Page file 6

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

Globalcode – Open4education

Versionamento

Nada é logado

Normalmente usar para SnapShot

Limpo assíncrono

Rebuild online índice

Page Type 2

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

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

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

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…

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

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

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

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

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

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

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

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.

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

Globalcode – Open4education

Latchs

File 2

PFS

SGAM

PFS

SGAM

64MB

4GB

File 1

PFS

SGAM

PFS

SGAM

64MB

4GB

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

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).

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

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