Está en la página 1de 24

15/03/12

Haga clic aqu para instalar Silverlight

Microsoft TechNet Latinoam rica


Latinoam rica Cambiar | Todos los sitios de Microsoft

B
Home
I nic io Bibliotec a E ntrenamiento D es c arga Soporte C omunidad Seguridad T ec hC enters M s P opulares A c eleradores de Soluc iones A dminitrac in de Sis temas Windows M edianas E mpres as O ffic e Servidores E valuac in de Software

ca Mic o of .com

| Suscrbase | Descarga | C ontctenos | Simplified Ajuste y optimizacin del rendimiento de MS SQL Server para programadores, primera parte: Introduccin a los aspectos de rendimiento DAT 410 Presentado en Tech-Ed 97 Adam Shapiro Director de programas Microsoft Corporation

Objetivos de rendimiento

El objetivo del ajuste de rendimiento consiste en proporcionar un tiempo de respuesta aceptable en las consultas al minimizar el trfico de la red, reducir la entrada y salida de disco y minimizar el tiempo de C PU para permitir el mximo rendimiento de los procesos de todos los usuarios. Este objetivo se logra mediante el anlisis de los requisitos de las aplicaciones, la comprensin de la estructura fsica y lgica de los datos, y la capacidad de evaluar y negociar las contrapartidas entre usos conflictivos de la base de datos, como el procesamiento de transacciones en lnea (OLTP), frente a la ayuda a la toma de decisiones.

Tiempo de respuesta frente a rendimiento


El tiempo de respuesta mide la cantidad de tiempo necesario para que se devuelva el primer conjunto de resultados. Normalmente se hace referencia al tiempo de respuesta como el tiempo que tarda el usuario en recibir una afirmacin visual de que una consulta est en proceso. El rendimiento mide el nmero total de consultas que el servidor puede controlar durante un espacio de tiempo dado. A medida que aumenta el nmero de usuarios, aumenta la contencin entre usuarios lo que, a su vez, puede hacer que aumente el tiempo de respuesta y descienda el rendimiento general.

Cmo se mide el rendimiento


El rendimiento se puede medir mediante la cantidad de entrada y salida necesaria para procesar una transaccin, la cantidad de tiempo de C PU y el tiempo de respuesta. El rendimiento vara segn cada entorno especfico y depende de la aplicacin, la arquitectura y recursos, el servidor y las actividades simultneas.

Factores que tienen impacto en el rendimiento

www.microsoft.com/latam/technet/articulos/200005/art02/

1/24

15/03/12

Microsoft TechNet Latinoam rica

Recursos del sistema

Memoria
La existencia de una cantidad suficiente de RAM resulta vital para el rendimiento de SQL Server.

Procesador
El nmero de procesadores, as como su velocidad, tiene un impacto directo sobre el rendimiento general.

Disco
El nmero, velocidad y tipo de las unidades de disco, as como los tipos de controladores utilizados, afectan al rendimiento.

Red
La actividad de red simultnea puede tener impacto en el rendimiento de SQL Server. Tambin tienen importancia el ancho de banda de la red y la velocidad de transferencia de los datos.

Sistema operativo Windows NT

www.microsoft.com/latam/technet/articulos/200005/art02/

2/24

15/03/12

Microsoft TechNet Latinoam rica

Subprocesos
Al ajustar las prioridades de los subprocesos se permite que SQL Server equilibre sus necesidades con las de los dems servicios y con las necesidades del propio sistema operativo Microsoft Windows NT . El nmero de subprocesos asignados por SQL Server puede tener impacto en el rendimiento.

Archivo de paginacin
El tamao, nmero y ubicacin de los archivos de paginacin puede tener un impacto importante en el rendimiento del sistema.

Servicios
Los dems servicios que se ejecutan en Windows NT competirn por los recursos que necesita SQL Server. C errar los servicios innecesarios puede tener un impacto positivo.

Administracin de discos
Windows NT dispone de determinadas caractersticas de administracin de discos como la creacin de bandas y espejos que pueden tener impacto sobre el rendimiento. Este impacto no siempre ser positivo.

Actividades simultneas
Otras actividades, como los programas de cliente y compiladores, pueden competir con SQL Server por ciclos de C PU, acceso de disco y ancho de banda de la red.

SQL Server

Configuracin
www.microsoft.com/latam/technet/articulos/200005/art02/ 3/24

15/03/12

Microsoft TechNet Latinoam rica


Muchas de las variables de configuracin de SQL Server pueden tener un impacto directo sobre el rendimiento del servidor.

Bloqueo
La disputa por los recursos de base de datos (tablas y pginas individuales) puede hacer que los procesos se bloqueen y tiene un impacto importante sobre el rendimiento general en un entorno multiusuario.

Registro
A excepcin de las operaciones especficas no registradas, se debe registrar cada modificacin realizada en una base de datos. La propia grabacin del registro puede tener impacto en el rendimiento y el registro de transacciones (s slogs) puede convertirse en uno de los orgenes de la contencin.

