Sunteți pe pagina 1din 12

AA9-Ev4-TÉCNICAS PARA LA OPTIMIZACIÓN DE BASES DE DATOS

Juan Esteban Palacio Gómez


Santiago Alberto Sierra Oliveros

Servicio Nacional de Aprendizaje SENA.

Especialización Tecnológica Gestión y Seguridad de Base de Datos.

Agosto 2019
TÉCNICAS PARA LA OPTIMIZACIÓN DE UNA BASE DE DATOS

Las técnicas para la optimización de las bases de datos están dadas bajo varios
parámetros, primero hay que realizar una supervisión con el fin de evaluar el
rendimiento de un servidor para detectar y aislar los procesos que causan
problemas y por ende realizar el respectivo seguimiento de las tendencias de
rendimiento.
Hay que tener presente que la evaluación continua del rendimiento de la base de
datos ayuda a minimizar los tiempos de respuesta y a maximizar el rendimiento para
que este sea óptimo. Es necesario analizar a fondo los requisitos de las
aplicaciones, comprender la estructura lógica y física de los datos y evaluar el uso
de la base de datos para la toma de decisiones en las organizaciones.
El SGBD SQL Server y SO Microsoft Windows, nos facilitan herramientas que
supervisan y nos muestran las condiciones actuales de la base de datos y realizan
un seguimiento de ese rendimiento a medida que este cambia. Hay que conocer el
modo de supervisar SQL Server, ya que de esta forma nos puede ayudar en varios
aspectos como son: Determinar si el rendimiento se puede mejorar; evaluar la
actividad de los usuarios y solucionar problemas, depurar componentes de
aplicaciones como procedimientos almacenados, entre otros.
Existen muchas tareas de supervisión y optimización del rendimiento, entre ellas
podemos detallar las siguientes:
TAREA DESCRIPCIÓN DE LA TAREA
Supervisar los componentes de SQL Proporciona los pasos necesarios para
Server supervisar eficazmente cualquier
componente de SQL Server.
Herramientas de supervisión y Enumera las herramientas de
optimización del rendimiento supervisión y optimización de SQL
Server.
Establecer una línea base del Proporciona información acerca de
rendimiento cómo establecer una línea base de
rendimiento.
Aislar problemas de rendimiento Describe cómo aislar problemas de
rendimiento de base de datos.
Identificar los cuellos de botella Describe cómo supervisar y seguir el
rendimiento del servidor para
identificar cuellos de botella.
Supervisión de la actividad y Describe cómo usar SQL Server y las
rendimiento del servidor herramientas de supervisión de
rendimiento y actividad de Windows.
Mostrar y guardar planes de ejecución Describe cómo mostrar y guardar
planes de ejecución en un archivo de
formato XML.

De acuerdo a todo lo planteado anteriormente, es claro que la supervisión es


importante, ya que SQL Server ofrece un servicio en un entorno dinámico los datos
de la aplicación cambian, el tipo de acceso que requieren los usuarios cambia, la
forma de conexión de los usuarios cambia, también pueden cambiar los tipos de
aplicaciones que tienen acceso a SQL Server, pero SQL Server administra
automáticamente los recursos del sistema como la memoria y el espacio en disco
para minimizar la necesidad de optimizar manualmente el sistema. La supervisión
permite a los administradores identificar las tendencias de funcionamiento para
determinar si es necesario realizar cambios. Por todo esto, para supervisar cualquier
componente de SQL Server en forma eficaz es necesario realizar los siguientes
pasos:
1) Definir los objetivos de supervisión.
2) Seleccionar las herramientas apropiadas.
3) Identificar los componentes que se desean supervisar.
4) Seleccionar métricas para dichos componentes.
5) Supervisar el servidor.
6) Analizar los datos.

HERRAMIENTAS DE SUPERVISIÓN Y OPTIMIZACIÓN DEL RENDIMIENTO

 sp_trace_setfilter (Transact-SQL): El SQL Server Profiler realiza un


