velocidad ejecucion sql server

6
Comportamiento de búsqueda al aplicar distintos tipos de índices. SQL SERVER Alumno: Walter Dávalos Materia: Bases de Datos 2 Fecha de Entrega: 9/4 Profesoras: Rosa Wainer, Valeria Becker.

Upload: walter-davalos

Post on 19-Dec-2015

218 views

Category:

Documents


0 download

DESCRIPTION

Velocidad de extraccion de datos con indices cluster y no cluster

TRANSCRIPT

Comportamiento de bsqueda al aplicar distintos tipos de ndices.SQL SERVER

Alumno: Walter DvalosMateria: Bases de Datos 2Fecha de Entrega: 9/4Profesoras: Rosa Wainer, Valeria Becker.

IntroduccinEn el presente informe se detallaran los datos relevados al realizar consultas sobre distintas tablas, observando el tiempo de respuesta del motor de base de datos al aplicar las consultas, aplicadas con distintos ndices o sin ellos.En este caso se ha optado por la utilizacin de la base de datos SQL Server versin 2008.

Para el siguiente informe primeramente se realiza la instalacin de la base SQL Server 2008 y se comenz creando una tabla con 131 registros llamada EMPLOYEES

En esta tabla tenemos un ndice non clustered sobre el atributo primary key ID y un ndice cluster sobre el atributo name. Al aplicar bsqueda por estas columnas no se obtuvieron diferencias en los tiempos de respuesta, probablemente por la baja cantidad de registros. Dada esta situacin me vi obligado a recurrir a una tabla con un volumen ms grande de datos.

La siguiente tabla llamada LogActividad contiene un total de 904309 registros, lo cual nos puede dar un buen muestreo para la ejecucin de consultas y la medicin de velocidad de procesamiento de la base de datos.Esta tabla contiene un ndice nonclustered sobre uno de sus atributos llamado WorkflowInstanceId y un ndice clustered sobre otro su primary key Id.

La primera consulta que se muestra fue realizada sobre el ndice nonclustered de la tabla y le tomo al motor traer los registros unos 3 milisegundos.

Pasando al ndice cluster sobre la primary key Id se observa

Podemos ver que al comparar por el ndice cluster sobre id se tiene un tiempo de respuesta 10 veces ms alto aunque traiga un solo registro. Se puede inferir que los ndices cluster son un poco ms lentos al realizar bsqueda de datos que los nonclustered.Ahora vamos a mostrar una bsqueda sobre un atributo sin ndice que para esta tabla seria la columna Fecha

Se puede ver un tiempo de respuesta mucho ms alto que cuando se aplicaron bsqueda con los ndices.Conclusin

Aplicar bsquedas sobre ndices clustered es menos eficiente que aplicarlos sobre ndices nonclustered, y realizar bsquedas sobre campos sin ndices es mucho ms ineficiente aun.Aunque sea ms ineficiente la bsqueda sobre el ndice clustered se debe notar que SQL Server por defecto crea ndices clustered sobre los primary key. Esto se debe a que al ser un primary key autoincremental es mucho ms fcil la insercin sobre ellos ya que se genera mucha menos fragmentacin, porque que los registros se aaden al final de las tablas. Esto no sera as si se usara un ndice clustered sobre un atributo que no es autoincremental. Finalmente podemos decir que la eleccin de los ndices debe pensarse segn las tareas que vayan a realizarse con los distintos datos de cada tabla.