Actividades simultneas
Las actividades de mantenimiento, como las copias de seguridad y restauraciones, DBC C y generacin de ndices, pueden interferir con las actividades de produccin.

Aplicaciones de bases de datos

Diseo fsico y lgico


El nivel de normalizacin y desnormalizacin puede afectar al rendimiento de las consultas. El diseo fsico incluye la eleccin de ndices y se explicar detalladamente.

Evitar interbloqueos
Los interbloqueos repetidos pueden disminuir el rendimiento de una aplicacin. Existen tcnicas de programacin que pueden reducir la posibilidad de que se produzcan interbloqueos.

Control de transacciones
Las transacciones, bloqueos e interbloqueos estn muy relacionados entre s. El nivel de control de transacciones que utiliza una aplicacin puede tener un impacto importante sobre la duracin de los bloqueos y el rendimiento general de una aplicacin.

Consultas
La forma en que se escriben las consultas individuales, incluido el hecho de si estn encapsuladas en procedimientos almacenados o no lo estn, puede determinar si se utiliza un plan ptimo para obtener el mximo rendimiento.

Aplicacin cliente

www.microsoft.com/latam/technet/articulos/200005/art02/

4/24

15/03/12

Microsoft TechNet Latinoam rica

Requisitos de usuario
Los requisitos de usuario para realizar modificaciones y ejecutar consultas pueden tener una influencia importante en el rendimiento de una aplicacin.

Control de interbloqueos
Los programas cliente pueden reaccionar ante los interbloqueos de SQL Server de diversas formas. Las respuestas ms eficaces pueden aumentar mucho el rendimiento del sistema cliente.

Control de transacciones
Las transacciones tambin se pueden controlar desde la aplicacin cliente. Adems, algunas aplicaciones cliente pueden utilizar instrucciones de control de transacciones sin que el programador o el cliente sean conscientes de las mismas.

Cursores
Hay diversas formas de definir y manipular cursores y cada una tiene un impacto diferente sobre el rendimiento.

Qu se puede hacer?

El ajuste del rendimiento es ms un arte que una ciencia exacta. El objetivo del ajuste es aumentar el rendimiento al eliminar los cuellos de botella relacionados con la entrada y salida, la C PU o la red. Se puede realizar al reducir la cantidad de tiempo de procesamiento del sistema mediante la optimizacin del servidor, de los procesos y al minimizar la contencin de los datos.

Agregar ms hardware
www.microsoft.com/latam/technet/articulos/200005/art02/ 5/24

15/03/12

Microsoft TechNet Latinoam rica


A veces resulta til, aunque a menudo se pueden encontrar alternativas menos caras.

Optimizar SQL Server


Ajustar los valores de las opciones de configuracin.

Optimizar la base de datos


Mejorar el diseo lgico y fsico. Escribir mejores consultas. C rear ndices tiles.

Resolver los problemas de contencin y de simultaneidad


C oordinar la actividad de lectura frente a la de escritura. Minimizar la contencin de bloqueos. Evitar los interbloqueos.

Optimizar la aplicacin cliente


Utilizar procedimientos almacenados en lugar de consultas "ad hoc". Analizar y establecer prioridades en la combinacin de transacciones. Descargar datos y procesos del servidor cuando sea apropiado.

Ventajas de Windows NT

SQL Server aprovecha las capacidades mejoradas del sistema operativo Windows NT.

Arquitectura escalable
SQL Server puede aprovechar la escalabilidad de Windows NT desde equipos porttiles a grandes servidores de mltiples procesadores simtricos con compatibilidad con procesadores Intel y RISC (conjunto de instrucciones reducido).

Alta capacidad
SQL Server puede asignar hasta 2 gigabytes (GB) de memoria, que es lo que Windows NT permite para procesos de usuario. El tamao de las particiones del disco duro puede ser de, aproximadamente, diecisiete mil millones de GB (con NTFS).

Multiprocesamiento simtrico (SMP, S m m etric Multiprocessing)


Windows NT es un sistema operativo que puede utilizar SMP. Puede ejecutar cdigo de ambos sistemas operativos y cdigo de usuario en cualquier procesador disponible. C uando hay ms subprocesos para ejecutar que procesadores para ejecutarlos, el sistema operativo SMP tambin realiza multitarea y divide el tiempo de cada procesador entre todos los subprocesos que hay en espera. SQL Server aprovecha las capacidades de multiproceso de Windows NT. SQL Server, en lugar de implementar su propio motor de procesamiento, utiliza subprocesos independientes basados en Windows NT para dar servicio a cada cliente. Windows NT equilibra la carga y programa los subprocesos entre los procesadores automticamente. En equipos SMP, puede utilizar SQL Server para dedicar todos los recursos de la C PU a SQL Server.

Procesos nicos en multiproceso


SQL Server admite SMP en el nivel de subproceso y aprovecha el control de subprocesos de Windows NT

www.microsoft.com/latam/technet/articulos/200005/art02/

6/24

15/03/12

Microsoft TechNet Latinoam rica


