Está en la página 1de 12

ESPECIALIZACION EN GESTION Y SEGURIDAD DE BASES DE DATOS

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

INSTRUCTOR
HUGO ANDRES TRUJILLO MONTEALEGRE

APRENDIZ
JOHANNA ANDREA CANIZALES SANCHEZ

BOGOTA D.C.
CENTRO DE SERVICIOS FINANCIEROS
OCTUBRE 2021
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 Enumera las herramientas de
y optimización del supervisión y optimización de SQL
rendimiento Server.
Proporciona información acerca de
Establecer una línea base del cómo establecer una línea base de
rendimiento 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 Describe cómo usar SQL Server y las
y rendimiento del herramientas de supervisión de
servidor 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

Asistente para la optimización de


Marcas de seguimiento (Transact- motor de base de datos
SQL)
generados en conexiones de SQL motor de base de datos analiza los
Server. efectos en el rendimiento de las
Las marcas de seguimiento muestran instrucciones Transact-SQL
información acerca de una actividad ejecutadas en las bases de datos que
específica en el servidor para desea optimizar. El Asistente para
diagnosticar problemas o causas de la optimización de motor de base de
bajo rendimiento (por ejemplo, datos proporciona recomendaciones
cadenas de interbloqueos). para agregar, quitar o modificar
El Asistente para la optimización de í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/

También podría gustarte