0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

10
47 GACETA SANSANA, julio del 2015 OPTIMIZACIÓN DE LOS TIEMPOS DE RESPUESTAS EN UNA BASE DE DATOS Autor: Enrique Salazar

Upload: others

Post on 14-Nov-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

47GACETA SANSANA, julio del 2015

OPTIMIZACIÓN DE LOS TIEMPOS DE RESPUESTAS EN UNA BASE DE DATOS

Autor: Enrique Salazar

Page 2: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

48 GACETA SANSANA, julio del 2015

RESUMEN

El presente artículo trata de un tema muy crucial dentro de un ambiente de base de datos como es la optimización de los tiempos de respuestas de las consultas realizadas a un repositorio de información.

Para alcanzar tiempos de respuestas óptimos, es necesario, en primera instancia, estar conscientes de los actores del área de base de datos en una organización, de los cuales, hay uno que se erige como OD�SULQFLSDO�¿JXUD�FXDQGR�GH�RSWLPL]DFLyQ�GH�UHFXUVRV�VH�UH¿HUH��'LFKR�DFWRU�HV�HO�$GPLQLVWUDGRU�de la Base de Datos.

Tener programadores al frente de un ambiente de base de datos es uno de los mayores errores e incongruencias que se dan en los ambientes informáticos, y producto de esta “cultura” es que se desarrollan sistemas de base de datos que distan mucho de ser aplicaciones con rendimientos óptimos.

(Q� HO� DUWtFXOR� WDPELpQ� VH�PHQFLRQDQ� DOJXQRV� SDVRV� TXH� VRQ� QHFHVDULRV� SDUD� OD� HODERUDFLyQ� GH�transacciones de consultas que permitan obtener resultados en el menor tiempo posible.

(QWUH�HVRV�SDVRV�VH�WLHQH��FRQRFLPLHQWR�GH�OD�DUTXLWHFWXUD�GHO�PRWRU�GH�OD�EDVH�GH�GDWRV�TXH�VH�HVWp�utilizando y de la sintaxis de la sentencia utilizada para efectuar consultas a los datos, adicional al FRQRFLPLHQWR�GH�WpFQLFDV�GH�D¿QDPLHQWR�GH�ODV�UHVSHFWLYDV�VHQWHQFLDV�

Además, se mencionan otras formas para optimizar los tiempos de respuestas como por ejemplo: el buen diseño de la base de datos, un computador debidamente equipado, y estructuras lógicas y físicas bien distribuidas.

)LQDOPHQWH��VH�PHQFLRQDQ�FXDWUR�SDVRV�SDUD�UHVROYHU�DTXHOORV�FXHOORV�GH�ERWHOOD�TXH�VH�FRQVWLWX\HQ�HQ�REVWiFXORV�SDUD�ORJUDU�OD�RSWLPL]DFLyQ�GH�ORV�WLHPSRV�GH�UHVSXHVWD��D�VDEHU��GH¿QLFLyQ�GHO�SUREOHPD��levantamiento de información, planteamiento de solución, y realizar pruebas de rendimiento.

Page 3: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

49GACETA SANSANA, julio del 2015

INTRODUCCIÓN

Una base de datos es un conjunto de datos interrelacionados entre sí. La implementación de este concepto a nivel de sistemas, ha llevado a la creación de diferentes aplicativos que permiten la creación y manipulación de dichas bases en un computador, generando de esta forma grandes repositorios de datos que permiten obtener información oportuna, segura \�FRQ¿DEOH�

Dado que la administración y el mantenimiento de estos grandes repositorios de información son temas muy especializados, la operación y manipulación de la base de datos resulta ser todo un misterio para muchos profesionales del área GH�WHFQRORJtD�GH�OD�LQIRUPDFLyQ�FRQ�SHU¿O�PiV�GH� JHVWLyQ� TXH� WpFQLFR�� TXLHQHV� VH� FRQIRUPDQ�con tener sistemas administradores de base de datos con tiempos de respuestas decentes, pero no ySWLPRV� �5RYHR��������

