Está en la página 1de 7

TECNICAS PARA LA OPTIMIZACION DE BASES DE DATOS

Harold Castaño Giraldo

Servicio nacional de aprendizaje (Sena)


Especialización Tecnológica en gestión y seguridad de bases de datos
2017
INTRODUCCION
La creación de una base de datos, depende de las necesidades de una organización y de sus
dependencias, es por esto que debemos de analizar las necesidades y además de esto
debemos de establecer un caso de estudio donde la prioridad sea mantener, administrar y
mejorar la base de datos.
OPTIMIZACION DE UNA BASE DE DATOS MEDIANTE LA OPTIMIZACION
DE UN MOTOR DE BASES DE DATOS

Optimización de bases de datos: La optimización del acceso a los datos es vital para el
tiempo de carga de la página, debido a que suele ser el factor que más afecta al tiempo que
tiene que esperar el navegador para recibir el HTML. Este tiempo de espera es muy
importante, ya que el resto de recursos de la página (imágenes, scripts y hojas de estilo), no
se empiezan a bajar hasta que el navegador no lee el HTML desde el que se hace referencia
a estos recursos.
Este tipo de optimización es probablemente la más compleja de todas, en primer lugar
porque depende de dos factores variables en el tiempo: por un lado, de cómo y de qué tipo
son las consultas que se van a realizar y, por otro, de la carga de trabajo que tenga que
soportar el servidor o servidores. En segundo lugar por la gran cantidad de conocimientos
que hay que tener para saber reescribir consultas, reescribir el código que ejecuta las
consultas, crear índices, vistas materializadas, particiones horizontales y verticales, réplicas,
tablas de apoyo, saber elegir los tipos de datos a usar, saber optimizar el esquema sin perder
la lógica del modelo de negocio, saber ajustar los parámetros de configuración del SGBD,
conocer y saber usar sistemas de caché externos.

Optimización de consultas
Cambiar los OR por IN, cuando tenemos más de un valor para comparar.
Minimizar el coste de los JOIN: La concatenación natural o JOIN es la operación más
costosa de las bases de datos relaciones, ya que requiere realizar una multiplicación
cartesiana y una selección de valores. Algunas técnicas que podemos usar para minimizar
su efecto consisten en:
Reordenarlos para concatenar primero las relaciones con menos filas para reducir el número
de cruces.
Crear subconsultas en donde se filtren o limiten el número de filas de las relaciones grandes
antes de realizar los siguientes JOINs.
A veces, dividir una consulta en varias, es mejor que hacerlo todo con una sola consulta, de
forma que podemos obtener en una primera consulta unos pocos identificadores que
podemos pasar con un IN a la siguiente consulta, en lugar de realizar un JOIN.
Cambiar los JOIN por EXISTS si no se va a mostrar ningún dato de la relación con la que
se realiza el cruce.
Tener en cuenta el problema del N + 1: El n+1 se produce normalmente cuando tenemos un
listado en el que para mostrarlo como queremos, por cada ítem necesitamos realizar una
consulta adicional (el más uno del n+1). En este caso, suele ser mejor realizar uno o varios
JOIN adicionales, en la consulta que recupera el listado de ítems. De esta forma obtenemos
el listado tal y como lo necesitamos, y no se tienen que lanzar consultas adicionales para
cada ítem.
Especificar siempre los nombres de las columnas en las SELECT, si no el SGBD leerá
todas las filas del disco. El asterisco se debe usar sí y solo sí se utiliza COUNT, en cuyo
caso el SGBD sabrá que no tiene que leer todas las columnas.
Crear índices: los índices permiten un acceso a los datos no secuencial mucho más rápido,
pero son costosos de crear, así que no es conveniente su uso si tenemos muchas más
lecturas que escrituras. Debemos analizar el plan de ejecución de las consultas (cada SGBD
tiene su manera de verlo) para saber dónde debemos crear índices.
Normalmente, crearemos los índices en claves ajenas y en las columnas que se usen con
ORDER BY o WHERE. Si se crean índices compuestos, se deben poner las columnas en el
mismo orden que se vayan a usar en las consultas.

OPTIMIZACION DE BASES DE DATOS CON SQL SERVER 2012

El Asistente para la optimización de motor de base de datos de Microsoft (DTA) analiza las
bases de datos y hace recomendaciones que puede usar para optimizar el rendimiento de las
consultas. Puede usar el Asistente para la optimización de motor de base de datos a fin de
seleccionar y crear un conjunto óptimo de índices, vistas indizadas o particiones de tabla
sin necesidad de conocer detalladamente la estructura de la base de datos ni el
funcionamiento interno de SQL Server. Con DTA, puede realizar las siguientes tareas.
 Solucionar problemas del rendimiento de una consulta específica
 Optimizar un conjunto grande de consultas en una o varias bases de datos
 Realizar análisis condicionales de exploración de posibles cambios de diseño físicos
 Administrar el espacio de almacenamiento.