de las siguientes formas: La arquitectura de un proceso dividido en mltiples procesos reduce la sobrecarga del sistema y los requisitos de memoria. Las aplicaciones divididas en procesos mltiples utilizan un nico espacio de direcciones. Dado que todos los subprocesos pertenecen al mismo proceso, se elimina la necesidad de coordinar los procesos de memoria compartida.

E/S asincrnica
Windows NT utiliza E/S asincrnica en la que una aplicacin enva una peticin de E/S y contina su ejecucin mientras el dispositivo transfiere los datos. Esto difiere de un sistema de E/S sincrnico, que no devuelve el control a la aplicacin hasta que no se completa la peticin de E/S. SQL Server aprovecha la E/S asincrnica de Windows NT y proporciona mayor rendimiento.

Utiliza servicios de Windows NT


SQL Server utiliza los servicios de Windows NT en subprocesos, programaciones, notificacin de sucesos, sincronizacin de procesos, E/S asincrnica, control de excepciones y seguridad integrada. SQL Server: Utiliza el registro de sucesos de Windows NT adems del registro de errores de SQL Server. Aprovecha el equilibrio automtico de la carga de Windows NT. Est completamente integrado con el Monitor de rendimiento de Windows NT. Puede aprovechar la seguridad de Windows NT para proporcionar inicios de sesin y contraseas integrados.

Metodologa de optimizacin del rendimiento

Esta metodologa de optimizacin del rendimiento proporciona un punto de partida para ajustar correctamente una base de datos para obtener un mejor rendimiento. Esta metodologa tambin sirve como marco de trabajo para los temas de este curso.

Metodologa de optimizacin del rendimiento (continuacin)

www.microsoft.com/latam/technet/articulos/200005/art02/

7/24

15/03/12

Microsoft TechNet Latinoam rica

Los pasos incluidos en esta metodologa se pueden realizar en una secuencia diferente de la mostrada aqu, tambin se pueden eliminar algunos pasos, segn la fase de produccin del entorno de base de datos.

Enfoques de la optimizacin del rendimiento

La optimizacin se puede enfocar de dos formas diferentes. En este curso, aprender cmo SQL Server tiene acceso a los datos, cmo controla las actividades simultneas de mltiples usuarios y cmo interacta con el sistema operativo. Puede utilizar estos conocimientos para planear el diseo lgico y fsico, configurar SQL Server, planear las transacciones y escribir las consultas para obtener un rendimiento ptimo. C omo alternativa, se puede enfocar la optimizacin para tratar un problema especfico. Una consulta se puede ejecutar lentamente o el rendimiento puede ser menor que el necesario. Puede obtener informacin acerca de la forma en que SQL Server se comporta y realizar los ajustes necesarios en la consulta y en la configuracin del sistema para obtener el rendimiento ptimo. Ambos enfoques son necesarios. Si tiene conocimientos profundos acerca del servidor, los usuarios, los datos y los procesos, pero no dispone de informacin del rendimiento, no ser consciente de que su tericamente bien diseada aplicacin no funciona tan bien como podra hacerlo. A la inversa, si dispone de todas las mediciones de rendimiento posibles, pero no conoce su aplicacin o el servidor, ser consciente de que tiene problemas de rendimiento, pero no sabr cmo resolverlos.

Introduccin a las estrategias de indizado

www.microsoft.com/latam/technet/articulos/200005/art02/

8/24

15/03/12

Microsoft TechNet Latinoam rica

Objetivos
Seleccionar ndices que sean tiles para diferentes tipos de consultas. C omparar y contrastar las estrategias de indizado de los sistemas de ayuda a la toma de decisiones (DSS) y de procesamiento de transacciones en lnea (OLTP). C rear ndices efectivos. Distinguir entre selectividad y densidad de unin. Determinar cundo no son tiles los ndices. Probar la utilidad de los ndices.

DSS y OLTP

La mayor parte de las consultas se dividen en estas dos categoras. Puesto que sus aspectos de indicacin pueden ser muy diferentes, se explicarn ambas categoras por separado.

Sistemas de ayuda a la toma de decisiones


Normalmente, la ayuda a la toma de decisiones implica varios argumentos de bsqueda y varias tablas. Las consultas pueden ser bastante complejas, ya que pueden utilizar funciones de agregado, agrupamiento y las operaciones C UBE y ROLLUP. Algunas veces, tambin se hace referencia a las mismas como procesamiento analtico en lnea (OLAP). Las consultas pueden ser arbitrarias e impredecibles y pueden utilizar casi cualquier columna para especificar las filas que se desean. La velocidad de recuperacin y la devolucin de los resultados son los aspectos ms crticos de estos tipos de consultas.

Procesamiento de transacciones en lnea (OLTP)


www.microsoft.com/latam/technet/articulos/200005/art02/ 9/24

15/03/12

Microsoft TechNet Latinoam rica