seguimiento de los eventos de procesos del motor, como el inicio de un lote
o una transacción, que permite supervisar la actividad del servidor y de la
base de datos (por ejemplo, interbloqueos, errores irrecuperables o actividad
de inicio de sesión). Puede capturar datos de SQL Server Profiler en un
archivo o una tabla de SQL Server para su análisis posterior y también puede
reproducir paso a paso los eventos capturados en SQL Server para ver qué
sucedió exactamente.
 SQL Server Distributed Replay: Distributed Replay de Microsoft SQL
Server puede usar varios equipos para reproducir los datos de seguimiento,
simulando una carga de trabajo crítica.
 Supervisar el uso de recursos (Monitor de sistema) : La función principal
del Monitor de sistema es hacer un seguimiento del uso de los recursos,
como el número de solicitudes de página del administrador de búfer activas,
que permite supervisar el rendimiento y la actividad del servidor mediante el
uso de objetos y contadores predefinidos o contadores definidos por el
usuario para supervisar eventos. El Monitor de sistema (Monitor de
rendimiento en Microsoft Windows NT 4.0) recopila contadores y porcentajes
en lugar de datos acerca de los eventos (por ejemplo, uso de la memoria,
número de transacciones activas, número de bloqueos bloqueados o
actividad de la CPU). Puede establecer umbrales en contadores específicos
para generar alertas que notifiquen a los operadores.
El Monitor de sistema funciona en los sistemas operativos Microsoft Windows
Server y Windows. Puede supervisar (remota o localmente) una instancia de
SQL Server en Windows NT 4.0 o posterior.
La diferencia clave entre el SQL Server Profiler y el Monitor de sistema es
que el SQL Server Profiler supervisa los eventos del motor de base de datos,
mientras que el Monitor de sistema supervisa el uso de los recursos asociado
con los procesos del servidor.
 Abrir el Monitor de actividad (SQL Server Management Studio): El
Monitor de actividad de SQL Server Management Studio muestra información
gráfica acerca de:
- Los procesos que se ejecutan en una instancia de SQL
Server.
- Los procesos bloqueados.
- Bloqueos.
- La actividad de los usuarios.
Esto resulta útil para vistas ad hoc de la actividad actual.
 SQL seguimiento: Procedimientos almacenados de Transact-SQL que
crean, filtran y definen trazas:
- sp_trace_create (Transact-SQL)
- sp_trace_generateevent (Transact-SQL)
- sp_trace_setevent (Transact-SQL)
- sp_trace_setfilter (Transact-SQL)
- sp_trace_setstatus (Transact-SQL)

 Registro de errores: El registro de eventos de aplicación de Windows


proporciona una imagen global de los eventos que ocurren en todos los
sistemas operativos Windows Server y Windows, así como de los eventos de
SQL Server, el Agente SQL Server y la búsqueda de texto completo.
Contiene información acerca de los eventos de SQL Server que no está
disponible en ningún otro lugar. Puede utilizar la información del registro de
errores para solucionar problemas relacionados con SQL Server.
 Procedimientos almacenados del sistema Transact-SQL: Los siguientes
procedimientos almacenados del sistema de SQL Server suponen una
alternativa muy eficaz para realizar muchas tareas de supervisión:

