Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010.

Slides:



Advertisements
Presentaciones similares
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
Advertisements

SQL Sigla del nombre “Structured Query Language”.
integridad referencial
Rocío Contreras Águila Primer Semestre 2010
Ejercicios Solemne 2 Parte 1
Procedimientos de Almacenado
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
Rocío Contreras Águila Primer Semestre 2010
BASE DE DATOS OBJETO RELACIONAL
Implementación de funciones definidas por el usuario
Optimización del rendimiento de las consultas
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Bienvenido a Marangatu'i, Módulo del Contribuyente de la SET!
Aprendizaje de Microsoft® Access® 2010
Por: Ronald Toscano Pretelt
Tablas involucradas en esta Consulta La consulta a crear es: ¿cuál es el valor de los predios de la empresa La Paulina?
SISTEMA DE NACIMIENTOS MANUAL DEL USUARIO. El objetivo del presente manual es servir de guía al usuario final para interactuar con el Sistema, permitiéndole.
Baremos del Test de Dominos
NOELIA OJEDA ROMERO NATHALIE VELEZ MACIAS TEMA: REGLAS Y ALERTAS
PL/SQL Francisco Moreno Universidad Nacional.
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
MySQL M.C. Pedro Bello López.
SQL Lenguaje de consulta estructurado
Como empezar en Access 2000 Abrir Access 2000 Pulsamos INICIO
Subconsultas Avanzadas
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Componentes sintácticos
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Mt. Martín Moreyra Navarrete.
tipo de datos uniqueidentifier
HERRAMIENTAS DE EXCEL ORDENAR Y FILTAR.
COMANDOS SQL.
Aprenda MySQL en 120 minutos Tutorial. Dirigido a...
3. Espacios de trabajo. Manual de formación 2 3. Espacios de trabajo 3.1 Introducción … ……pág.45.
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
ESCUELA TECNOLÓGICA INSTITUTO TÉCNICO CENTRAL Ing. Johanna Vargas Esp. Gerencia de proyectos.
CONSULTAS SENCILLAS A LA BASE DE DATOS
Autora: Francisca Montañez Muñoz
Microsoft Office Excel
Bases de Datos 1 Prof. Daniel Obando Fuentes. USE USE {database}; Cambia el contexto de base de datos Es decir, dice cuál es la base de datos que se utilizará.
LENGUAJE SQL.
Bases de Datos Sql.
Structured Query Language (Lenguaje Estructurado de Consultas)
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Access.
Instrucciones para crear tablas My SQL. A nivel teórico, existen dos lenguajes para el manejo de bases de datos: DDL (Data Definition Language) Lenguaje.
SQL Sigla del nombre “Structured Query Language”.
Diseño de una base de datos y elementos básicos Integrantes: López Ponce de León José Efrén Velazquez Martínez Brenda Equipo:10Grupo:307.
Base de Datos I. SQL es el lenguaje estándar para trabaja con base de datos relacionales. MySQL, el sistema de gestión de bases de datos SQL Open Source.
SQL Lenguaje Estructurado de Consulta MATERIA: diseñar sistemas de información ALUMNO: sarmiento flores Liliana Guadalupe GRUPO: 4° “A” TURNO: matutino.
Tema 11 Bases de Datos y el Lenguaje SQL
Introducción a phpMyAdmin
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
Utilizar Costo Promedio Ponderado en el Software Administrativo SAW
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
INTERFAZ DE ACCESS  Access es un sistema gestor de bases de datos relacionales (SGBD). Una base de datos suele definirse como un conjunto de información.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
INTEGRANTE: FLORES GODOY JUAN E. Grupo:308. Una tabla es una colección de datos sobre un tema específico, como productos o proveedores. Al usar una tabla.
Partes de la ventana Access
¿Cómo programar un Botón para agregar registros a una base de datos?
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Bases de Datos SQL.
QUÉ ES UNA BASE DE DATOS? Es un Conjunto de Información, que está clasificada de distintas maneras; pero que comparten entre sí algún tipo de vínculo,
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
DML Transact SQL Sesión VI Trabajando con subconsultas.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Transcripción de la presentación:

Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010