OLTP implica frecuentemente a una sola tabla y, normalmente, slo afecta a un pequeo nmero de filas. En las operaciones INSERT, las transacciones de una aplicacin OLTP a veces slo insertan una sola fila. A menudo, con OLTP, las consultas son ms predecibles que con la ayuda a la toma de decisiones. La velocidad de modificacin de los datos es el aspecto ms crtico de las consultas OLTP.

Indizacin para recuperaciones

Crear ndices tiles

Probablemente, la creacin de ndices tiles es la accin ms importante que se puede realizar para mejorar el rendimiento. El tipo y nmero de ndices, as como las columnas que se van a indizar se deben seleccionar cuidadosamente gracias a una profunda comprensin de las necesidades del usuario y de los propios datos. Los ndices resultan tiles si slo va a consultar la tabla o realizar modificaciones en los datos. En ambos casos, los ndices pueden proporcionar un acceso ms rpido a los datos, ya sea con propsito de leer o de escribir.

Anlisis del usuario


C omprenda las peticiones del usuario acerca de los datos, as como de los tipos y frecuencia de las consultas que realiza usualmente. Tener un profundo conocimiento de las necesidades del usuario ayudar a determinar las contrapartidas que, probablemente, necesitar realizar. Para equilibrar el rendimiento de las consultas ms vitales, tendr que sacrificar la velocidad de algunas consultas para aumentar el rendimiento de otras.

Anlisis de los datos


C omprender los datos y cmo estn organizados en el diseo lgico y en el fsico.

www.microsoft.com/latam/technet/articulos/200005/art02/

10/24

15/03/12

Microsoft TechNet Latinoam rica

Comprender cmo funciona SQL Server


C uanto ms profundamente conozca cmo funciona SQL Server, mejor podr disear el sistema y tomar decisiones inteligentes. Esto incluye comprender cmo SQL Server almacena y recupera los datos, as cmo selecciona el optimizador de consultas el plan de ejecucin ms eficaz.

Consideraciones generales
Normalmente, el optimizador de consultas slo utiliza un ndice por tabla de la consulta. Para que una consulta que se realiza en una tabla grande se ejecute rpidamente, resulta til tener un ndice en las columnas de la clusula WHERE. Para determinar un nmero razonable de ndices, deber tener en cuenta la frecuencia de las actualizaciones frente a las recuperaciones. Se deben elegir los ndices segn los tipos de clusulas WHERE o combinaciones que realizar. La clave para seleccionar ndices consiste en ser cuidadoso al elegir el tipo y nmero de ndices. Determine el nmero mnimo que debe crear para que el rendimiento no se vea afectado debido al mantenimiento. Determine los ndices ms tiles. No cree un ndice si no lo va a utilizar. El optimizador de consultas toma la decisin final acerca de si el ndice se utilizar.

Selectividad

Estimar los resultados resultar til al seleccionar los tipos de ndices que se van a crear en una tabla para un conjunto de transacciones determinado. La selectividad de una consulta es el porcentaje de filas de una tabla a la que se tiene acceso mediante una instruccin SELEC T, UPDATE o DELETE. Una selectividad alta puede devolver una fila que cumpla los criterios de bsqueda. La selectividad baja no es lo mismo que discriminar y puede devolver la mayor parte de las filas de una tabla. Un concepto relacionado es la densidad, que es el porcentaje de filas duplicadas en un ndice. Un ndice que tiene un gran nmero filas duplicadas tiene una densidad alta. Un ndice nico tiene densidad baja.

Exploraciones de tablas
Explorar la tabla resulta ventajoso para las consultas en que el conjunto de resultados incluye un alto porcentaje de una tabla (selectividad baja).

Distribucin de los datos


La distribucin de los datos indica el intervalo de valores de una tabla determinada y cuntas filas entran en ese intervalo. En muchos casos, se puede predecir aproximadamente el porcentaje de datos que se devolvern en un conjunto de resultados. Por ejemplo, si el criterio es hombre/mujer, el conjunto de resultados para mujer se puede estimar en el 50%. Puede determinar la distribucin de una columna con una consulta como la siguiente: SELEC T columna, count(*) FROM tabla GROUP BY columna

Selectividad: ejemplo

www.microsoft.com/latam/technet/articulos/200005/art02/

11/24

15/03/12

Microsoft TechNet Latinoam rica

En el ejemplo anterior, ambos conjuntos tienen el mismo nmero de X, aunque el porcentaje de X (selectividad) es diferente. Estime la selectividad de estas consultas (suponga que hay 10.000 filas en la tabla member y que los nmeros de miembro estn en el intervalo de 1 a 10.000; todos los valores son nicos):

Densidad de combinaciones

La densidad de combinaciones es el promedio de filas de la tabla interna que coincidirn con una fila de tabla externa. Tambin se puede pensar en la densidad de combinaciones como en el nmero promedio de duplicados. Una columna con un ndice nico tendra una densidad baja y una selectividad de combinacin alta. Si la columna tiene un gran nmero de duplicados, tiene una densidad alta y no es muy selectiva para las combinaciones. Los ndices de la columna de combinacin slo resultarn tiles en la tabla interna de una combinacin. Si la densidad de combinacin fuera baja, ambos tipos de ndice resultaran tiles. Si la densidad de combinacin fuera alta, slo resultara til un ndice agrupado.

