Professional Documents
Culture Documents
INTRODUCCIÓN
Las bases de datos han evolucionado y con ello la gestión y afinación de las
misma, esto implica que el desarrollador debe tener en cuenta parámetros que no
solo optimicen las bases de datos como tal, sino que estos parámetros de
configuración este predispuestos al cambio y al crecimiento, ahora bien para este
proceso se consideran a los sistemas gestores de bases de datos (SGBD) cuyo
principal objetivo es proporcionar una forma de almacenar y recuperar la
información de manera que sea tanto practica como eficiente.
Uno de los principales motores de base de datos más reconocido a nivel mundial y
de los más empleados en las organizaciones es Oracle, este no solo cuenta con
una estructura robusta y en constante mejora, sino que proporciona la capacidad
de almacenar y acceder a estos datos de forma consecuente con un modelo
definido conocido como Modelo relacional (Relational Model).
Abstract
Palabras clave
Una BD debe presentar los datos de forma que el usuario pueda interpretarlos y
modificarlos.
Cabe recalcar los tres niveles principales para los procesos ejecutados por el
usuario sobre la BD:
Ahora bien para referirse a la afinación de una BD se deben tratar los temas
concernientes que un momento dado pueden afectar el rendimiento, por lo cual se
plantean los siguientes aspectos los cuales serán tratados en el desarrollo del
artículo:
-índices, vistas
-planes de ejecución
- Pruebas de carga
Índices
Un índice es una estructura de datos que permite acceder a diferentes filas de una
misma tabla a través de un campo (o campos clave). Y el cual va a permitir un
acceso mucho más rápido a los datos.
En segunda medida se tiene que hacer referencia a Vistas, entendido por vista
como el nivel más alto de abstracción, donde para el usuario no es importante
toda la información de la BD, sino que tales usuarios requieren acceder solo a una
parte de la BD.
Vistas
Una vista de base de datos es un resultado de una consulta SQL de una o varias
tablas; también se le puede considerar una tabla virtual.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única
diferencia es que sólo se almacena de ellas la definición, no los datos. Los datos
que se recuperan mediante una consulta a una vista se presentarán igual que los
de una tabla. De hecho, si no se sabe que se está trabajando con una vista, nada
hace suponer que es así. Al igual que como sucede con una tabla, se pueden
insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es
posible seleccionar datos de una vista, en algunas condiciones existen
restricciones para realizar el resto de las operaciones sobre vistas.
Como ejemplo se considera la vista Facultad y sus programas. Ahora bien esta
vista se denominara programas y se define la instrucción de la siguiente forma:
Una vez definida la vista se puede emplear el nombre de la vista para hacer
referencia a la relación virtual que genera la vista. Utilizando la vista Programas
para averiguar el nombre de los programas asociados a un la facultad de
ingeniería escribiendo
Πnombre_programa(σnombre_faculta=<<ingeniería>>(programas))
Planes de Ejecución
Cada vez que ejecutamos una sentencia una de las cosas que hace oracle es
crear un plan de ejecución de la sentencia. Un plan de ejecución define la forma
en que Oracle busca o graba los datos. Decide, por ejemplo, si va a usar o no los
índices en una sentencia SELECT. (ORACLE DBA)
El proceso por el que el gestor decide que plan de ejecución ha de seguir para
ejecutar una determinada sentencia depende de varios factores. Entre los más
importantes están los parámetros de configuración de la Base de Datos, por lo que
es importante asegurar que estén igual en Desarrollo y Producción. Por defecto se
suele indicar que se utilice el método CHOOSE, o sea, que se deja que sea el
propio software de Oracle el que decida como ejecutar las sentencias. No
obstante, este comportamiento se puede variar en cualquier momento, para
cualquier sentencia SQL individual, mediante el uso de HINTS, que no son más
que palabras reservadas que se escriben dentro de las propias sentencias a modo
de metadatos para instruir al gestor según nuestra conveniencia. Por ejemplo, se
puede escribir "SELECT /*+ INDEX(TBL IDX1)*/ ... FROM ..." para forzar que se
utilice el índice IDX1 sobre la tabla TBL en vez de dejar que sea el gestor que
decida que tipo de acceso a la tabla es el mejor.
Oracle facilita una forma de conocer el plan de ejecución de una sentencia SQL
mediante el comando “EXPLAIN PLAN FOR sentencia_sql;” con el que se
almacenan en una tabla, llamada normalmente EXPLAIN_PLAN, los distintos
pasos que seguirá el gestor para evaluar la sentencia dada, así como el coste
asociado a cada uno de esos pasos. El comando admite varios parámetros más
que resultan interesantes de investigar y que están lo suficientemente
documentado en la propia documentación de Oracle, amén de existir múltiples
ejemplos repartidos por toda la red.
Pero sin lugar a dudas uno de los factores más importantes de los que hace uso
Oracle para decidir qué plan de ejecución seguir son las estadísticas que
almacena asociadas a distintos objetos como las tablas o índices. Las estadísticas
almacenan cosas tales como el número de registros asociados a cada objeto, y
son clave para determinar como acceder a ellos. Para una tabla con muy pocos
registros puede resultar ventajoso en términos de rendimiento cargarla entera en
memoria y recorrerla por completo, mientras que para una tabla con muchos
registros puede ser mejor buscar un índice adecuado en función de las columnas
utilizadas para la consulta que se está realizando.
Otro hecho notable del gestor de Oracle es que permite copiar las estadísticas de
una Base de Datos a otra, independientemente del número y la distribución de
registros que tengan unas tablas en una Base de Datos u otra. De hecho, es
recomendable que cada cierto tiempo se copien las estadísticas del entorno de
Producción al de Desarrollo para tener los dos entornos lo más similares posible.
SQL> @$ORACLE_HOME/rdbms/admin/utlxplan
Table created.
Conclusiones