Y esto no es todo sobre esta “cultura” que hay respecto al almacenamiento y recuperación de la información en una base de datos, pues el problema se ahonda más cuando se conoce que hay muchas empresas que tienen sus datos guardados en un repositorio especial y ni siquiera tienen a una persona responsable del mismo. Esto equivale a dejar un diamante a la vista de todo el mundo, sin ningún tipo de seguridad ni nadie que se haga responsable de su cuidado y manipulación.

En aquellas empresas que sí disponen de SHUVRQDO�D�FDUJR�GH�OD�EDVH�GH�GDWRV��pVWRV�VRQ�programadores que no tienen los conocimientos WpFQLFRV� DSURSLDGRV� SDUD� OD� DGPLQLVWUDFLyQ� GH�respectivo repositorio; son profesionales que para variar, se autodenominan “expertos” en

sistemas gestores de bases de datos.

Todas estas “prácticas” convergen en un grave problema: el tiempo de recuperación de la información no es el óptimo. Esto está en total contradicción con respecto a dos de los objetivos primordiales de una base de datos que VRQ�HO�DOPDFHQDPLHQWR�VHJXUR�\�FRQ¿DEOH�GH�ORV�datos y la recuperación rápida y oportuna de la información.

ACTORES DEL ÁREA DE BASE DE DATOS

Para un correcto funcionamiento de los grandes repositorios de datos que residen en el disco de un computador, se necesita de un WpFQLFR�FRQ�ORV�FRQRFLPLHQWRV�DSURSLDGRV�

El Administrador de %DVH� GH� 'DWRV� �'%$��SRU�VXV�VLJODV�HQ�LQJOpV��es aquel profesional del área de Tecnología de la Información llamado a liderar el área de base de datos en una organización, y tiene a su cargo, entre otras cosas, las siguientes funciones:

Realizar el diseño de una base de datos Establecer las restricciones de los datos Establecer las políticas de respaldos de los

datos Implementar una base de datos Mantener operativa una base de datos

Es lamentable que la tarea de un DBA sea poco conocida, e inclusive, muchas veces mal entendida e interpretada por la mayoría de la gente que sabe poco o casi nada del tema.

El Administrador de la Base de Datos apoya su gestión con un conjunto de aplicaciones que le van a permitir manejar el repositorio, además de que proveen una interface entre los usuarios y

La creación de diferentes aplicativos generan grandes repositorios de datos que permiten obtener información RSRUWXQD��VHJXUD�\�FRQ¿DEOH

““

.

Page 4: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

50 GACETA SANSANA, julio del 2015

Datos:Total días por año = 365 díasTotal días en !nes de semana (sábado y domingo) = 52 semanas * 2 días = 104 díasTotal días festivos = 11 díasHoras laborables diarias = 4 horas

Planteamiento:Determinar a cuántos años de experiencia equivalen 10.000 horas.Fórmulas:Horas laborables anuales = (Total días por año – Total días en !nes de semana – Total días festivos) * Horas laborables diarias

Años de experiencia = 10.000 / Horas laborables anuales

Aplicación:Horas laborales anuales = (365 – 104 – 11) * 4Horas laborales anuales = 1.000 horas

Años de experiencia = 10.000 / 1.000Años de experiencia = 10 años

Resultado:10.000 horas de experiencia equivalen a 10 años.