Crear el tipo de ndice apropiado

www.microsoft.com/latam/technet/articulos/200005/art02/

12/24

15/03/12

Microsoft TechNet Latinoam rica

Buenos candidatos para ndices agrupados

Consideraciones
La columna utilizada para el ndice agrupado determina el orden fsico de los datos. C oloque un ndice agrupado en las columnas de datos que necesite con ms frecuencia en orden fsico. Se deben elegir los ndices segn el tipo de instrucciones SELEC T utilizadas. Se recomienda utilizar ndices agrupados para claves externas, puesto que generalmente las claves externas no son nicas. Slo puede haber un ndice agrupado por tabla. Nota C olocar un ndice agrupado en la clave principal (especialmente si los datos son montonos) no suele ser la mejor opcin. La clave principal debe tener un ndice nico. En muchos casos, un ndice nico no agrupado puede ser casi tan eficaz como un ndice nico agrupado.

Buenos candidatos para ndices no agrupados

www.microsoft.com/latam/technet/articulos/200005/art02/

13/24

15/03/12

Microsoft TechNet Latinoam rica

Agregue ndices no agrupados solamente cuando vayan a resultar realmente tiles, ya que se requiere una importante sobrecarga para mantener estos ndices al modificar datos. No cree un ndice si no lo va a utilizar.

Consideraciones
Requisitos de espacio de almacenamiento. Impacto de la modificacin de datos. Volatilidad de la columna candidata. Selectividad de las consultas. (La exploracin de tablas es ms apropiada para consultas de selectividad baja). Unicidad de las columnas candidatas. (Un nivel alto de duplicados disminuye la efectividad del ndice). Los ndices no agrupados no son tiles para consultas de intervalos a menos que el intervalo suponga un pequeo porcentaje de la tabla.

Buenos candidatos para ndices compuestos

Un ndice compuesto puede ser un ndice con una clave de ordenacin de varias columnas. Los ndices agrupados y los no agrupados pueden tener una clave compuesta.

Consideraciones
Los ndices compuestos son tiles si la primera columna de la clave se especifica en la clusula WHERE. Son candidatos poco recomendables los ndices demasiado amplios en los que slo se utiliza la segunda o la tercera columna en la clusula WHERE. Por ejemplo, un ndice sobre (lastname, firstname) es bueno para seleccionar lastname y lastname, name, pero no es bueno para seleccionar name.

www.microsoft.com/latam/technet/articulos/200005/art02/

14/24

15/03/12

Microsoft TechNet Latinoam rica

ndices compuestos frente a varios ndices de una columna

Tener varios ndices puede afectar al rendimiento de las instrucciones de modificacin de datos. Normalmente, slo se utiliza un ndice por tabla en una consulta, por lo que usar varios ndices no resulta tan til como los ndices compuestos. Un ndice compuesto puede ser una eleccin mejor para las consultas que tengan acceso a varias columnas de una sola tabla. Nota El orden en que se especifican las columnas en la clusula WHERE no afecta a la forma en que se utilizan los ndices compuestos. Slo importa que la columna situada ms a la izquierda del ndice compuesto est contenida en la clusula WHERE. Se puede utilizar un ndice compuesto aunque la columna de orden ms alto (la situada ms a la izquierda) de la clave de ordenacin del ndice no est en la clusula WHERE. Esta situacin requiere que todas las columnas a las que se hace referencia en la lista SELEC T y en la clusula WHERE estn en la clave de ordenacin del ndice. C onsulte ndices de cobertura (a continuacin) para obtener detalles.

Indices de cobertura

Consideraciones
Agregue columnas a algunos ndices para dar cobertura a la mayor parte de las consultas. No deje que la clave del ndice sea demasiado amplia. Esto aumenta el tamao del ndice y se anulan las ventajas de rendimiento. Si las filas son demasiado amplias, aumenta el nmero de niveles y , por lo tanto, el nmero de pginas. Si aumenta el nmero de pginas, tambin aumenta la cantidad de tiempo necesario para explorar un ndice. Agregar ms ndices no agrupados afecta de forma adversa al rendimiento de las actualizaciones. En algunos casos puede resultar efectivo para combinar dos ndices en un ndice de cobertura compuesto. Los ndices no agrupados que proporcionan cobertura a una consulta de selectividad baja son muy rpidos, ya que nunca se tiene acceso a las pginas de datos y, por lo tanto, se evita explorar la

www.microsoft.com/latam/technet/articulos/200005/art02/

15/24

15/03/12

Microsoft TechNet Latinoam rica


tabla. Un ndice de cobertura puede resultar til aunque la columna de mayor orden de la clave de ordenacin del ndice no est en la clusula WHERE.

ndices agrupados frente a ndices no agrupados

Hacer coincidir el ndice con la consulta

Indizar un intervalo de datos: ejemplo

www.microsoft.com/latam/technet/articulos/200005/art02/

16/24

15/03/12

