Es TEMPDB, por qué es tan importante?

51
Es TempDB, porque es tan importante? Javier Loria Mentor SolidQ

description

TEMPDB es solo para datos temporales cierto o no? Se crea por defecto y se recrea cada vez que se reinicia SQL Server, entonces no debería ser importante, ESTO ES INCORRECTO. En esta sesión aprenderá sobre los aspectos internos de TEMPDB y por qué TEMPDB es importante. Se verán las mejores prácticas para configurar TEMPDB y cómo determina si hay centención. Si usted tiene sistemas en los cuales no se configurado TEMPDB entonces debe asistir a esta sesión

Transcript of Es TEMPDB, por qué es tan importante?

Page 1: Es TEMPDB, por qué es tan importante?

Es TempDB, porque es tan

importante?

Javier Loria

Mentor

SolidQ

Page 2: Es TEMPDB, por qué es tan importante?

SQL Saturday Sponsors

Gold Sponsors

Silver Sponsors

Bronze Sponsors

Page 3: Es TEMPDB, por qué es tan importante?

Tim Radney

Javier Loria

Page 4: Es TEMPDB, por qué es tan importante?

Itzik Ben-Gan

Eladio Rincón

Fabiano Amorim

Adam Machanic

Paul S. Randal

Tim Radney

Steve Stedman

Page 5: Es TEMPDB, por qué es tan importante?
Page 6: Es TEMPDB, por qué es tan importante?

Quién es TempDB?

Page 7: Es TEMPDB, por qué es tan importante?

TempDB

http://www.microsoft.com

http://www.tempdb.com

It’s complicated

TempDB es como cualquier otra base de datos

casi

Page 8: Es TEMPDB, por qué es tan importante?

No persiste

• Se recrea cada vez que SQL se apaga

Solo tiene un Filegroup

• Pero puede tener múltiples archivos.

Puede hacer Rollback

• Pero no Rollforward (Redo)

Restricciones

• Única, AUTOSHRINK, CHECKSUM, Snapshots

casi

Page 9: Es TEMPDB, por qué es tan importante?

Qué es TempDB?

Page 10: Es TEMPDB, por qué es tan importante?
Page 11: Es TEMPDB, por qué es tan importante?

Recurso global

Page 12: Es TEMPDB, por qué es tan importante?

Que almacena?

Page 13: Es TEMPDB, por qué es tan importante?

Objetos Internos

Objetos de Usuario

Versionamiento

1

2

3

Page 14: Es TEMPDB, por qué es tan importante?

Resultados

intermedios

para ordenar

Resultados intermedios

Hash JOIN/Agregados

LOB o XML

Resultados

Intermedios

de ConsultasCursores

Index

creation

Service

Broker

Internos1

Page 15: Es TEMPDB, por qué es tan importante?

Spool

• Lazy/Eager

SpoolNonClustered

SpoolRowCount

Spool Table

Sort

Hash Match

• Join/Aggregate

Operadores1

Page 16: Es TEMPDB, por qué es tan importante?
Page 17: Es TEMPDB, por qué es tan importante?

Demo

• ORDER BY

• UNION

Sin Demo

• DISTINCT

• JOIN

• TOP / WHERE

Page 18: Es TEMPDB, por qué es tan importante?

Plan de Ejecución Estimado

Plan de Ejecución Real

Page 19: Es TEMPDB, por qué es tan importante?

CREATE NONCLUSTERED INDEX FLPS242DON dbo.FLPS242(PaiCod, DivNiv1Cod,EstNum, EscNumDet, PGETarNum,PGECtaObjCod, PGECatCtaObjCod)WITH (SORT_IN_TEMPDB = ON);

SORT_IN_TEMPDB1

Page 20: Es TEMPDB, por qué es tan importante?
Page 21: Es TEMPDB, por qué es tan importante?

Si tiene disco(s) separados

para TempDB: SORT_IN_TEMPDB

Page 22: Es TEMPDB, por qué es tan importante?

Usu

ario

Tablas Temporales

Tablas Temporales Globales

Variables Tabla

Tablas funciones “Table-Value”

2

Page 23: Es TEMPDB, por qué es tan importante?

