Documente Academic
Documente Profesional
Documente Cultură
2018
OPTIMIZACION DE UNA BASE DE DATOS MEDIANTE LA OPTIMIZACION DE
UN MOTOR DE BASES DE DATOS
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.
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.