PROCEDIMIENTO DESCRIPCIÓN
sp_who (Transac-SQL) Notifica información instantánea a
cerca de los usuarios y procesos
actuales de SQL Server, incluida la
información sobre la instrucción que
se ajecuta o si esta esta bloqueada
sp_lock (Transac-SQL) Proporciona información de
instantánea acerca de bloqueos,
incluidos los identificadores de
objeto y de índice, el tipo de
bloqueo y el tipo o recurso al que se
aplica el bloqueo.
sp_spaceused (Transact-SQL) Muestra una estimación de la
cantidad actual de espacio en disco
que utiliza una tabla (o toda la base
de datos).
sp_monitor (Transact-SQL) Muestra estadísticas que incluyen el
uso de la CPU, el uso de E/S y el
tiempo de inactividad desde la
última vez que se ejecutó
sp_monitor.
DBCC (Transact-SQL) Las instrucciones DBCC
(Comandos de consola de base de
datos) permiten comprobar las
estadísticas de rendimiento y la
coherencia lógica y física de una
base de datos.
Funciones integradas (Transact- Las funciones integradas muestran
SQL) estadísticas de instantáneas acerca
de la actividad de SQL Server
desde el inicio del servidor; estas
estadísticas se almacenan en
contadores de SQL Server
predefinidos. Por ejemplo,
@@CPU_BUSY contiene el tiempo
que la CPU ha estado ejecutando
código de SQL Server,
@@CONNECTIONS contiene el
número de conexiones o intentos de
conexiones de SQL Server y
@@PACKET_ERRORS contiene el
número de paquetes de red
generados en conexiones de SQL
Server.
Marcas de seguimiento (Transact- Las marcas de seguimiento
SQL) muestran información acerca de
una actividad específica en el
servidor para diagnosticar
problemas o causas de bajo
rendimiento (por ejemplo, cadenas
de interbloqueos).
Asistente para la optimización de El Asistente para la optimización de
motor de base de datos motor de base de datos analiza los
efectos en el rendimiento de las
instrucciones Transact-SQL
ejecutadas en las bases de datos
que desea optimizar. El Asistente
para la optimización de motor de
base de datos proporciona
recomendaciones para agregar,
quitar o modificar índices, vistas
indizadas y particiones.

ESTABLECER UNA LÍNEA BASE DEL RENDIMIENTO

Para determinar si el sistema SQL Server funciona de forma óptima, se deben tomar
medidas del rendimiento a intervalos regulares, incluso cuando no existan
problemas, para establecer una línea base del rendimiento del servidor, comparar
cada conjunto de medidas nuevo con las medidas tomadas anteriormente.
Las áreas siguientes afectan al rendimiento de SQL Server:

 Recursos del sistema (hardware)


 Arquitectura de red
 Sistema operativo
 Aplicaciones de bases de datos
 Aplicaciones cliente
 Como mínimo, utilice las medidas de línea base para determinar:
 Las horas con el máximo y el mínimo nivel de funcionamiento.
 Tiempos de respuesta de comandos de procesamiento por lotes o consultas
de producción.
 Tiempos de finalización de operaciones de copias de seguridad y
restauración de bases de datos
Cuando se haya establecido la línea base para el rendimiento del servidor, se
compara las estadísticas de la línea base con el rendimiento actual del servidor.
Unas cifras demasiado elevadas o demasiado reducidas con respecto a la línea
base indican que hay que realizar una investigación más detallada. Pueden indicar
áreas que hay que optimizar o volver a configurar. Por ejemplo, si aumenta el tiempo
necesario para ejecutar un conjunto de consultas, examine las consultas para
determinar si puede volver a escribirlas o si es necesario agregar estadísticas de
columnas u otros índices.

AISLAR PROBLEMAS DE RENDIMIENTO

A menudo suele ser más efectivo utilizar conjuntamente varias herramientas de


Microsoft SQL Server o Microsoft Windows para aislar los problemas de rendimiento
de una base de datos que usar solo una herramienta cada vez. Por ejemplo, la
característica Plan de ejecución gráfico, denominada también plan de presentación,
le ayuda a reconocer los interbloqueos en una sola consulta. Sin embargo, puede
reconocer más fácilmente otros problemas de rendimiento si utiliza conjuntamente
las características de supervisión de SQL Server y Windows.
El SQL Server Profiler puede utilizarse para supervisar y solucionar problemas de
Transact-SQL o problemas relacionados con las aplicaciones. Asimismo, puede
utilizar el Monitor de sistema para supervisar problemas relativos al hardware y otros
problemas relacionados con el sistema. Puede supervisar las siguientes áreas para
solucionar problemas:

 Procedimientos almacenados de SQL Server o lotes de instrucciones