SUBCONSULTAS TABLAS TEMPORALES

CTE VS VARIABLES TABLA

VISTAS

2

Page 24: Es TEMPDB, por qué es tan importante?

VARIABLES TABLA VS TABLAS TEMPORALES

2

TEMPORARY

TABLES TABLE VARIABLES

Statistics Yes No

Indexes Yes

Only with

constraints

Schema modifications Yes No

Available in child routines

including sp_executesql Yes No

Use with INSERT INTO … EXEC Yes No

In memory structures No No

Page 25: Es TEMPDB, por qué es tan importante?
Page 26: Es TEMPDB, por qué es tan importante?

• En general: Subconsultas, Vistas

y CTES ofrecen mejor desempeño,

pero …

• Variables tabla para número bajo

de filas sino Tablas Temporales

Page 27: Es TEMPDB, por qué es tan importante?

Tipos de Funciones

Escalares En LíneaMulti-

Sentencia

Page 28: Es TEMPDB, por qué es tan importante?

Tipos de Funciones

Escalares

•Mono-hilo

•Interpretadas

Page 29: Es TEMPDB, por qué es tan importante?

Tipos de Funciones

Multi-

Sentencia

•Múltiples comandos

•Almacenan en TempDB

Page 30: Es TEMPDB, por qué es tan importante?

Tipos de Funciones

•Funcionalidad limitada

•Sin cuerpo

•Mono-SELECT

En Línea

Page 31: Es TEMPDB, por qué es tan importante?
Page 32: Es TEMPDB, por qué es tan importante?

• De preferencia usar funciones En

línea (In-Line).

• Si se requiere la funcionalidad

multi-sentencia, pero con número

filas limitado.

Page 33: Es TEMPDB, por qué es tan importante?

Snapshotisolation

ReadCommitedSnapshot

Online Index

MARSAfter

Triggers

Versionamiento 3

Page 34: Es TEMPDB, por qué es tan importante?
Page 35: Es TEMPDB, por qué es tan importante?
Page 36: Es TEMPDB, por qué es tan importante?

Evita el “Shared Lock”= No espero consistencia

Puede retornar la misma fila, varias veces

Puede brincarse filas commited

Tiende a producir INDEX SCAN, y otros efectos colaterales

Page 37: Es TEMPDB, por qué es tan importante?

Cuando salen

mal las cosas?

Page 38: Es TEMPDB, por qué es tan importante?
Page 39: Es TEMPDB, por qué es tan importante?

Estructura

FISICA

Page 40: Es TEMPDB, por qué es tan importante?

PFS

GAM

SGAM

IAM

Páginas

Extents

Page 41: Es TEMPDB, por qué es tan importante?

Página

Page 42: Es TEMPDB, por qué es tan importante?

Extent

Page 43: Es TEMPDB, por qué es tan importante?

Byte por página

PFS

HEAPS

LOB

OVERFLOW

Page 44: Es TEMPDB, por qué es tan importante?

Glo

bal

Allo

cati

on

Map

GAM

Shar

edA

lloca

tio

nM

ap

SGAM

Ind

exA

lloca

tio

nM

ap

IAM

Bit por Extent

Estado GAM SGAM

Libre 1 0

Uniforme 0 0

Mixto 0 1

Page 45: Es TEMPDB, por qué es tan importante?
Page 46: Es TEMPDB, por qué es tan importante?
Page 47: Es TEMPDB, por qué es tan importante?
Page 48: Es TEMPDB, por qué es tan importante?

• 1 Archivo por núcleo (core), hasta 8.

<=8

• 8 archivos por los 8 primeros núcleos.

• 1 archivo por cada 2 núcleos adicionales.9-16

• 12 archivos para los primeros 16 núcleos

• +1 archivos para cada 4 núcleos.>16

Page 49: Es TEMPDB, por qué es tan importante?

• Lo que sea necesario

• En dividido en cantidades iguales por archivos

Tamaño

• RAID 10 $$$

• RAID 1 $RAID

• Discos Rápidos

• En algunos ambientes separar el LOG de la BD

IO

Page 50: Es TEMPDB, por qué es tan importante?
Page 51: Es TEMPDB, por qué es tan importante?