Sei sulla pagina 1di 7

TCNICAS PARA LA OPTIMIZACIN DE LA BASE DE DATOS

CALLETANA LPEZ BALETA

INSTRUCTOR
JONATHAN QUICENO VARGAS
INGENIERO DE SISTEMAS Y COMPUTACIN

SERVICIO NACIONAL DE APRENDIZAJE


PROGRAMA
ESPECIALIZACIN TECNOLGICA EN GESTIN Y SEGURIDAD DE BASE
DE DATOS
MODALIDAD VIRTUAL
2017
OPTIMIZACIN DE BASE DE DATOS

La optimizacin del acceso a los datos es vital para el tiempo de carga de la pgina,
debido a que suele ser el factor que ms 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 pgina (imgenes, 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 optimizacin es probablemente la ms compleja de todas, en primer


lugar porque depende de dos factores variables en el tiempo: por un lado, de cmo
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 cdigo que ejecuta las consultas, crear ndices, vistas materializadas,
particiones horizontales y verticales, rplicas, tablas de apoyo, saber elegir los tipos
de datos a usar, saber optimizar el esquema sin perder la lgica del modelo de
negocio, saber ajustar los parmetros de configuracin del SGBD, conocer y saber
usar sistemas de cach externos. Adems cada uno de estos puntos, de los que
hay muchos libros escritos, se debe abordar de forma distinta dependiendo de qu
SGBD.

SQL Server 2008 R2 Puede utilizar la GUI (interfaz grfica de usuario) del Asistente
para la optimizacin de motor de base de datos para optimizar bases de datos
mediante tablas o archivos de carga de trabajo. La GUI del Asistente para la
optimizacin de motor de base de datos le permite ver con facilidad los resultados
de la sesin de optimizacin actual y los resultados de sesiones anteriores. Para
obtener ms informacin.

Para optimizar una base de datos mediante una tabla o archivo de carga de trabajo
como entrada
1. Determine las caractersticas de la base de datos (ndices, vistas indizadas y
particiones) que desea que el Asistente para la optimizacin de motor de base de
datos tenga en cuenta para agregarlas, quitarlas o mantenerlas durante el anlisis.
Para obtener ms informacin, vea Acerca de las cargas de trabajo y
Consideraciones para usar el Asistente para la optimizacin de motor de base de
datos.

2. Cree una carga de trabajo. Para obtener ms informacin, vea Cmo crear cargas
de trabajo

3. Inicie el Asistente para la optimizacin de motor de base de datos e inicie sesin


en una instancia de Microsoft SQL Server. Para obtener ms informacin, vea Iniciar
el Asistente para la optimizacin de motor de base de datos.

4. En la ficha General, escriba un nombre en Nombre de sesin para crear una


nueva sesin de optimizacin.

5. Seleccione Archivo de carga de trabajo o Tabla y escriba la ruta de acceso al


archivo o el nombre de la tabla en el cuadro de texto adyacente.

El formato para especificar una tabla es:


database_name.schema_name.table_name

1. Para buscar una tabla o archivo de carga de trabajo, haga clic en el botn
Examinar. El Asistente para la optimizacin de motor de base de datos presupone
que los archivos de carga de trabajo son archivos de sustitucin incremental. Para
obtener ms informacin acerca de los archivos de sustitucin incremental, Al usar
una tabla de traza como una carga de trabajo, esa tabla debe existir en el mismo
servidor que el Asistente para la optimizacin de motor de base de datos est
optimizando. Si crea una tabla de traza en otro servidor, muvala al servidor en el
que el Asistente para la optimizacin de motor de base de datos est realizando la
optimizacin antes de utilizarla como carga de trabajo.

2. Seleccione las bases de datos y tablas en las que desea ejecutar la carga de
trabajo seleccionada en el paso 5. Para seleccionar las tablas, haga clic en la flecha
Tablas seleccionadas.
3. Seleccione Guardar registro de optimizacin para guardar una copia del registro
de optimizacin. Desactive la casilla de verificacin si no desea guardar una copia
del registro de optimizacin. Puede ver el registro de optimizacin despus del
anlisis; para ello, abra la sesin y seleccione la ficha Progreso.

4. Haga clic en la ficha Opciones de optimizacin y seleccione las opciones que


figuran en la lista. Para obtener ms informacin, vea Opciones de optimizacin
disponibles.

5. Haga clic en el botn Iniciar anlisis de la barra de herramientas. Si desea detener


la sesin de optimizacin una vez iniciada, en el men Acciones seleccione una de
las siguientes opciones:

o Detener anlisis (Con recomendaciones) detiene la sesin de optimizacin y


pregunta al usuario si desea que el Asistente para la optimizacin de motor de base
de datos genere recomendaciones basadas en el anlisis realizado hasta este
punto.

o Detener anlisis detiene la sesin de optimizacin sin generar ninguna


recomendacin. Optimizacin de consultas Para finalizar, algunos breves consejos
para optimizar consultas:

Cambiar los OR por IN, cuando tenemos ms de un valor para comparar.

Minimizar el coste de los JOIN: La concatenacin natural o JOIN es la operacin


ms costosa de las bases de datos relaciones, ya que requiere realizar una
multiplicacin cartesiana y una seleccin de valores. Algunas tcnicas que podemos
usar para minimizar su efecto consisten en:

Reordenarlos para concatenar primero las relaciones con menos filas para reducir
el nmero de cruces.

Crear subconsultas en donde se filtren o limiten el nmero 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 ningn dato de la relacin 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 ms 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
ms rpido, pero son costosos de crear, as que no es conveniente su uso si
tenemos muchas ms lecturas que escrituras.

Debemos analizar el plan de ejecucin de las consultas (cada SGBD tiene su


manera de verlo) para saber dnde 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

Cachear las consultas ms 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 ms
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 ms frecuentes y ms
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 nmero de veces que se accede a una consulta, es generar un nmero
aleatorio y cachear la consulta si ese nmero pasa de cierto valor. Por ejemplo,
supongamos que generamos un nmero aleatorio entre 1 y 100 y la consulta se
cachea si dicho nmero es menor que 10, de esta forma se guardar la consulta en
cach con una probabilidad del 10% en cada peticin, as si la consulta tiene ms
peticiones, ser ms probable que se guarde en cach.

Optimizar la paginacin

La paginacin suele ser una tarea costosa cuando tenemos que mostrar varios
nmeros de pgina, porque para eso se tiene que calcular el nmero de filas en la
relacin, lo que puede requerir una lectura completa de la misma, dependiendo del
SGBD. Siempre ser ms eficiente mostrar enlaces de anterior y siguiente,
recuperando todas las filas a mostrar y una ms, de manera que se muestra el
enlace de siguiente pgina, si nos llega esta fila adicional desde la BD.
Alternativamente, podemos mantener en una relacin independiente el nmero de
filas.

Otra cosa que puede afectar a las paginaciones, es que cuando estamos en una
pgina interior se deben descartar un cierto nmero de filas, pertenecientes a las
pginas anteriores, y que son ledas del disco con todas las columnas que
aparezcan en la consulta. Una forma de evitar esto es realizar un JOIN con una
subconsulta que recupere los identificadores que necesitamos antes de leer toda la
informacin. Ejemplo: SELECT dato1, dato2, dato3 FROM Foo INNER JOIN(
SELECT id FROM Foo ORDER BY dato1 LIMIT 50,10) AS FooPaginado USING(id)

Potrebbero piacerti anche