Sunteți pe pagina 1din 5

AA9-Ev4 Optimización de la Base de Datos

Carlos Antonio Espinosa Orozco


CC No. 77.033.890

Cómo optimizar una base de datos mediante el Asistente para la optimización de motor
de base de datos

La optimización del acceso a los datos es vital para el tiempo de carga d e la página,
d e b id o a q u e su ele ser el factor q u e m á s afecta al t i e mp o q u e tiene q u e esp erar el
navegador para recibir el HT ML . Este tiempo de espera es mu y 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 H T M L 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
q u e s o p o r t a r el s e r v i d o r o s erv i d o r es . E n s e g u n d o l u g a r p o r la g r a n c a n t i d a d d e
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 d e a p o y o , sab er elegir los tipos d e dato s a usar, sab er
optimizar el e s q u e m a sin p erd er la lógica del m o d e l o d e negocio, sab er ajustar los
p a r á me t r o s d e c o n fi g u r a c i ó n d e l S G B D , c o n o c e r y sa b e r u sar s i s t e ma s d e c a c h é
externos. Además 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 gráfica de usuario) del Asistente para la optimización de
motor d e base d e datos para optimizar bases d e datos mediante tablas o archivos d e
carga de trabajo. La GUI del Asistente para la optimización de motor de base de datos le
p er mi te v er c o n facilidad lo s resu ltado s d e la sesió n d e o p t i mi za c ió n actu al y los
resultados d e sesiones anteriores. Para obtener más información,

Para optimizar u n a b ase d e datos me d ian te u n a tabla o archivo d e carga d e trabajo


c o mo entrada
1. De t er min e las características d e la b ase d e datos (índices, vistas indizadas y
particiones) qu e desea que el Asistente para la optimización d e motor de base
d e datos teng a en cu en ta p ara agregarlas, quitarlas o man ten erlas duran te el
análisis. P a r a ob ten er m á s in fo rmació n , v e a A c e r c a d e las carg as d e
trabajo y Consideraciones para usar el Asistente para la optimización de motor
de base de datos.
2. Cree una carga de trabajo. Para obtener más información, vea Cómo crear cargas
d e trabajo
3. Inicie el Asistente para la optimización de motor de base de datos e inicie sesión
en u n a instancia de Microsoft S Q L Server. Para obtener m á s información,
vea Iniciar el Asistente para la optimización de motor de base de datos.
4. E n la ficha General, escriba u n n o m b r e e n N o m b r e d e sesión p ara crear u n a
nueva sesión de optimización.
5. Seleccione Arch iv o d e carga d e trabajo o Tabla y escriba la ruta d e 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 b u scar u n a tabla o arch ivo d e carg a d e trabajo, h a g a clic e n el


botón Examinar.
El Asistente para la optimización d e motor de base de datos presupone que los
arch iv o s d e c arg a d e trab ajo s o n arch iv o s d e sustitución in cremen tal . P a r a
obtener más información acerca de los archivos de sustitución 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 optimización de motor de base de datos
está optimizando. Si crea una tabla de traza en otro servidor, muévala al servidor
e n el q u e el As i ste n t e p ar a la o p t i mi z a c i ó n d e m o t o r d e b a s e d e d a to s está
realizando la optimización antes de utilizarla como carga de trabajo.
2. S e le c cio n e las b as es d e d ato s y tablas e n las q u e d e s e a ejecutar la c arg a d e
trabajo seleccionada en el paso 5. Para seleccionar las tablas, h aga clic e n la
flecha Tablas seleccionadas.
3. Seleccione Guardar registro de optimización para guardar una copia del registro
de optimización. Desactive la casilla de verificación si n o desea guardar un a
copia del registro de optimización.
Pu ed e ver el registro d e optimizació n d espu és del análisis; para ello, abra la
sesión y seleccione la ficha Progreso.
4. Hag a clic en la ficha Opciones de optimización y seleccione las opciones que
figuran en la lista. Para obtener más información, vea Opciones de optimización
disponibles.
5. Haga clic en el botón Iniciar análisis de la barra de herramientas.
S i d e s e a d e t e n e r l a s e s i ó n d e o p t i m i z a c i ó n u n a v e z i n i c i ad a , e n el
menú Acciones seleccione una de las siguientes opciones:
D et en er análisis ( C o n r e co men d a c io n es) detien e la sesión d e
o

o p t i mi z a c i ó n y p re g u n t a al u su ar io si d e s e a q u e el Asisten te p a r a la
optimización d e motor d e base de datos genere recomendaciones
basadas en el análisis realizado hasta este punto.
o Detener análisis detiene la sesión de optimización sin generar ninguna
recomendación.
Optimización de consultas

Para finalizar, algunos breves consejos para optimizar consultas:

Cambiar los O R 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 SGB D tiene su manera de verlo) para saber donde 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 más frecuentes

Activar la caché d e base d e datos del S G B D a veces pu ede emp eorar el


rendimiento. Esto depende del volumen de datos al que se acceda más frecuentemente.
Si el v o l u m e n d e d ato s es alto y se actu aliza fr e cu en te men t e , e s t a r e mo s s i e mp r e
escribiendo e n la caché en lugar d e leer d e ella. Así q u e n o rmalmen te es preferible
recurrir a u n siste ma d e c a c h é externo, e n el cu al p o d a m o s controlar q u e se v a n 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. Un a 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.
P o r e j e mp lo , s u p o n g a m o s q u e g e n e r a m o s u n n ú m e r o aleatorio en tre 1 y 1 0 0 y la
consulta se c ach ea si d ich o n ú m e r o es m e n o r q u e 10 , d e esta fo r ma se g uard ará 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é.

Optimizar la paginación

La paginación suele ser una tarea costosa cuando tenemos que mostrar varios números
de página, porque para eso se tiene que calcular el número de filas en la relación, lo que
puede requerir un a lectura completa d e la misma, dependiendo del S G B D . Siempre
será más eficiente mostrar enlaces de anterior y siguiente, recuperando todas las filas
a mostrar y una más, de manera q u e se muestra el enlace de siguiente página, si nos
llega esta fila adicional d esd e la B D . Alternativamen te, p o d e mo s man ten er e n u n a
relación independiente el número de filas.

Otra cosa que puede afectar a las paginaciones, es que cuando estamos en una página
interior s e d e b e n d escartar u n cierto n ú m e r o d e filas, p erten ecien tes a las p ág in as
anteriores, y q u e s o n leídas d el d isco c o n to das las c o l u mn a s q u e ap ar ez c an e n la
consulta. Una forma de evitar esto es realizar un JOIN con una subconsulta que recupere
lo s i d en t i fi cad o r es q u e n e c e s i t a m o s a n t e s d e leer t o d a la i n fo r m a c i ó n . E j e m p l o :
SELECT dato1, dato2, dato3 FROM Foo INNER JOIN( SELECT id FROM Foo ORDER BY
dato1 LIMIT 50,10) AS FooPaginado USING(id)

S-ar putea să vă placă și