¿Qué son las estadísticas? Las estadísticas de SQL Server son información sobre la distribución de los datos existentes en las columnas de las tablas de nuestra base de datos. A través de las estadísticas, el servidor conoce como es la información de una columna, como por ejemplo, si varía mucho, si todos los datos son iguales y los niveles de variación que hay.

¿Qué son las estadísticas? Esta información la utiliza cuando nosotros le pedimos datos de ciertas tablas que cumplan con ciertas condiciones (select.. from.. where). Las condiciones que especificamos en el where de una consulta son analizadas por el optimizador de consultas para determinar cual es la forma más rápida de obtener la información requerida.

¿Qué son las estadísticas? Suponiendo que tenemos una consulta con varias condiciones en el where, el servidor examina las estadísticas asociadas a las columnas referenciadas en el where, como también los índices existentes en la tablas, y donde participan esas columnas.

¿Qué son las estadísticas? Para el caso de los índices, SQL Server maneja un conjunto de estadísticas de forma similar que para una columna de una tabla, independiente del tipo de índice (agrupado o no agrupado).

¿Qué son las estadísticas? Si hay un índice sobre la columna en que estamos buscando, en la mayoría de los casos lo usará (dependerá de las estadísticas y de otros factores) y en caso contrario, realizará un SCAN sobre la tabla o el índice agrupado (en caso de tener).

¿Cómo se consultan los catálogos internos? Algunas de las tablas a las que hacemos referencia en las consultas no necesariamente existen físicamente y muchas de ellas, o son vistas solamente o se construyen al momento de ejecutar

¿Cómo se consultan los catálogos internos? Los objetos (tablas, procedimientos, etc.) rara vez están almacenados por el nombre que nosotros le damos, sino que por un identificador interno. Para obtener el identificador interno de un objeto, existe una función llamada object_id('objeto') que lo retorna, pudiendo usarse en una consulta o una instrucción set.

¿Cómo se consultan los catálogos internos? El catálogo donde se almacena la información de los índices y estadísticas de una tabla se llama sysindexes. Para consultarlo se debe entonces filtrar la información por el id de la tabla TEST, como se muestra en la siguiente consulta: select * from sysindexes where id = object_id('test')

¿Cómo se consultan los catálogos internos? Como resultado de esta consulta, podrán obtener algo similar a lo siguiente. El resultado nos indica que para la tabla test (id = ), hay creado un solo índice agrupado (indid = 1) y que utiliza 2 páginas (dpages = 2).

Ejemplo 1 CREATE TABLE [dbo].[Test] ( [identificador] [int] IDENTITY (1, 1) NOT NULL, [nombre] [varchar] (50) NOT NULL, [apellido] [varchar] (50) NOT NULL, [direccion] [varchar] (50) NOT NULL, [fechanacimiento] [datetime] NOT NULL, [login] [varchar] (20) NOT NULL ) ON [PRIMARY] GO

Ejemplo 1 Insertemos algunos registros en la base tabla de prueba, copiándolos de EMPLOYEE en la base de datos PUBS. insert into test (nombre, apellido, direccion, fechanacimiento) (select fname, lname, fname + ' ' + lname + ' ' + cast(hire_date as varchar(100)), hire_date from pubs..employee)

Ejemplo 1 Ahora tenemos nuestra tabla, con un índice agrupado (cluster) en la columna de identidad, y con un cantidad de registros pequeña. Para el objetivo de nuestro ejemplo no es necesario tener gran cantidad de registros.

Ejemplo 1 Existen dos formas tradicionales de ver las estadísticas. Una de ellas es consultando el catálogo interno de SQL Server o la otra es a través de la interfaz gráfica asociada al plan de ejecución de una consulta.