Microsoft TechNet Latinoam rica

No hay un ndice en la tabla Una exploracin de tabla (53.000 operaciones de E/S) resulta ms ef icaz que un ndice no agrupado. ndice agrupado sobre la columna price ndice agrupado sobre la columna price Lee f ilas a partir de 20,00 dlares y detiene la bsqueda en 30,00 dlares. Puesto que la columna pri ce est agrupada, el orden f sico de los datos se organiza segn el precio. Todos los datos que entran en el intervalo estn en orden secuencial en las pginas siguientes, con lo que se f acilita la recuperacin de datos. Esta bsqueda necesita leer 10.000 pginas (190.000/19 f ilas por pgina). ndice no agrupado sobre la columna price Busca en el ndice no agrupado f ila a f ila para determinar si cada f ila cumple los criterios de la bsqueda. En todas las f ilas que cumplan los criterios, es necesario recuperar los datos de cada pgina que almacene una f ila. Esta bsqueda es el peor caso, ya que es necesario leer 190.000 pginas de datos (una por cada vez que aparezca), ms el nivel de hoja del ndice. (Se lee varias veces cada pgina de datos en la cach). ndice de cobertura en las columnas price, title Puesto que las columnas pri ce y ti tl e estn en el ndice, no es necesario buscar en las pginas de datos y se ahorran operaciones de entrada y salida. En el ndice (pri ce, ti tl e), hay un promedio de 38 f ilas de ndice por pgina de hoja. Esta bsqueda necesita leer 5.000 pginas (190.000/38 f ilas por pgina).

Indices para AND: ejemplo

Observe el ejemplo de la diapositiva. Utilice las opciones enumeradas en las notas del alumno para evaluar el mejor tipo de ndice que se puede crear para esta instruccin. El nmero 4 es la mejor opcin, puesto que todas las f ilas calif icadas estaran juntas. Con la opcin nmero 6 se proporcionara cobertura a la consulta. Sin embargo, el ndice sera mayor, debido a la clave amplia. La opcin nmero 7 es la misma que utilizar un ndice agrupado sobre dept, excepto que el ndice es

www.microsoft.com/latam/technet/articulos/200005/art02/

17/24

15/03/12
mucho mayor.

Microsoft TechNet Latinoam rica


Un error habitual consiste en pensar que el orden en que se enumeran las columnas en la clusula WHERE af ecta a la f orma en que se utilizan los ndices compuestos. Esto no es cierto. Slo importa que la columna situada ms a la izquierda del ndice compuesto est en la clusula WHERE. Tambin puede observar que suponemos que hay una distribucin relativamente normal de los datos. Si todos o ninguno ganara > 50.000 o si se buscara en toda la compaa, la estrategia de indizado sera dif erente. Si se cumplen ambas condiciones, la f ila cumplir el criterio de bsqueda. Opciones para evaluar en el ejemplo anterior 1. ndice agrupado o no agrupado sobre dept. 2. ndice agrupado o no agrupado sobre sa l a r . 3. Uno sobre dept y otro sobre sa l a r . 4. ndice compuesto sobre (dept, sa l a r ). 5. ndice compuesto sobre (sa l a r , dept). 6. ndice no agrupado sobre (dept, sa l a r , na me, a ddress) (ndice de cobertura). 7. ndice agrupado sobre (dept, sa l a r , na me, a ddress).

ndices para OR
Las operaciones OR implican una situacin muy dif erente de las operaciones A ND. Cuando hay varias condiciones en que se utiliza A ND, se proporciona una calif icacin progresivamente ms estricta de los datos deseados. Dado el conjunto de todas las f ilas que cumplen una de las condiciones A ND, las f ilas del resultado f inal estarn en dicho conjunto. Con las condiciones OR, esto no se cumple. Dado el conjunto de todas las f ilas que cumplen una de las condiciones OR, puede haber f ilas que cumplan alguna de las dems condiciones OR que no estn incluidas en este conjunto de resultados. Las operaciones OR se explicarn con ms detalle ms adelante en este curso.

ndices para SELECT *: ejemplo

SELECT * devuelve inf ormacin de todas las columnas. La seleccin del ndice no tiene nada que ver con los datos seleccionados. Slo es signif icativo con lo que se calif ica. El ndice ayuda a encontrar f ilas. No af ecta a la inf ormacin que se selecciona de una f ila. No se puede proporcionar cobertura a una instruccin SELECT * con un ndice no agrupado a menos que todas las columnas estn en la clave de ordenacin. La instruccin SELECT * no es el mejor tipo de consulta que se puede utilizar para obtener un alto rendimiento si implica que se recuperarn ms datos de los que realmente se necesitan.

Opciones para evaluar en el ejemplo anterior


ndice agrupado sobre la columna a u_i d. A l crear un ndice agrupado sobre la columna a u_i d se guardan todas las f ilas en ese orden. ndice no agrupado sobre la columna a u_i d. A s sera necesario tener acceso a la pgina de datos. Potencialmente implicara ms operaciones de E/S. ndice no agrupado sobre (a u_i d, a u_l na me).

