Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Una luz dentro del mundo oculto de estadísticas SQL Server

116 views

Published on

http://pa.summit.solidq.com
Presentación durante el SolidQ Summit Panama City 2016

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Una luz dentro del mundo oculto de estadísticas SQL Server

  1. 1. #SQSummit Una luz dentro del mundo oculto de las estadísticas de SQL Server Javier Loria JLoria@solidq.com /in/JavierSQL @JavierSQL
  2. 2. Agenda Que son? y para que se usan? Creando estadísticas Leyendo estadísticas Manteniendo estadísticas
  3. 3. Qué son? • Objetos que mantienen información sobre columnas de tablas o vistas • Selectividad • Cardinalidad • Densidad • Se construyen: • Automáticamente • Indirectamente • Directamente
  4. 4. Conceptos • Grado en que puede distinguirse un valor del grupo. • Sexo es menos selectivo que DNI Selectividad • Opuesto a Selectividad • 1.0 / COUNT(DISTINCT <ColumnName>)) Densidad • Número de Filas que satisface un predicado. Cardinalidad
  5. 5. Para que sirven las estadísticas? • Para hacer buenos planes de acceso. • No son la única fuente de información • sys.sysindexes: filas (rows) y páginas (dpages) • Funciones de partición, CHECKs y otros
  6. 6. Demo Planes y estadísticas
  7. 7. Demo Conceptos • Selectividad • Densidad • Cardinalidad Consultas • Diferentes parámetros: diferentes planes • Diferentes estadísticas: diferentes planes Estadística Incorrecta • Planes Sub-Óptimos
  8. 8. Creación de Estadísticas • Automáticamente • CREATE INDEX • Columna se usa en un Predicado (WHERE o ON) • BD en Auto_Create y sin Estadísticas • Individualmente: CREATE STATISTICS • Granel: SP_CREATESTATS --(IndexOnly) • Indirectamente: • Columnas fecha correlacionadas (DATE_CORRELATION_OPTIMIZATION)
  9. 9. Demo Creación de estadísticas
  10. 10. Demo Índices • Asociados con una estadística Predicados de Consultas • Crean estadísticas, si se usa AUTO_CREATE Estadísticas Incorrectas • Planes Sub-Óptimos Recomenda ción • SP Fechas: • DATE_CORRELATION_OPTIMIZATION
  11. 11. Leyendo Estadísticas STATS_DATE function SAMPLE option o Default (8 Mb) WHERE
  12. 12. Doble Histograma: Rango y valor
  13. 13. Leyendo Estadísticas Mínimo Siempre Valor Max Rango Núm. Filas Rango ][ Núm. Filas = Llave Valores Distintos SELECTIVIDAD Núm. Filas Promedio x Valor (DENSIDAD)
  14. 14. Demo Leyendo estadísticas
  15. 15. Demo Resumen de Demo Estadísticas • Ayudan a estimar la cardinalidad • Crean/Mantienen solas (Default) • Campo para optimización. DBCC SHOW… • Para evaluar la calidad • Incorrectas? o Desactualizadas? Estadísticas • Guía de calidad de un índice. • Sin respuestas definitivas Como se aprende a leer: • LEYENDO!
  16. 16. Mantenimiento de Estadísticas • Automáticamente • ALTER INDEX REBUILD • CREATE INDEX WITH (DROP_EXISTING=ON) • AUTO_UPDATE • ALTER INDEX REORGANIZE • Manualmente • UPDATE_STATISTICS • sp_updatestats
  17. 17. Porque importa? IO: Leen la tabla CPU: Recompilan los comandos Tiempo: Se hacen durante la consulta (default)
  18. 18. AUTO_UPDATE_STATISTICS • Caducan • Tabla en Base de Datos Local: • 0 a >0 • <=500 y cambios (1ra Fila) >500 • >500 y cambios (1da Fila) >500 + 20% filas originales • Temporales • <=6 y cambios (primera fila ) >6 • Variables Tabla: sin estadísticas
  19. 19. Flujo de (Re)Compilación AUTO_UPDATE_STATISTICS_ASYNC
  20. 20. Actualización Asincrónica • Sintaxis: ALTER DATABASE STATDemo SET AUTO_UPDATE_STATISTICS_ASYNC ON; • Beneficio: • Consultas más predecibles • Menos riesgo de «TimeOut» • Contras: • Planes sub-óptimos • Usar en VLDB
  21. 21. Demo Actualización de estadísticas
  22. 22. Demo DML Up-Del Ins-Merg • Cambios en estadísticas • Cambios en Planes • Re-compilaciones SQL 2005+ • Control por columna • Reduce el impacto del Actualización Temporales • Cuidar las re-compilaciones • Crear y Llenar al Principio • Tablas grandes no usar variables. VLDB • Asincrónicas?
  23. 23. Impacto de las Estadísticas Con Estadísticas Sin Estadísticas
  24. 24. Monitoreando con Profiler • AutoStats • stmtCompleted • SELECT StatMan([SC0]) FROM (SELECT TOP 100 PERCENT <Columna> AS [SC0] FROM <Tabla> WITH (READUNCOMMITTED) ORDER BY [SC0] ) AS _MS_UPDSTATS_TBL
  25. 25. Demo Actualización de estadísticas
  26. 26. Mejores Prácticas • Mantener BD en: • AUTO_CREATE_STATISTICS • AUTO_UPDATE_STATISTICS • En OLTP: • 8x5: sp_updatestats (Diario o Semanal) • 24x7: CREATE STATISTICS en JOBS durante horas de poco trabajo. • En DW Relacional: • Apagar/Prender AUTO_CREATE/UPDATE en ETL.
  27. 27. Mejores Prácticas: Especiales • Usa Auto-numéricos o Fechas Crecientes: • Trace Flag: 2389 o 2389/2390. • Trigger personalizado • Job de Actualización de estadísticas seleccionadas. • VLDB • AUTO_UPDATE_STATISTICS_ASYNC • Exceso de Re-compilaciones • Considerar patrones de tablas temporales y opciones "KEEP PLAN" y "KEEPFIXED PLAN" • Usar STATISTICS_NORECOMPUTE en tablas específicas y actualizar periódicamente. • Evaluar: DATE_CORRELATION_OPTIMIZATION
  28. 28. Resumen Que son? y para que se usan? Creando estadísticas Leyendo estadísticas Manteniendo estadísticas
  29. 29. Una luz dentro del mundo oculto de las estadísticas de SQL Server

×