Está en la página 1de 7

TÉCNICAS PARA LA OPTIMIZACIÓN

DE BASES DE DATOS
GESTIÓN Y SEGURIDAD DE BASES DE DATOS

Evidencia AA9-4

Diego Fernando Rivera Espinosa


COD. 7170949
TÉCNICAS PARA LA OPTIMIZACIÓN DE
BASES DE DATOS
Crea nuevos índices para agilizar procesos en la base de datos.

Un índice Único será creado automáticamente cuando defines una restricción de


CLAVE PRIMARIA o CLAVE UNICA en las columnas específicas. En todos los
casos, crear un índice Único en la información única, en vez de crear un índice no
único en la misma información, es muy recomendable, ya que ayuda al Optimizador
de Consultas SQL Server a generar el plan de ejecución más eficiente basado en la
información adicional útil provista por el índice.

Optimiza los índices. Tener una buena relación de índices entre tablas es básico
para las búsquedas relacionales funcionen correctamente. Agrega índices a las
tablas y, sobre ellas, utiliza las sentencias de consulta (SELECT, WHERE…).
También resulta recomendable acostumbrarse a verificar periódicamente el registro
de consultas lentas para identificar aquellas que deben ser optimizadas.

No se deben mantener consultas abiertas en el código y realiza las querys justas.


Así, evitamos saturar la memoria de la máquina. Como sucede en cualquier sistema
informático, un proceso abierto afecta al rendimiento del hardware. Eliminando esas
consultas inútiles, liberarás recursos para que se empleen en las consultas útiles
que necesitamos.

No almacenar imágenes en la base de datos. Sólo referencias a la ruta en la que se


encuentran y metadatos para identificarlas. Si mantenemos sólo las referencias
al almacén de imágenes, la base de datos estará en forma para devolverte los
procesos más rápidamente.

No usar nombres complejos en las claves y campos de las tablas. Por ejemplo, en
la tabla Clientes, es mejor utilizar nombre en vez de nombre_cliente para almacenar
el nombre del cliente. Cuanto más sencillos sean los nombres, más rápido se
ejecuta la consulta.

Forzado de INDICES

Es posible que podamos encontrarnos TABLE SCAN en las queries que lancemos,
a pesar de existir INDICES que mejorarían el rendimiento. En estos casos la mejor
opción para forzar el uso de un INDICE es realizar los siguiente, como muestra el
ejemplo:

SELECT * FROM tblTaskProcesses WHERE nextprocess = 1 AND processid IN


(8,32,45)
Esto tarda 3 segundos y al siguiente QUERY tarda menos de un segundo:
SELECT * FROM tblTaskProcesses (INDEX = IX_ProcessID) WHERE nextprocess
= 1 AND processid IN (8,32,45)
Índices filtrados

Característica más poderosa de SQL, proporciona oportunidades para un uso


mucho más eficiente de las búsquedas y tiene un gran potencial.

Un índice filtrado es un índice no agrupado optimizado que nos permite definir filtro
con la cláusula WHERE siempre que creamos el índice. Un índice filtrado bien
diseñado puede mejorar el rendimiento de las consultas, reducir los costos de
mantenimiento de índices, y reducir los costos de almacenamiento de cada índice
en comparación con los índices de tabla completa.

Generamos un índice filtrado, mediante la siguiente instrucción TSQL:

–Creación de un índice filtrado


CREATE NONCLUSTERED INDEX [FilteredIndex] ON [Sales].[Customer]
(
[TerritoryID] ASC
)
WHERE ([TerritoryID]=(2))
ON [PRIMARY]
GO

Ya con el índice creado, vemos los planes de ejecución de 2 consultas, una de ellas
con una condición compatible con el índice filtrado y otra con una condición distinta
y comparando el uso del índice filtrado y de un índice ya existente sobre toda la
tabla, por el mismo campo TerritoryID:

–Consulta con una condición distinta a la del índice filtrado


SELECT CustomerID
FROM sales.Customer
WHERE TerritoryID<>2

–Consulta con la misma condición distinta que el índice filtrado


SELECT CustomerID
FROM sales.Customer
WHERE TerritoryID=2
Herramienta Descripción

Funciones Las funciones integradas muestran estadísticas de instantáneas acerca


integradas de la actividad de SQL Server desde el inicio del servidor; estas
(Transact-SQL) 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 conexión de SQL Server y **@@PACKET_ERRORS** contiene el
número de paquetes de red generados en conexiones de SQL Server.

DBCC (Transact- Las instrucciones DBCC (Comandos de consola de base de datos)


SQL) permiten comprobar las estadísticas de rendimiento y la coherencia
lógica y física de una base de datos.

