El documento habla sobre las estadísticas en las bases de datos y su importancia para la optimización de consultas. Explica que las estadísticas representan la distribución de datos en columnas y ayudan al optimizador a determinar la selectividad, cardinalidad y densidad de los datos. También cubre cómo crear estadísticas de forma automática o manual, leer estadísticas existentes y mantenerlas de forma automática u manual para que reflejen los cambios en los datos.
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
1. Descubriendo el corazón de la
optimización “Estadísticas más
que un concepto
Ahias Portillo
MVP en Plataforma de Datos
DPA SolidQ
2. Speaker Bio
2
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. 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
4
5. 5
¿Qué son?
Pueden ser creadas automáticamente (AUTO_CREATE_STATISTICS)
Nos ayuda a determinar:
Selectividad
Cardinalidad
Densidad
5
6. 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
18. 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
22. 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
24. Thank You for Attending
Follow @pass24hop
Share your thoughts with hashtags
#pass24hop & #sqlpass
Notas del editor
¿Cuáles son estadísticas?Optimizador de consultas de SQL Server utiliza estadísticas de distribución para determinar cómo va a satisfacer su consulta SQL. Estas estadísticas representan la distribución de los datos dentro de una columna, o columnas. El optimizador de consultas los utiliza para estimar cuántas filas se devolverán a partir de un plan de consulta. Sin estadísticas para mostrar cómo se distribuyen los datos, el optimizador no tiene ninguna manera se puede comparar la eficiencia de los diferentes planes y así se verán obligados con frecuencia a explorar simplemente la tabla o índice. Sin estadísticas, no puede posiblemente saber si la columna tiene los datos que está buscando sin pisar a través de él. Con información sobre la columna, el optimizador puede hacer mucho mejores decisiones acerca de cómo se va a acceder a sus datos y el uso de sus índices.Estadísticas de distribución se crean automáticamente al crear un índice. Si ha habilitado la creación automática de estadísticas (el ajuste predeterminado de la configuración de base de datos AUTO_CREATE_STATISTICS) también obtendrá estadísticas creadas cada vez que una columna se hace referencia en una consulta como parte de una cláusula de filtrado o Únete criterios.Los datos se mide de dos maneras diferentes dentro de un mismo conjunto de estadísticas, por la densidad y distribución
¿Cuáles son estadísticas?Optimizador de consultas de SQL Server utiliza estadísticas de distribución para determinar cómo va a satisfacer su consulta SQL. Estas estadísticas representan la distribución de los datos dentro de una columna, o columnas. El optimizador de consultas los utiliza para estimar cuántas filas se devolverán a partir de un plan de consulta. Sin estadísticas para mostrar cómo se distribuyen los datos, el optimizador no tiene ninguna manera se puede comparar la eficiencia de los diferentes planes y así se verán obligados con frecuencia a explorar simplemente la tabla o índice. Sin estadísticas, no puede posiblemente saber si la columna tiene los datos que está buscando sin pisar a través de él. Con información sobre la columna, el optimizador puede hacer mucho mejores decisiones acerca de cómo se va a acceder a sus datos y el uso de sus índices.Estadísticas de distribución se crean automáticamente al crear un índice. Si ha habilitado la creación automática de estadísticas (el ajuste predeterminado de la configuración de base de datos AUTO_CREATE_STATISTICS) también obtendrá estadísticas creadas cada vez que una columna se hace referencia en una consulta como parte de una cláusula de filtrado o Únete criterios.Los datos se mide de dos maneras diferentes dentro de un mismo conjunto de estadísticas, por la densidad y distribución
•RANGE_HI_KEY - This is also called a key value and represents the upper bound column value for a histogram step.
•RANGE_ROWS - This represents the estimated number of rows whose column value falls within a histogram step, excluding the upper bound.
•DISTINCT_RANGE_ROWS - This represents the estimated number of rows with a distinct column value within a histogram step, excluding the upper bound.
•EQ_ROWS - This represents the estimated number of rows whose column value equals the upper bound of the histogram step.
•AVG_RANGE_ROWS (RANGE_ROWS / DISTINCT_RANGE_ROWS for DISTINCT_RANGE_ROWS > 0) - This represents the average number of rows with duplicate column values within a histogram step, excluding the upper bound.
SAMPLING: Default: 8 MB
FULL SCAN
ALTER INDEX REORGANIZE
(STATISTICS_NORECOMPUTE )