(V�QHFHVDULR�KDFHU�XQD�GLJUHVLyQ�VREUH�D�TXLpQ�VH�OH�GHEH�OODPDU�³H[SHUWR´���6HJ~Q�HO�'LFFLRQDULR�de la lengua española © 2005 Espasa-Calpe, “experto” es una persona especialista en una materia,

������

Si la experiencia es factible expresarla en años, entonces, ¿cuántos años son necesarios para considerarse un experto?, o ¿cuántas horas de trabajo son necesarias para catalogar como diestro a una persona en algún tema?Malcolm Gladwell, en su libro Outliers

�*ODGZHOO�� ������� PHQFLRQD� TXH� SDUD� TXH�alguien se considere experto en un tema, debe invertir como mínimo unas 10.000 horas en DTXHO�FRQWHQLGR�HVSHFt¿FR�Aquellas 10.000 horas, trabajando a media MRUQDGD��FXDWUR�KRUDV�GLDULDV���HTXLYDOHQ�D�XQRV�10 años. A continuación el cálculo que permite corroborar

R�HV�XQD�SHUVRQD�FRQ�PXFKD�H[SHULHQFLD�HQ�DOJR��:RUG5HIHUHQFH��

los datos. A este software se lo conoce con el nombre de Sistema Administrador de Base de 'DWRV��'%06��SRU�VXV�VLJODV�HQ�LQJOpV��

Como parte de la arquitectura de un DBMS se tienen los lenguajes de bases de datos. El /HQJXDMH� GH�&RQVXOWD�(VWUXFWXUDGR� �64/�� SRU�VXV� VLJODV� HQ� LQJOpV��� TXH� FRPR� VX� QRPEUH� OR�indica, es un lenguaje de consulta que permite el acceso a las bases de datos relacionales, para

OR�FXDO�VH�SXHGHQ�HVSHFL¿FDU�GLYHUVRV� WLSRV�GH�operaciones.

Todo programador de base de datos que se jacte de ser un “experto” en lenguaje SQL, debe saber TXH�PiV�GHO�����GH�ODV�UD]RQHV�SRU�ODV�FXDOHV�aumentan los tiempos de respuestas al consultar datos, corresponden a un uso inapropiado de las cláusulas de la respectiva instrucción para visualizar la información.

Page 5: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

51GACETA SANSANA, julio del 2015

esto último:Este resultado nos deja como conclusión que toda persona que se considera “experta” en al-J~Q�WHPD�HVSHFt¿FR��GHEH�DFUHGLWDU�FRPR��PtQ-imo, 10 años de pericia o destreza en el manejo de dicho tema.

CONSULTAS EN LA BASE DE DATOS

Retomando el tópico que se está tratando, FDEH� PHQFLRQDU� TXH� XQD� FRQVXOWD� �TXHU\�� HQ�sí misma puede tener problemas por el nivel de complejidad que ella puede alcanzar. Esto último puede ser originado por las siguientes causas:

Por la cantidad de tablas necesarias para resolver un query.

Por la cantidad de restricciones necesarias SDUD�¿OWUDU�ORV�GDWRV�

Por la combinación de columnas que haya que visualizar al momento de resolver la columna.Todas estas causas mencionadas, en conjunto con la mala utilización de las cláusulas de la instrucción que permite recuperar los datos, pueden hacer que el tiempo de respuesta de una consulta sea elevado. Pero de todas ellas, la que origina mayores estragos es la última: uso inapropiado de la instrucción de consulta.

El mal uso de las cláusulas de la sentencia “SELECT” para consultar una base de datos, es la razón principal por la cual un query no puede resolverse en máximo 3 segundos, como lo señalan las convenciones internacionales.La sentencia SELECT es aquella que se utiliza SDUD�HOHJLU�GH�XQD�WDEOD��XQ�VXEFRQMXQWR�GH�¿ODV�que cumplan con determinadas condiciones.

(VWD� VHQWHQFLD� WLHQH� OD� VLJXLHQWH� VLQWD[LV� �/LX��������SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)]����>,172�287),/(�µ¿OHBQDPH¶�H[SRUWBRSWLRQV������_�,172�'803),/(�µ¿OHBQDPH¶ | INTO var_name [, var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]Dado que un gran porcentaje de los problemas que ocasionan un aumento en los tiempos de respuesta están relacionados con las sentencias utilizadas para solventar las consultas, se hace necesario un conjunto de pasos que permitan su D¿QDPLHQWR�

Entre los pasos recomendados para crear una transacción de consulta en la cual se haga un buen uso de las cláusulas respectivas, tenemos:

Conocer la arquitectura del motor de la base de datos.

Conocer la sintaxis de la sentencia para hacer queries.� &RQRFHU� WpFQLFDV� GH� D¿QDPLHQWR� SDUD�

sentencias de SQL.

Una persona podrá tomar buenas decisiones al instante en que va a diseñar una base de datos o en el momento en que va a elaborar una consulta, siempre y cuando conozca la arquitectura del sistema administrador de la base de datos que está usando, tanto a nivel de software, como a nivel de estructuras generadas en el disco duro y en la memoria principal del computador.Esto es necesario debido a que el motor de la base de datos utiliza una serie de recursos para poder ejecutar una consulta; y estos están directamente relacionados con la arquitectura del DBMS.Por ejemplo, parte de las estructuras del motor de base de datos Oracle que se genera en la

Page 6: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

52 GACETA SANSANA, julio del 2015

memoria principal del equipo es el “Libray Cache”. Esta estructura es un conjunto de bloques de memoria que residen en la RAM �5DQGRP� $FFHVV� 0HPRU\�� \� HQ� OD� TXH� VH�almacenan las últimas instrucciones de SQL y PL/SQL ejecutadas.

Oracle es uno de los sistemas gestores de bases de datos más completos del mercado. El PL/SQL es el lenguaje procedimental de Oracle.

La library cache está diseñada para incrementar OD�H¿FLHQFLD�GHO�FyGLJR�64/��SHUPLWLHQGR�TXH�se compartan entre los usuarios las sentencias tanto SQL como PL/SQL. Esta estructura almacena todas las sentencias SQL parseadas �FRPSLODGDV��Cuando un usuario ejecuta una sentencia, ocurren dos cosas: en primer lugar, Oracle YHUL¿FD� VL� \D� H[LVWH� HQ� OD� OLEUDU\� FDFKH� XQD�LQVWUXFFLyQ� LGpQWLFD�� � 6L� QR� VH� HQFXHQWUD� XQD�igual, la sentencia debe ser parseada y luego alojada en la library cache. Si, en cambio, existe XQD� LQVWUXFFLyQ� LGpQWLFD� HQ� OD� OLEUDU\� FDFKH��Oracle, de ser necesario, la puede reutilizar.Analicemos el siguiente caso de estudio: Existen dos usuarios que desean ver una misma información, e ingresan dos instrucciones similares, con la única diferencia que la una sentencia está escrita todo con letras mayúsculas y la otra está escrita todo con letras minúsculas.

Para los usuarios, ambas sentencias son “iguales”, pues producen el mismo resultado. En cambio, para el motor, las instrucciones son totalmente diferentes por el simple hecho de estar escritas en diferentes formas. Esto ocasiona que, a nivel de memoria, se ocupen recursos almacenando las dos instrucciones por separado, aun cuando resuelven el mismo problema y de la misma forma. Para el caso del Library Cache, esto quiere decir que cada instrucción va a ocupar celdas de memoria distintas en esa región, dejando menos espacio para otras instrucciones que realmente son distintas entre sí.La solución para este inconveniente es XWLOL]DU� SURFHGLPLHQWRV� DOPDFHQDGRV� �VWRUHG�SURFHGXUHV��TXH�VRQ�SURJUDPDV�TXH�UHDOL]DQ�XQD�

WDUHD�HVSHFt¿FD�\�TXH�SXHGHQ�VHU�LQYRFDGRV�SRU�varios usuarios a la vez.

Otro de los pasos recomendados para crear de forma correcta un query es que quien escribe XQD�FRQVXOWD�SDUD�OD�EDVH�GH�GDWRV�WDPELpQ�GHEH�conocer al detalle la sintaxis de la sentencia SELECT, pues esto le permitirá optimizar la utilización de la misma.

(QWLpQGDVH� SRU� ³RSWLPL]DFLyQ´� HO� SURFHVR� GH�PRGL¿FDU�XQ�VLVWHPD�SDUD�PHMRUDU�VX�H¿FLHQFLD�o el hacer un mejor uso de los recursos disponibles. Entonces, la optimización de consultas permitirá disminuir los tiempos de respuestas en un sistema administrador de base de datos relacional.

Por ejemplo, no es lo mismo utilizar el operador “union” que el “union all”. El operador de conjuntos “union” se lo utiliza para unir los resultados de dos o más consultas, pero tiene una particularidad, y es que no retorna duplicados. Es decir, que si un registro de un primer query es igual a otro registro de la segunda consulta, tal registro aparece una sola vez. Si se desea que todos los registros se incluyan en el resultado, inclusive los duplicados, entonces es necesario utilizar la cláusula “union all” dado que este operador no realiza ordenamiento ni eliminación GH�ODV�¿ODV�UHSHWLGDV�

Una tercera recomendación tendiente a optimizar los tiempos de respuestas de los queries es UHDOL]DU�XQ�WXQLQJ��D¿QDPLHQWR��D�ODV�FRQVXOWDV�

3RU�HMHPSOR��¢TXp�HV�PHMRU�XWLOL]DU��OD�FOiXVXOD�UNION o UNION ALL?

Con la cláusula UNION en un query, se realizará XQ� RUGHQDPLHQWR� SDUD� REWHQHU� ¿ODV� GLVWLQWDV� \���eliminar los registros repetidos. Y una operación GH�VRUW��RUGHQDPLHQWR��HV�XQ�FRVWR�DGLFLRQDO�HQ�el procesamiento, puesto que le toma tiempo al procesador del computador efectuarlo.

En cambio, con la cláusula UNION ALL no se UHDOL]D�RUGHQDPLHQWR�QL�HOLPLQDFLyQ�GH�ODV�¿ODV�

Page 7: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

53GACETA SANSANA, julio del 2015

repetidas. Lo que hace es unir tal como vengan los datos de las sub-consultas.

OTRAS FORMAS DE OPTIMIZAR LOS TIEMPOS DE RESPUESTAS

Cabe mencionar que lo que realmente importa e interesa al usuario de una base de datos es el tiempo de respuesta. Se ha señalado que la aplicación de malas prácticas al momento de programar en un lenguaje de consulta es lo que se constituye en la principal causa en la demora al recuperar un dato de la base de datos.

3HUR�WDPELpQ�H[LVWHQ�RWUDV�FDXVDV�QR�GH�PHQRU�importancia por las cuales no se alcanza el tiempo de respuesta óptimo al momento de consultar un repositorio de datos.

Una de esas causas adicionales por la cual no VH� FXPSOH� FRQ� OD� PpWULFD� FRUUHVSRQGLHQWH� DO�tiempo de respuesta es por los malos diseños que se hacen de las bases de datos.

El diseño de una base de datos es un paso crucial en la construcción de un repositorio de datos. Este paso toma como entrada todos los requerimientos de información de los usuarios, los mismos que son obtenidos previo análisis de las necesidades de los futuros clientes de los VLVWHPDV�D�GHVDUUROODUVH��+HXUWHO��������

El modelado de los datos de los usuarios es parte del diseño de la base. En la etapa de modelamiento se produce como salida un diagrama conocido FRPR�0RGHOR�(QWLGDG�5HODFLyQ� �0(5��� � (VWH�JUi¿FR�SHUPLWH�UHSUHVHQWDU�HQ�IRUPD�FRQFHSWXDO�los datos que se pretenden almacenar en un repositorio, expresados en entidades, relaciones y atributos.

Las entidades son los objetos, reales o abstractos, de los cuales se necesita conocer y almacenar información. Las relaciones son las distintas asociaciones que se pueden dar entre las entidades o entre una entidad y ella misma. Los atributos son aquellas propiedades que

LGHQWL¿FDQ��FXDOL¿FDQ��FXDQWL¿FDQ��R�GHWHUPLQDQ�el estatus de una entidad.

Uno de los errores en que se incurre, producto de la “cultura” de creer que no hay necesidad de tener responsable alguno a nivel de una base de datos, es el hecho de pensar que los modelos de datos se los genera a la par que se desarrollan los aplicativos que van a permitir manipular los datos almacenados en la base respectiva.

Esto conlleva a dejar que los programadores YD\DQ� FUHDQGR� VXV� SURSLDV� WDEODV� �REMHWRV�ItVLFRV�SDUD�DOPDFHQDU�GDWRV��FRQIRUPH�ODV�YDQ�necesitando y van desarrollando las aplicaciones. Lo mencionado se constituye en una expresa “contravención” de las normas del diseño de una base de datos, pues se está incurriendo en las siguientes violaciones:

No se está respetando el orden de las actividades a realizarse dentro del ciclo de vida clásico de una base de datos. Esto es, la actividad de modelar los datos es antes de la actividad de implementar la base de datos haciendo uso de un lenguaje de cuarta generación, como lo son los lenguajes de consulta.

Un programador no puede tener la potestad de crear una tabla por el grado de desconocimiento que, de manera general, adolecen los encargados de crear las aplicaciones que van a permitir interactuar a los usuarios con los datos. Desconocimiento que va desde la arquitectura GHO�PRWRU��FRPR�\D�OR�PHQFLRQDPRV���KDVWD�ORV�FRUUHVSRQGLHQWHV�³WLSV´�SDUD�D¿QDU�VHQWHQFLDV�GH�SQL. Se mencionó que el profesional encargado de hacer el respectivo modelamiento de datos es el Administrador de la Base de Datos.Lamentablemente, muchas empresas optan por no contar con un DBA como parte de su SHUVRQDO� ¿MR�� SRU� FXHVWLRQHV� GH� FRVWR�� SXHV� HO�sueldo de un profesional dedicado a administrar una base de datos bordea los tres mil dólares �YDORU�TXH�YDUtD�GHSHQGLHQGR�GHO�SDtV�\�GHO�WLSR�GH�RUJDQL]DFLyQ��

Page 8: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

54 GACETA SANSANA, julio del 2015

(O� KDUGZDUH� WDPELpQ� VH� SXHGH� FRQVWLWXLU� HQ�un obstáculo para disminuir los tiempos de respuesta. ¿Cómo?

Una base de datos realiza todas sus operaciones en la memoria principal del computador. En lo referente a las consultas, cada query necesita localidades de memoria donde poder ejecutarse. Si el equipo donde residen los datos que son manipulados por el DBMS tiene poca RAM �5DQGRP�$FFHVV�0HPRU\��\�KD\�PXFKRV�TXHULHV�que resolver, es obvio que las consultas pueden tomar más del tiempo standard por cuanto se va a necesitar atender a varios requerimientos a la vez, y esto implica el uso de más celdas de memoria.

Dada la poca cantidad de memoria, el motor de la base de datos se verá obligado a efectuar lo que se conoce con el nombre de “swapping”, que es un modo de interrelacionar la RAM del computador, con la memoria secundaria, de tal forma que se produce un intercambio de información entre ambas.

Esta manera de potenciar en un ambiente de base de datos a la memoria central en base a los recursos de la secundaria, no es de gran ayuda al momento de resolver un query, puesto que el hecho de interactuar con el disco hace que el tiempo de respuesta aumente. La manera de darle solución a este problema es, obviamente, aumentando la capacidad de la memoria principal.

Otro punto interesante con respecto al hardware del equipo donde reside la base de datos es el que tiene relación con el dispositivo donde se graban los datos.

Esto es, el disco duro, que es el tipo de memoria secundaria donde se generan los repositorios de una base de datos.

El problema de los discos va mucho más allá de su capacidad. El problema es la contención que puede originarse al existir, en un mismo momento, varios usuarios tratando de realizar

algún tipo de transacción en la base de datos.

La contención de disco ocurre cuando múltiples transacciones intentan acceder al mismo disco físico simultáneamente. Esto causa una baja en el rendimiento de la base de datos.

La solución más obvia ante este problema es UHGXFLU� ODV� HQWUDGDV� GH� ,�2� �,QSXW�2XWSXW��� \�esto se logra distribuyendo aquellas sobre las diferentes unidades que tiene el servidor.

La separación física de los datos del usuario de sus correspondientes índices es otra medida a tomar para evitar las contenciones.

Colocar los datos en un disco físico y los índices en otro, ayudaría a reducir la contención en las memorias secundarias por la razón expuesta a continuación.

De manera general, cada vez que se trata de recuperar un dato de la base, se hace uso de un índice para su lectura. Si los datos están físicamente en el mismo disco que los índices, la misma cabeza lectora deberá moverse, en primer lugar, para recuperar la dirección indicada en el índice, y a continuación, con esa dirección moverse a buscar el dato. Esto puede causar contención en el disco cuando se tiene un ambiente con muchos usuarios tratando de consultar datos a la vez.

El colocar los datos en un disco físico y los índices en otro permitirá distribuir la carga al momento de consultar un dato, pues cada disco dispone de su propia cabeza de lectura/escritura, OR�TXH�VLJQL¿FD��SRU�HMHPSOR��TXH�HO�FDEH]DO�GH�lectura del disco donde se encuentran los datos, sólo se moverá cuando se necesite leer datos. Cada vez que se necesiten leer los índices, se moverá el cabezal de lectura del disco donde están los índices.

Adicional al tema de los índices, bien vale la pena mencionar que la ausencia de los mismos WDPELpQ�KDFH�TXH�ORV�WLHPSRV�GH�UHVSXHVWDV�QR�sean los óptimos.

Page 9: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

55GACETA SANSANA, julio del 2015

Y es que la función de un índice en una base de datos es mejorar la velocidad de recuperación de un dato. Es similar al índice de un libro. 3DUD�UHFXSHUDU�XQD�¿OD�GH�XQD�WDEOD�HQ�XQD�EDVH�de datos, primero se busca en el índice dicho HOHPHQWR��\�XQD�YH]�HQFRQWUDGR��VH�DFFHVD�OD�¿OD�apuntada por la dirección del índice.

Pero, hay que tener mucho cuidado con los tQGLFHV��SXHV� VX�H[DJHUDGR�XVR� WDPELpQ�SXHGH�llegar a afectar los tiempos, no de respuesta, pero sí de procesos. Esto es, aquellas estructuras facilitan las búsquedas, pero aumentan el tiempo de proceso de otras instrucciones tales como el insert, update o el delete.

El “insert” es la instrucción que permite LQJUHVDU�¿ODV�R�UHJLVWURV�HQ�XQD�EDVH�GH�GDWRV���(O�³XSGDWH´�SHUPLWH�DFWXDOL]DU�GDWRV�HQ�ODV�¿ODV�o registros ya ingresados en el repositorio. El ³GHOHWH´�SHUPLWH�ERUUDU�¿ODV�GH�GDWRV�

Al ejecutarse cualquiera de estas tres últimas sentencias mencionadas, se tienen que actualizar los índices asociados a las tablas sobre las cuales actúan dichas sentencias. Esto es, si se ERUUD� XQ� UHJLVWUR�� HO� PRWRU� WDPELpQ� WLHQH� TXH�ERUUDU�DXWRPiWLFDPHQWH�OD�GLUHFFLyQ�GH�HVD�¿OD�en todos los índices creados para la tabla de la cual se está eliminando los datos. Si se insertan ¿ODV��KD\�TXH�DFWXDOL]DU�ORV�tQGLFHV�UHVSHFWLYRV�ingresando en cada uno de ellos la clave y la dirección donde está almacenado el nuevo dato ingresado. En otras palabras, a más estructuras para optimizar el acceso a una tabla, más incidencia tienen al momento de ejecutarse una inserción, una actualización o una eliminación de algún dato.7DPELpQ� KD\� TXH� WHQHU� FXLGDGR� FRQ� UHVSHFWR�al uso indiscriminado de índices en el sentido de que hay que crear estas estructuras sólo cuando las consultas así lo ameriten. Por HMHPSOR�� VL� XQD� WDEOD� WLHQH� DSHQDV� GRV� ¿ODV��no hay necesidad de crear índices puesto que más rápido se resolvería una consulta en esta WDEOD�UHFRUULpQGROD�VHFXHQFLDOPHQWH��HQ�YH]�GH�DFFHVDUOD�D�WUDYpV�GH�XQ�tQGLFH�

RECOMENDACIONES

Se ha hecho referencia a algunos cuellos de botella que se constituyen en obstáculos cuando GH�PHMRUDU� ORV� WLHPSRV�GH�UHVSXHVWD�VH�UH¿HUH���En base a lo mencionado, es necesario realizar D¿QDPLHQWRV�SHULyGLFRV�D�OD�EDVH�GH�GDWRV�

El Center of Expertise Oracle ha desarrollado XQ� PpWRGR� �&R(� 3HUIRUPDQFH� 0HWKRG��� HQ�el cual se pone a consideración una ecuación básica que se debe tener presente al momento GH� UHDOL]DU�XQ�D¿QDPLHQWR� �WXQLQJ��D�XQD�EDVH�GH�GDWRV��&XHYD��������Esta ecuación es la siguiente:

Tiempo de Respuesta = Tiempo de Servicio + Tiempo de Espera

Según esta ecuación, el tiempo total de respuesta de una base de datos está dado por la sumatoria HQWUH� HO� WLHPSR� GH� XVR� GHO� &38� �WLHPSR� GH�VHUYLFLR��\�ORV� WLHPSRV�GH�HVSHUD�� �/D�YDULDEOH�crítica en esa ecuación son los tiempos de espera, pues, de manera general, ellos se constituyen en ORV�FXHOORV�GH�ERWHOOD�PiV�VLJQL¿FDWLYRV�

Jim Cueva, Director General de JC Magazine, menciona los siguientes pasos para resolver aquellos cuellos de botellas:

�'H¿QLU�HO�SUREOHPD� Realizar un levantamiento de información. Plantear una solución al problema. Realizar pruebas de rendimiento.

3RU�GH¿QLU�HO�SUREOHPD�VH�HQWLHQGH�DVHJXUDUVH�de comprender a cabalidad el problema de rendimiento que está afectando a la base de datos, y mantener una documentación detallada de cada instancia en la cual se está presentando el problema. En esta etapa se deben responder preguntas tales como: ¿al consultar la base de GDWRV��pVWD�VH�YXHOYH�OHQWD"��¢D�FXiQWRV�XVXDULRV�les pasa lo mismo?, entre otros.

Page 10: 0#1- %&/'$#1-./-2/1$3/1%)1- /,-3,)-4)1/-./-.)%#1

56 GACETA SANSANA, julio del 2015

Realizar un levantamiento de información consiste en reunir todos los datos necesarios que permitan medir la magnitud del problema.

Plantear una solución al problema implica diseñar una solución que permita solventar el asunto.El realizar pruebas de rendimiento conlleva KDFHU�WRGRV�ORV�DQiOLVLV�TXH�VHDQ�QHFHVDULRV�D�¿Q�de asegurarse que se está dando cumplimiento a los tiempos de respuestas esperados. No hay que escatimar absolutamente nada al momento de realizar las pruebas de rendimiento o los análisis que sean necesarios.

(Q�HO�HYHQWR�GH�TXH�DXQ�GHVSXpV�GH�GHVDUUROODU�los pasos anteriores, el problema no se ha solucionado, será necesario repetir todo el proceso hasta que la base de datos llegue a brindar los tiempos de respuesta deseados.

BIBLIOGRAFÍA

����GH�0D\R�GH��������2EWHQLGR�GH�:RUG5HIHUHQFH��http://www.wordreference.com/&XHYD��-�����GH�0D\R�GH����������SDVRV�SDUD�RSWLPL]DU�el rendimiento de la base de datos. Obtenido de JC Magazine: http://www.jcmagazine.com/5-pasos-para-optimizar-el-rendimiento-de-la-base-de-datos/*ODGZHOO��0����������2XWOLHUV��7KH�6WRU\�RI�6XFFHVV��Little, Brown and Company.+HXUWHO�� 2�� �������� 2UDFOH� ��� *��$GPLQLVWUDFLyQ��ENI./LX��+��+����������2UDFOH�'DWDEDVH�3HUIRUPDQFH�DQG�Scalability: A quantitative approach. New Jersey: -RKQ�:LOH\��6RQV��,QF�5RYHR��3������GH�(QHUR�GH��������%ORJ�25$0'4��Obtenido de ORAMDQ: http://oramdq.blogspot.com/2010/01/enfoque-para-medir-la-disponibilidad.html

AUTOR

Profesor Enrique Salazar Meza

Analista de Sistemas. Economista. Magíster en Administración de Empresas. Docente en la ESPOL Participó como expositor en temas referentes a la la estandarización de sílabos, metodología y evaluación de los aprendizajes, tutorías académicas y elaboración de manuales pedagógicos como parte del proceso de acreditación de la Universidad San Gregorio de Portoviejo y de la Universidad Estatal del Sur de Manabí. Actualmente es docente en la Universidad Santa María.

Tiene experiencia profesional en la administración de centros de cómputo, en la asesoría para el diseño y la implementación de bases de datos, consultoría tecnológica \� ¿QDQFLHUD�� ([SHUWR� HQ� HO� PDQHMR� GH�repositorios de información y en la gestión de bases de datos ORACLE.