Asistente para la El Asistente para la optimización de motor de base de datos analiza los
optimización de efectos en el rendimiento de las instrucciones Transact-SQL ejecutadas
motor de base de en las bases de datos que desea optimizar. El Asistente para la
datos (DTA) optimización de motor de base de datos proporciona recomendaciones
para agregar, quitar o modificar índices, vistas indizadas y particiones.

Asistente para Asistente para experimentación con bases de datos (DEA) es una
experimentación solución de pruebas A/B nueva para SQL Server. Ayuda a evaluar una
con bases de versión de destino de Motor de base de datos de SQL Server para una
datos (DEA) carga de trabajo determinada. Al actualizar desde una versión anterior
de SQL Server (a partir de SQL Server 2005 (9.x)) a cualquier versión
más reciente de SQL Server, DEA será capaz de proporcionar métricas
de análisis comparativas.

Registros de El registro de eventos de aplicación de Windows proporciona una


errores 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.
Herramienta Descripción

Eventos Extended Events es un sistema ligero de supervisión de rendimiento


extendidos que usa muy pocos recursos de rendimiento. Los eventos extendidos
proporcionan tres interfaces de usuario gráficas (Asistente para nueva
sesión, Nueva sesión y XE Profiler) para crear, modificar, mostrar y
analizar los datos de la sesión.

Funciones y Las DMV relacionadas con la ejecución permiten comprobar


vistas de información relacionada con la ejecución.
administración
dinámica
relacionadas con
ejecuciones
(Transact-SQL)

Estadísticas de Muestra estadísticas en tiempo real sobre los pasos de ejecución de


consultas consultas. Dado que estos datos están disponibles mientras se ejecuta
dinámicas (LQS) la consulta, las estadísticas de ejecución son extremadamente útiles
para depurar problemas de rendimiento de las consultas.

Supervisar el uso La función principal del Monitor de sistema es hacer un seguimiento del
de uso de los recursos, como el número de solicitudes de página del
recursos(Monitor administrador de búfer activas, que permite supervisar el rendimiento y
de sistema) 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.
Herramienta Descripción

Abrir el Monitor El Monitor de actividad de SQL Server Management Studio es útil para
de actividad obtener vistas ad hoc de la actividad actual y muestra gráficamente
(SQL Server información sobre:
Management
Studio) - Los procesos que se ejecutan en una instancia de SQL Server
- Los procesos bloqueados
- Los bloqueos
- La actividad del usuario

Panel de El panel de rendimiento de SQL Server Management Studio ayuda a


rendimiento identificar rápidamente si hay un cuello de botella de rendimiento
en SQL Server.

Asistente para la El Asistente para la optimización de consultas (QTA) guía a los usuarios
optimización de a través del flujo de trabajo recomendado para mantener la estabilidad
consultas (QTA) del rendimiento durante las actualizaciones a las versiones más
recientes de SQL Server, como se documenta en la sección Mantener
la estabilidad del rendimiento al actualizar a una versión más reciente
de SQL Server de Escenarios de uso del Almacén de consultas.

Almacén de La característica Almacén de consultas ofrece datos detallados sobre el


consultas rendimiento y la elección del plan de consultas. Esta característica
simplifica la solución de problemas de rendimiento al permitirle
encontrar rápidamente las diferencias de rendimiento provocadas por
cambios en los planes de consulta. El Almacén de consultas captura
automáticamente un historial de consultas, planes y estadísticas en
tiempo de ejecución y las conserva para su revisión. Además, separa
los datos por ventanas de tiempo, lo que permite ver patrones de uso
de la base de datos y comprender cuándo se produjeron cambios del
plan de consultas en el servidor.

Seguimiento de Transact-SQL que crean, filtran y definen trazas:


SQL
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)
Herramienta Descripción

SQL Server Microsoft SQL Server Distributed Replay puede usar varios equipos
Distributed para reproducir los datos de seguimiento, simulando una carga de
Replay trabajo crítica.

sp_trace_setfilter SQL Server Profiler realiza un seguimiento de los eventos de procesos


(Transact-SQL) del motor, como el inicio de un lote o una transacción, lo 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.

Procedimientos Los siguientes procedimientos almacenados del sistema de SQL


almacenados del Server suponen una alternativa muy eficaz para realizar muchas
sistema tareas de supervisión:
(Transact-SQL)
sp_who (Transact-SQL):
Notifica información de instantáneas acerca de los usuarios y
procesos actuales de SQL Server, incluida la información sobre la
instrucción que se ejecuta actualmente y si la instrucción está
bloqueada.

sp_lock (Transact-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 .

Marcas de Las marcas de seguimiento muestran información acerca de una


seguimiento actividad específica en el servidor para diagnosticar problemas o
(Transact-SQL) causas de bajo rendimiento (por ejemplo, cadenas de interbloqueos).

También podría gustarte