VENTAJAS
El Asistente para la optimización de motor de base de datos de Microsoft (DTA) analiza las
bases de datos y hace recomendaciones que puede usar para optimizar el rendimiento de las
consultas. Puede usar el Asistente para la optimización de motor de base de datos a fin de
seleccionar y crear un conjunto óptimo de índices, vistas indizadas o particiones de tabla
sin necesidad de conocer detalladamente la estructura de la base de datos ni el
funcionamiento interno de SQL Server. Con DTA, puede realizar las siguientes tareas.
Solucionar problemas del rendimiento de una consulta específica
Optimizar un conjunto grande de consultas en una o varias bases de datos
Realizar análisis condicionales de exploración de posibles cambios de diseño físicos
Administrar el espacio de almacenamiento
Ventajas del Asistente para la optimización de motor de base de datos
La optimización del rendimiento de las consultas puede ser difícil sin un conocimiento
completo de la estructura de la base de datos y de las consultas que se ejecutan en ella. El
Asistente para la optimización de motor de base de datos puede facilitar esta tarea mediante
el análisis de la memoria caché de plan de consulta actual o de la carga de trabajo de las
consultas de Transact-SQL que crea, y con la recomendación de un diseño físico adecuado.
Para administradores de bases de datos más avanzadas, DTA expone un mecanismo eficaz
para realizar análisis condicionales de exploración de diferentes alternativas de diseño
físico. DTA puede proporcionar la siguiente información.
 Recomendar la mejor combinación de índices para las bases de datos mediante el
uso del optimizador de consultas para analizar las consultas de una carga de trabajo.
 Recomendar particiones alineadas y no alineadas para las bases de datos a las que se
hace referencia en una carga de trabajo.
 Recomendar vistas indizadas para las bases de datos a las que se hace referencia en
una carga de trabajo.
 Analizar los efectos de los cambios propuestos en aspectos tales como el uso de
ííndices, la distribución de consultas entre tablas y el rendimiento de las consultas
de la carga de trabajo.
 Recomendar métodos para optimizar la base de datos con respecto a un pequeño
conjunto de consultas problemáticas.
 Permitirle personalizar la recomendación mediante la especificación de opciones
avanzadas como, por ejemplo, las restricciones de espacio en disco.

LIMITANTES
El asistente nos limita, ¿En qué?
 No puede agregar o quitar índices únicos o índices que aplican restricciones
PRIMARY KEY o UNIQUE.
 No puede analizar una base de datos que esté configurada en modo de usuario
único.
 Si especifica un espacio en disco máximo en las recomendaciones de optimización
que supere el espacio disponible real, el Asistente para la optimización de motor de
base de datos usa el valor especificado. Sin embargo, al ejecutar el script de
recomendaciones para implementarlo, el script puede generar un error si antes no se
agrega más espacio en disco. El espacio en disco máximo puede especificarse
mediante la opción -B de la utilidad dta o especificando un valor en el cuadro de
diálogo Opciones avanzadas de optimización.
 Por motivos de seguridad, el Asistente para la optimización de motor de base de
datos no puede optimizar una carga de trabajo de una tabla de seguimiento que
resida en un servidor remoto. Para evitar esta limitación, puede usar un archivo de
seguimiento en lugar de una tabla de seguimiento o copiar la tabla de seguimiento
en el servidor remoto.
 Al imponer restricciones, como las impuestas al especificar el espacio en disco
máximo en las recomendaciones de optimización (mediante la opción -B o el cuadro
de diálogo Opciones avanzadas de optimización), el Asistente para la optimización
de motor de base de datos puede verse forzado a quitar algunos índices existentes.
En ese caso, la recomendación resultante del Asistente para la optimización de
motor de base de datos puede producir lo contrario a la mejora esperada.
 Al especificar una restricción para limitar el tiempo de optimización (mediante la
opción -A con la utilidad dta o activando Limitar tiempo de optimización en la
pestaña Opciones de optimización), el Asistente para la optimización de motor de
base de datos puede exceder ese límite de tiempo para generar la mejora esperada
exacta e informes de análisis de la parte de la carga de trabajo que se ha consumido
hasta ahora.

CACHEAR LAS CONSULTAS MAS FRECUENTES


Activar la caché de base de datos del SGBD a veces puede empeorar el
rendimiento. Esto depende del volumen de datos al que se acceda más frecuentemente.
Si el volumen de datos es alto y se actualiza frecuentemente, estaremos siempre
escribiendo en la caché en lugar de leer de ella. Así que normalmente es preferible
recurrir a un sistema de caché externo, en el cual podamos controlar que se van a
cachear realmente los datos más frecuentes y más frescos. Si el sistema de caché no nos
provee de esta funcionalidad, podemos implementarla nosotros. Una buena forma de
hacerlo sin el sobrecoste de almacenar el número de veces que se accede a una consulta,
es generar un número aleatorio y cachear la consulta si ese número pasa de cierto valor.
Por ejemplo, supongamos que generamos un número aleatorio entre 1 y 100 y la
consulta se cachea si dicho número es menor que 10, de esta forma se guardará la
consulta en caché con una probabilidad del 10% en cada petición, así si la consulta tiene
más peticiones, será más probable que se guarde en caché.

También podría gustarte