Post on 11-Apr-2017
Descubriendo el corazón de la optimización “Estadísticas más que un conceptoAhias PortilloMVP en Plataforma de DatosDPA SolidQ
2
Speaker Bio
Soy un profesional del informática con más de 9 años de experiencia en el desarrollo de soluciones informáticas, actualmente soy un arquitecto de datos para SolidQ, especializado en el uso de herramientas de inteligencia de negocios con tecnologías Microsoft, cuento con dos especialidades enfocadas en base de datos e inteligencia de negocios cursadas en Cenfotec Costa Tica. He participado en proyectos regionales (Centro América) y de América del norte (Estados Unidos).
Soy el fundador de la comunidad de base de datos “El Rincón de Sql Server” y el líder de capitulo oficial de PASS en El Salvador, los cual me ha permitido recibir el nombramiento de MVP en Plataforma de Datos, siendo el único profesional de El Salvador con este reconocimiento.
3
Agenda
Que son? y para que se usan?
Creando estadísticas
Leyendo estadísticas
Manteniendo estadísticas
4 4
¿Qué son?
Elemento base que utiliza el optimizador de consulta. Representan la distribución de los datos dentro de una columna o
columnas. Sin estadísticas el motor no puede comparar la eficiencia de los
diferentes planes de ejecución. Sin estadísticas es necesarios escanear
5 5
¿Qué son?
Pueden ser creadas automáticamente (AUTO_CREATE_STATISTICS) Nos ayuda a determinar:
Selectividad Cardinalidad Densidad
6
¿Qué son?
• Grado en que puede distinguirse un valor del grupo.• Sexo es menos selectivo que Documento de Identidad
Selectividad
• Opuesto a Selectividad• 1.0 / COUNT(DISTINCT <ColumnName>))
Densidad
• Número de Filas que satisface un predicado.
Cardinalidad
7 7
¿ Para que se usan?
8 8
¿ Para que se usan?
Demo
9
10 10
Creación de Estadísticas (Índices)
11 11
Creación de Estadísticas (Automático)
12 12
Creación de Estadísticas (Manual)
Demo
13
14 14
Leyendo estadísticas
DBCC SHOW_STATISTICS('[SqlSat].[Customers]',[PK_Customers])
15 15
Leyendo estadísticas
DBCC SHOW_STATISTICS('[SqlSat].[Customers]',[PK_Customers])
Demo
16
17
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
18
AUTO_UPDATE_STATISTICS
Caducan Tabla en Base de Datos Local:
0 a >0 <=500 y cambios (1ra Columna) >500 >500 y cambios (1ra Columna) >500 + 20% filas originales
Temporales <=6 y cambios (primera fila ) >6
Variables Tabla: sin estadísticas
19
Flujo de (Re)Compilación
AUTO_UPDATE_STATISTICS_ASYNC
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
Demo
21
22
Mejores practicas
• Habilitar Auto Create, Actualización Automática• Actualizar estadísticas todas las veces que se generar un índice• Actualizar solo estadísticas de columnas si el índice ha sido
reconstruido• Valida sus estadísticas Estimado vrs Filas Reales
Questions?
Thank You for AttendingFollow @pass24hop
Share your thoughts with hashtags #pass24hop & #sqlpass