ndices para consultas mltiples

www.microsoft.com/latam/technet/articulos/200005/art02/

18/24

15/03/12

Microsoft TechNet Latinoam rica

En los ejemplos anteriores, se seleccionaba el mejor tipo de ndice basado en una consulta individual. La indizacin de consultas mltiples es ms compleja, ya que el ndice ptimo para una consulta puede no serlo para otra. El objetivo es obtener un rendimiento aceptable para todas las consultas de prioridad ms alta.

Opciones para evaluar en el ejemplo anterior


Supuestos: La consulta 1 es un 15% de la tabla. La consulta 2 es muy selectiva; se tiene acceso a una f ila.

Opcin 1
ndice agrupado sobre (pri ce). ndice no agrupado sobre (ti tl e). La consulta 1 es muy rpida. La consulta 2 es rpida, pero requiere ms operaciones de E/S que si se hubiera colocado un ndice agrupado sobre la columna ti tl e.

Opcin 2
ndice no agrupado sobre (pri ce). ndice agrupado sobre (ti tl e). La consulta 1 es ms lenta que en la opcin 1. La consulta 2 es muy rpida.

Opcin 3
ndice agrupado sobre (pri ce). ndice no agrupado sobre (ti tl e, pri ce). La consulta 1 se ejecuta rpidamente y la consulta 2 es muy rpida.

Opcin 4
ndice no agrupado sobre (pri ce, ti tl e). ndice agrupado sobre (ti tl e). Se trata de la mejor opcin. La consulta 1 y la consulta 2 son muy rpidas.

Consideraciones sobre la actualizacin

www.microsoft.com/latam/technet/articulos/200005/art02/

19/24

15/03/12

Microsoft TechNet Latinoam rica

Las consultas de procesamiento de transacciones en lnea (OLTP) incluyen algunos aspectos de recuperacin de datos en los que se deben buscar las f ilas para, despus, poder modif icarlas. Sin embargo, si las consultas ms importantes son de OLTP, hay algunos aspectos adicionales que se deben tener en cuenta: Se deben mantener los ndices. Cada modif icacin realizada en una tabla indizada signif icar que ser necesario actualizar un ndice o quiz ms. Cuantas ms columnas tenga el ndice, ms trabajo ser necesario realizar para mantenerlo. A dems de registrar cada f ila de datos que se modif ica, habr que registrar cada f ila de ndice que se modif ique.

Directrices
Para una aplicacin que utilice principalmente OLTP, mantenga el nmero de ndices al mnimo. Las columnas de ndices agrupados deben ser no voltiles.

Directrices para la indizacin

Mantenimiento de los ndices

www.microsoft.com/latam/technet/articulos/200005/art02/

20/24

15/03/12

Microsoft TechNet Latinoam rica

ndices agrupados
S hay un ndice agrupado sobre una tabla, se deben insertar las f ilas en el orden de la clave del ndice agrupado. Si no hay espacio en una pgina, es posible que sea necesario dividirla, con lo que se generar una sobrecarga adicional.

ndices no agrupados
Un ndice no agrupado tiene un puntero a cada f ila de datos. Cada vez que se inserta o elimina una f ila, se deben ajustartodos los ndices no agrupados. Si una operacin UPDA TE implica operaciones DELETE/INSERT completas o se trata de una operacin UPDA TE dif erida, se deben ajustar todos los ndices no agrupados para las f ilas eliminadas y las f ilas insertadas. A unque se realiza una operacin UPDA TE en un sitio o en la misma pgina, ser necesario ajustar todos los ndices que haya sobre cualquier columna que se modif ique. Si dispone de ndices compuestos amplios, ya de por s pueden suponer una gran sobrecarga.

Directrices para crear ndices

Determinar la prioridad de todas las consultas


Tener una comprensin prof unda de todos los datos y de cmo se utilizarn. Determinar las transacciones prioritarias para la base de datos.

Determinar la selectividad de cada consulta


Determinar la selectividad de cada parte de la clusula WHERE.

Representar la actividad de cada tabla


A nalizar la actividad que se produce sobre cada columna de la tabla.

Determinar las columnas que se deben indizar


Se utiliza la columna en la clusula WHERE?

www.microsoft.com/latam/technet/articulos/200005/art02/

21/24

15/03/12

Microsoft TechNet Latinoam rica


Si nunca se hace ref erencia a una columna en la clusula WHERE de una consulta o en la instruccin de modif icacin de datos, no hay motivo para crear un ndice sobre esa columna. Se utiliza la columna como clave de combinacin? La creacin de un ndice sobre una columna que se utiliza como clave de combinacin mejora el rendimiento de la combinacin, ya que proporciona al optimizador de consultas la posibilidad de utilizar un ndice en lugar de realizar una exploracin de la tabla. Se busca f recuentemente en esa columna?

Seleccionar la mejor columna candidata para un ndice agrupado


