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

 



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