Download optimización de los tiempos de respuestas en una base de datos

Document related concepts

SQL wikipedia , lookup

Inyección SQL wikipedia , lookup

Denormalización (base de datos) wikipedia , lookup

Área Global del Sistema wikipedia , lookup

Base de datos en memoria wikipedia , lookup

Transcript
OPTIMIZACIÓN DE LOS
TIEMPOS DE RESPUESTAS
EN UNA BASE DE DATOS
Autor: Enrique Salazar
GACETA SANSANA, julio del 2015
47
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
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.
transacciones de consultas que permitan obtener resultados en el menor tiempo posible.
utilizando y de la sintaxis de la sentencia utilizada para efectuar consultas a los datos, adicional al
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.
levantamiento de información, planteamiento de solución, y realizar pruebas de rendimiento.
48
GACETA SANSANA, julio del 2015
INTRODUCCIÓN
sistemas gestores de bases de datos.
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
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
datos y la recuperación rápida y oportuna de la
información.
ACTORES DEL ÁREA DE BASE DE
Dado que la administración y el mantenimiento DATOS
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
El Administrador de
“
La creación de diferentes
aplicativos generan grandes
repositorios de datos que
permiten obtener información
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
programadores que no tienen los conocimientos
respectivo repositorio; son profesionales que
para variar, se autodenominan “expertos” en
“
con tener sistemas
administradores
de
base de datos con
tiempos de respuestas
decentes, pero no
Para un correcto funcionamiento de los
grandes repositorios de datos que residen en
el disco de un computador, se necesita de un
.
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
GACETA SANSANA, julio del 2015
49
los datos. A este software se lo conoce con el
nombre de Sistema Administrador de Base de
Como parte de la arquitectura de un DBMS
se tienen los lenguajes de bases de datos. El
indica, es un lenguaje de consulta que permite
el acceso a las bases de datos relacionales, para
operaciones.
Todo programador de base de datos que se jacte
de ser un “experto” en lenguaje SQL, debe saber
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.
Datos:
Total días por año = 365 días
Total días en fines de semana (sábado y domingo) = 52 semanas * 2 días = 104 días
Total días festivos = 11 días
Horas 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 fines 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) * 4
Horas laborales anuales = 1.000 horas
Años de experiencia = 10.000 / 1.000
Años de experiencia = 10 años
Resultado:
10.000 horas de experiencia equivalen a 10 años.
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
50
GACETA SANSANA, julio del 2015
alguien se considere experto en un tema, debe
invertir como mínimo unas 10.000 horas en
Aquellas 10.000 horas, trabajando a media
10 años.
A continuación el cálculo que permite corroborar
esto último:
Este resultado nos deja como conclusión que
toda persona que se considera “experta” en alimo, 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,
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
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
que cumplan con determinadas condiciones.
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)]
| 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
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.
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
GACETA SANSANA, julio del 2015
51
memoria principal del equipo es el “Libray
Cache”. Esta estructura es un conjunto de
bloques de memoria que residen en la RAM
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.
varios usuarios a la vez.
Otro de los pasos recomendados para crear de
forma correcta un query es que quien escribe
conocer al detalle la sintaxis de la sentencia
SELECT, pues esto le permitirá optimizar la
utilización de la misma.
La library cache está diseñada para incrementar
se compartan entre los usuarios las sentencias
tanto SQL como PL/SQL. Esta estructura
almacena todas las sentencias SQL parseadas
Cuando un usuario ejecuta una sentencia,
ocurren dos cosas: en primer lugar, Oracle
igual, la sentencia debe ser parseada y luego
alojada en la library cache. Si, en cambio, existe
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
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
Una tercera recomendación tendiente a optimizar
los tiempos de respuestas de los queries es
UNION o UNION ALL?
Con la cláusula UNION en un query, se realizará
eliminar los registros repetidos. Y una operación
el procesamiento, puesto que le toma tiempo al
procesador del computador efectuarlo.
En cambio, con la cláusula UNION ALL no se
52
GACETA 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.
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
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
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
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
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
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
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
sueldo de un profesional dedicado a administrar
una base de datos bordea los tres mil dólares
GACETA SANSANA, julio del 2015
53
algún tipo de transacción en la base de datos.
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
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
54
GACETA SANSANA, julio del 2015
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
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,
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
sean los óptimos.
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.
de datos, primero se busca en el índice dicho
apuntada por la dirección del índice.
RECOMENDACIONES
Se ha hecho referencia a algunos cuellos de
botella que se constituyen en obstáculos cuando
En base a lo mencionado, es necesario realizar
Pero, hay que tener mucho cuidado con los
El Center of Expertise Oracle ha desarrollado
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 cual se pone a consideración una ecuación
básica que se debe tener presente al momento
El “insert” es la instrucción que permite
Tiempo de Respuesta =
Tiempo de Servicio + Tiempo de Espera
o registros ya ingresados en el repositorio. El
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
en todos los índices creados para la tabla de la
cual se está eliminando los datos. Si se insertan
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.
al uso indiscriminado de índices en el sentido
de que hay que crear estas estructuras sólo
cuando las consultas así lo ameriten. Por
no hay necesidad de crear índices puesto que
más rápido se resolvería una consulta en esta
Esta ecuación es la siguiente:
Según esta ecuación, el tiempo total de respuesta
de una base de datos está dado por la sumatoria
crítica en esa ecuación son los tiempos de espera,
pues, de manera general, ellos se constituyen en
Jim Cueva, Director General de JC Magazine,
menciona los siguientes pasos para resolver
aquellos cuellos de botellas:
Realizar un levantamiento de información.
Plantear una solución al problema.
Realizar pruebas de rendimiento.
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
les pasa lo mismo?, entre otros.
GACETA SANSANA, julio del 2015
55
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
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.
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
http://www.wordreference.com/
el rendimiento de la base de datos. Obtenido de JC
Magazine:
http://www.jcmagazine.com/5-pasospara-optimizar-el-rendimiento-de-la-base-de-datos/
Profesor Enrique Salazar Meza
Analista de Sistemas. Economista. Magíster
en Administración de Empresas. Docente
AUTOR
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.
Little, Brown and Company.
ENI.
Scalability: A quantitative approach. New Jersey:
Obtenido
de
ORAMDQ:
http://oramdq.
blogspot.com/2010/01/enfoque-para-medir-ladisponibilidad.html
56
GACETA SANSANA, julio del 2015
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
repositorios de información y en la gestión
de bases de datos ORACLE.