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
Presentación realizada en el SolidQ Summit por: Javier Loria
[slideshare id=19012140&doc=estempbd-130417131753-phpapp02&h=495&w=595]
1. Es TempDB, porque es tanimportante?Javier LoriaMentorSolidQ
2. SQL Saturday Sponsors Gold Sponsors Silver Sponsors Bronze Sponsors
3. Javier Loria Tim Radney
4. Itzik Ben-GanEladio RincónFabiano AmorimAdam MachanicPaul S. RandalTim RadneySteve Stedman…
5. Quién es TempDB?
6. TempDB http://www.microsoft.com http://www.tempdb.com It’s complicatedTempDB es como cualquier otra base de datos casi
7. casi 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
8. Qué es TempDB?
9. Recurso global
10. Que almacena?
11. 1 Objetos Internos2 Objetos de Usuario 3 Versionamiento
12. Service LOB o XML Broker Resultados intermedios Hash JOIN/Agregados Indexcreation Resultados intermedios para ordenar Resultados Cursores Intermedios 1 Internos de Consultas
13. 1 Operadores Spool • Lazy/Eager Sort Spool NonClustered Hash Match • Join/Aggregate Spool RowCount Spool Table
14. • DISTINCT • JOIN • TOP / WHERE SinDemo Demo • ORDER BY • UNION
15. Plan de Ejecución Estimado Plan de Ejecución Real
16. 1 SORT_IN_TEMPDB CREATE NONCLUSTERED INDEX FLPS242D ON dbo.FLPS242(PaiCod, DivNiv1Cod, EstNum, EscNumDet, PGETarNum, PGECtaObjCod, PGECatCtaObjCod )WITH (SORT_IN_TEMPDB = ON);
17. Si tiene disco(s) separadospara TempDB: SORT_IN_TEMPDB
18. 2 Tablas TemporalesUsuario Tablas Temporales Globales Variables Tabla Tablas funciones “Table-Value”
19. 2SUBCONSULTAS TABLAS TEMPORALES CTE VS VARIABLES TABLA VISTAS
20. 2VARIABLES TABLA VS TABLAS TEMPORALES TEMPORARY TABLES TABLE VARIABLESStatistics Yes No Only withIndexes Yes constraintsSchema modifications Yes NoAvailable in child routinesincluding sp_executesql Yes NoUse with INSERT INTO … EXEC Yes NoIn memory structures No No
21. • En general: Subconsultas, Vistas y CTES ofrecen mejor desempeño, pero …• Variables tabla para número bajo de filas sino Tablas Temporales
22. Tipos de Funciones Multi-Escalares En Línea Sentencia
23. Tipos de Funciones •Mono-hilo •InterpretadasEscalares
24. Tipos de Funciones •Múltiples comandos •Almacenan en TempDB Multi-Sentencia
25. Tipos de Funciones •Funcionalidad limitada •Sin cuerpo •Mono-SELECTEn Línea
26. • De preferencia usar funciones En línea (In-Line).• Si se requiere la funcionalidad multi-sentencia, pero con número filas limitado.
27. Versionamiento 3 Read Snapshot Online After Commited MARS isolation Index Triggers Snapshot
28. Evita el “Shared Lock”= Noespero consistencia Puede retornar la misma fila, varias veces Puede brincarse filas commitedTiende a producir INDEX SCAN,y otros efectos colaterales
29. Cuando salenmal las cosas?
30. Estructura FISICA
31. PFSPáginas GAM SGAMExtents IAM
32. Página
33. Extent
34. Byte por página HEAPS LOB OVERFLOWPFS
35. Global Allocation Map LibreMixto Estado Uniforme0 0 1 GAM GAM Shared Allocation Map1 0 0 SGAM SGAM Bit por Extent Index Allocation Map IAM
36. • 1 Archivo por núcleo (core), hasta 8.<=8 • 8 archivos por los 8 primeros núcleos.9-16 • 1 archivo por cada 2 núcleos adicionales. • 12 archivos para los primeros 16>16 núcleos • +1 archivos para cada 4 núcleos.
37. • Lo que sea necesarioTamaño • En dividido en cantidades iguales por archivos • RAID 10 $$$ RAID • RAID 1 $ • Discos Rápidos IO • En algunos ambientes separar el LOG de la BD