Ejemplo 1 Si realizamos ahora una consulta simple sobre la tabla buscando por la columna apellido, que sabemos no está considerada en ningún índice, se realizarán cambios sobre sysindexes. Por ejemplo, si la siguiente consulta retorna o no registros, las estadísticas serán creadas (por que nuestras base de datos está configurada para que las cree automáticamente). select * from test where apellido = 'gonzález'

Ejemplo 1 Haciendo nuevamente la consulta sobre sysindexes, el resultado cambia, obteniéndose un nuevo registro. Se sabe que es una estadística ya que la cantidad de paginas (dpages = 0) y el grupo es 0.

Las estadísticas Ahora, si se quiere conocer que hay en la estadística, existe una instrucción de administración llamada dbcc showstatistics (tabla, indice|estadística) para hacerlo. El resultado de la ejecución de dbcc show_statistics (test, _WA_Sys_ _3E327A44) se despliega ahora.

Las estadísticas

El resultado se divide en tres grupos: El primer grupo nos entrega información general de la estadística. Acá encontramos el nombre, fecha de actualización, la cantidad de filas de la tabla (Rows = 100), la cantidad de filas que se consideraron para obtener la muestra (Rows Sampled = 100), la cantidad de pasos (steps = 89) (explicado más adelante), la densidad y el largo promedio de los datos de la columna en el caso de una estadística o el largo promedio de los datos del índice en caso de ser un índice.

Las estadísticas El segundo grupo muestra datos específicos asociados a la columna. En este caso, la densidad (0, ), el largo promedio y la columna. Para el caso de un índice, presenta varias líneas con información y densidades para las columnas del índice, mostrando desde la primera columna hasta todas las columnas juntas. La densidad se obtiene de calcular la siguiente ecuación: Densidad = 1 / (cardinalidad de la llave del índice)

Las estadísticas La cardinalidad de la llave corresponde a la cantidad de datos únicos de la columna o columnas. Lo importante es que la densidad sea el valor más chico posible. Mientras más pequeño, SQL Server obtendrá mejores resultados en las búsquedas. Por ejemplo, si la densidad de un índice es 0,3, significa que sólo se puede filtrar hasta un 30% de los datos con ese índice, resultado que puede considerarse muy malo. Un buen valor debe estar por debajo del 5%. En nuestro ejemplo, un densidad de 0,0109 (1%) significa que en la tabla hay 1/0,0109 valores diferentes, o 91. La consulta select count(distinct(apellido)) from test confirma el resultado.

Las estadísticas El tercer bloque corresponde a la distribución de los datos de la columna en la tabla. Para un índice de varias columnas se considera sólo al valor de la primera columna. La información se segmenta por rangos (los pasos = 89), donde en cada línea se encuentran los valores correspondientes a los datos que están entre el RANGE_HI_KEY de esa línea y son menores a RANGE_HI_KEY de la línea de más abajo.

Las estadísticas En el resultado desplegado antes, se obtiene que entre administrador y Aladino Carcamo, no hay más valores (RANGE_ROWS = 0), hay 4 valores iguales (EQ_ROWS = 4), no hay valores diferentes en el rango sin considerar el mismo valor administrador (DISTINCT_RANGE_ROWS = 0), y para finalizar, el promedio de filas (cantidad) por cada valor distinto en el rango es uno (AVG_RANGE_ROWS = 1). Corresponde notar que DISTINCT_RANGE_ROWS no incluye las filas que son iguales a RANGE_HI_KEY ya que estas están incluidas en EQ_ROWS.

Las estadísticas Toda esta información le permite saber al optimizador de consultas como es la información de la columna o índice, sin necesidad de "tocar" los datos. Y por el mismo motivo, si queremos que el analizador siempre encuentre la mejor opción y el servidor responda al máximo, debemos proveer a éste de las estadísticas actualizadas.

Las estadísticas Por lo tanto, podemos decir que las estadísticas pueden actualizarse o eliminarse manualmente a través de la interfaz gráfica o de consultas sql (drop statistics). Además, conviene saber que SQL Server se encarga de actualizarlas y eliminarlas cuando estima que es necesario, pero también puede agregarse una tarea de mantención que las actualice cada cierto tiempo.