Se tiene acceso a un intervalo de datos? Se incluye una coincidencia LIKE en la instruccin de la transaccin? Los ndices agrupados f uncionan mejor para intervalos. Siempre se ordenan los datos? Si los datos se ordenan f recuentemente sobre una columna especf ica, se reduce la sobrecarga de la ordenacin al colocar un ndice agrupado sobre esa columna. Si la columna contiene valores nicos, resulta ventajoso un ndice nico? Cree el ndice agrupado antes de crear los ndices no agrupados. La colocacin de un ndice agrupado sobre la clave principal (especialmente si los datos son montonos) no es necesariamente la mejor opcin. No es necesario utilizar un ndice agrupado en las columnas de la clave de combinacin.

Determinar qu otros ndices son necesarios


Determine el nmero mnimo de ndices que se pueden crear para cada tabla. Equilibre la ganancia de rendimiento del ndice f rente el mantenimiento debido a actualizaciones. Compruebe si las columnas a las que se hace ref erencia en las clusulas WHERE de las consultas de ms prioridad estn indizadas. Si una consulta se ejecuta con poca f recuencia, tendr que considerar la creacin de un ndice mientras dure la actividad especf ica para luego quitarlo. Por ejemplo, si todos los anlisis de inf ormes o de resmenes se producen a f inal de mes o f inal de ao, se pueden crear ndices para utilizarlos durante esas actividades y despus se pueden quitar.

Determinar qu tipos de ndices no agrupados se deben crear


Resultar ms ventajoso un ndice compuesto que un ndice sobre una sola columna? El ndice puede proporcionar cobertura a la consulta? La selectividad de la consulta es una coincidencia exacta? Los ndices no agrupados resultan tiles para coincidencias exactas (se devuelve una f ila), para combinaciones o para columnas de clave principal nica. Si la columna contiene valores nicos, resulta ventajoso un ndice nico?

Probar el rendimiento de las consultas


Despus de crear los ndices, pruebe el rendimiento de las consultas de prioridad ms alta. Ejecute SET SHOWPLA N ON, SET STA TISTICS IO ON, SET STA TISTICS TIME ON y, a continuacin, ejecute cada consulta.

Cundo no se deben utilizar ndices

Hay situaciones en que no desear indizar. Entre estas situaciones se incluyen: Si Si Si Si Si el optimizador nunca utiliza el ndice. se va a devolver ms de un 10 a 20% de las f ilas. la columna contiene solamente uno, dos o tres valores nicos (selectividad baja). la columna que va a indizar es grande (> 20 bytes). la sobrecarga de mantener el ndice es mayor que sus ventajas.

www.microsoft.com/latam/technet/articulos/200005/art02/

22/24

15/03/12

Microsoft TechNet Latinoam rica


Si la tabla es muy pequea.

Equilibrar DSS con OLTP

Puesto que los requisitos de indizado son muy dif erentes en los entornos de DSS y OLTP, puede resultar muy dif cil decidir la estrategia de indizado si ambos entornos son necesarios. Se pueden mantener copias independientes de los datos para que la recuperacin y modif icacin no se realicen exactamente sobre los mismos datos. En este caso, har f alta una estrategia para reconciliar los datos. Habr que contrastar los costos y ventajas de indizar ptimamente para ambos entornos con el costo que supondra mantener y reconciliar dos conjuntos de datos.

Introduccin al optimizador de consultas

El optimizador de consultas de SQL Server decide si un ndice es realmente bueno y, para cualquier consulta, qu ndice es el mejor para utilizarlo. El optimizador tambin decide cmo se procesarn las combinaciones de varias tablas y seleccionar el orden de las tablas y el mtodo. Tambin decide la mejor f orma de realizar las operaciones de actualizacin. En el siguiente mdulo se explicarn detalles acerca de cmo obtiene y utiliza el optimizador de consultas de SQL Server la inf ormacin disponible para decidir el plan ptimo de ejecucin. 1997, Microsof t Corporation. Reservados todos los derechos. La inf ormacin contenida en este documento representa la visin actual de Microsof t Corporation acerca de los asuntos abordados en la f echa de su publicacin. Como Microsof t debe responder a condiciones de mercado variables, no debe interpretarse como un compromiso por parte de Microsof t y Microsof t no puede garantizar la precisin de la inf ormacin que se presenta despus de la f echa de publicacin. Este documento se proporciona con propsito inf ormativo nicamente. MICROSOFT NO CONCEDE GA RA NT A S, EXPRESA S O IMPL CITA S, EN ESTE DOCUMENTO. Microsof t y Windows NT son marcas registradas de Microsof t Corporation. Intel es una marca registrada de Intel Corporation.

www.microsoft.com/latam/technet/articulos/200005/art02/

23/24

15/03/12

Microsoft TechNet Latinoam rica


Otros nombres de productos y compaas mencionados aqu pueden ser marcas comerciales de sus respectivos propietarios.

Administre su perfil 2012 Microsoft Corporation. Todos los derechos reservados. Pngase en contacto con nosotros | Aviso Legal | Marcas registradas | Privacidad

www.microsoft.com/latam/technet/articulos/200005/art02/

24/24