Transact-SQL enviadas por aplicaciones de usuarios.
 Actividad de los usuarios, como bloqueos o interbloqueos.
 Actividad del hardware, como el uso de los discos.
 Algunos problemas posibles son:
 Errores de programación de aplicaciones debidos a instrucciones Transact-
SQL escritas incorrectamente.
 Errores de hardware, como los relativos a discos o a la red.
 Bloqueo excesivo debido a un diseño incorrecto de la base de datos.
SOLUCIONAR PROBLEMAS COMUNES DE RENDIMIENTO

Igual de importante es la correcta selección del problema de rendimiento que desea


que cada herramienta supervise u optimice, la herramienta y la utilidad dependen
del tipo de problema de rendimiento que se requiera resolver.
A continuación, se describen diversas herramientas de supervisión y optimización y
los problemas que ayudan a solucionar.

 Identificar los cuellos de botella: El acceso simultáneo a recursos


compartidos causa cuellos de botella. En general, los cuellos de botella están
presentes en todos los sistemas de software y son inevitables. Sin embargo,
la demanda excesiva de recursos compartidos causa un tiempo de respuesta
largo, y debe identificarse y corregirse. Entre las causas de estos cuellos de
botella se incluyen:
 Recursos insuficientes que requieren componentes adicionales o
actualizados.
 Recursos del mismo tipo que no distribuyen de forma equilibrada las cargas
de trabajo, por ejemplo, cuando un recurso monopoliza un disco.
 Recursos que funcionan incorrectamente.
 Recursos mal configurados.
 Analizar los cuellos de botella: La duración excesiva de varios eventos es
un indicador de cuello de botella que puede corregirse. Por ejemplo:
 Otros componentes pueden evitar que la carga alcance este componente, lo
que aumenta el tiempo que se tarda en completar la carga.
 Las solicitudes de cliente pueden tardar más tiempo debido a una congestión
de la red.
A continuación, se indican cinco áreas clave que hay que supervisar para realizar
un seguimiento del rendimiento del servidor e identificar cuellos de botella.

Posible área del cuello de Efectos en el servidor


botella
Uso de la memoria Si no se asignó o no hay disponible suficiente
memoria para Microsoft SQL Server, el
rendimiento disminuirá. Los datos se deben leer en
el disco, y no directamente en la caché de datos.
Los sistemas operativos Microsoft Windows
realizan una paginación excesiva intercambiando
datos con el disco cuando son necesarias las
páginas.
Uso de la CPU Un uso excesivo continuo de la CPU puede indicar
que las consultas de Transact-SQL deben
optimizarse o que es necesaria una actualización
de la CPU.
Entrada/Salida de disco Las consultas de Transact-SQL se pueden
optimizar para reducir la E/S innecesaria; por
ejemplo, mediante el uso de índices.
Conexiones de Usuario Puede haber demasiados usuarios obteniendo
acceso al servidor de forma simultánea, lo que
disminuye el rendimiento
Bloqueos de cierre Las aplicaciones diseñadas incorrectamente
pueden causar simultaneidad de obstáculos y
bloqueos, lo que genera tiempos de respuesta más
largos y un menor rendimiento de las
transacciones.

OPTIMIZACIÓN DE BASE DE DATOS CON SQL SERVER

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, se pueden 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 DEL ASISTENTE PARA LA OPTIMIZACIÓN DE


BASE DE DATOS (DTA)

El Asistente para la optimización de motor de base de datos de Microsoft (DTA)


analiza las bases de datos y hace recomendaciones que se pueden 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, se pueden 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.
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.

CACHEAR LAS CONSULTAS EN LA BASE DE DATOS

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é.
REFERENCIAS

Oracle Virtual BOX. VirtualBox. Obtenido de VirtualBox: https://www.virtualbox.org/


sena
Configuración de sistemas manejadores de base de datos SENA
https://www.dataprix.com/553-cache-consultas-mysq
https://www.hostinet.com/formacion/bases-de-datos/como-optimizar-base-datos-
mysql/

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