Está en la página 1de 49

Base de Datos

Unidad:

Administración, rendimiento y
otros

Docente: Eduardo Reyes Rodriguez


Logro
Al término de la unidad, el estudiante comprende sobre la
arquitectura y administración de un motor de base de datos
Importancia
Para usar el SQL Server en una empresa se requiere
conocimiento de tareas administrativas:
• Administración de usuarios
• Creación un backup de data en caso de un desastre y
recuperación de los datos del backup al disco
• Conocer las tareas administrativas que requiere el SQL Server
para que el rendimiento no se degrade
Adicionalmente debe conocer como tratar datos que se generan
en altos volúmenes y a mucha velocidad. Debe entender como el
BigData puede mejorar la toma de decisiones de una empresa
Contenido general

• Vistas
• Restricciones
• Índices
• Rendimiento de consultas
• Jobs – automatización de tareas
• Planes de mantenimiento
Vistas
Vistas

Consulta guardada con un nombre, hecha de una o varias


tablas. Para usarlo se usa un select como si fuera una tabla.
Vistas

Para borrar una vista:

DROP VIEW vista_name;


Restricciones
Reglas de Negocio en el SGBD

Las reglas de negocio se implementan como restricciones en el


SQL Server:

NOT NULL – Evita valores NULL


UNIQUE – Todos los valores de una columna deben ser
diferentes
PRIMARY KEY – Combinación de NOT NULL y UNIQUE. Identifica
de manera única cada fila en una tabla
FOREIGN KEY – Asegura que el valor de una o varias columnas
correspondan a datos válidos en la PK de otra tabla usada como
referencia
CHECK – Limita los valores de una columna de acuerdo a una
condición
DEFAULT – Llena un valor por defecto a una columna al insertar
filas y no especificar su valor
INDEX - Se utiliza para actualizar, borrar y mostrar datos de la
base de datos más rápidamente. La creación no se afecta por
no usar WHERE
Restricciones en SQL Server

Ejemplos:
Restricciones en SQL Server

Ejemplos:
Índices
Índices

Objeto que indica como ordenar una tabla por determinados


atributos. Permite reducir el tiempo de consultas,
modificaciones y eliminaciones.

Para borrar un índice use:

DROP INDEX index_name;


Índices - Tipos

1. Agrupado (clustered): Sólo puede existir uno por tabla.


Normalmente es más rápido que el resto de índices. El
orden físico de las filas coincide con el orden que
proporciona las claves de este tipo de índices. Los índices
agrupados no son adecuados para los siguientes casos:
• Columnas sometidas a cambios frecuentes.
• Claves de varias columnas de gran tamaño.
Índices - Tipos

2. No Agrupado (Nonclustered): Un ejemplo fácil de entender


de este tipo de índice es asemejarlo con los índices que
vienen al final de los libros. Consideraciones:
• No se puede crear un índice si existen filas con NULL.
• Las tablas con gran volumen de datos, se pueden
beneficiar de muchos índices no agrupados.
• Los índices deben tener la menor cantidad de columnas
posible.
Índices - Tipos

3. Único (Unique): Un índice único garantiza que la clave de


índice, valores del campo sobre el que se crea el índice, no
contenga valores duplicados.
4. Índice con columnas incluidas: Índice no agrupado que se
extiende para incluir columnas sin clave además de las
columnas de clave.
5. Texto: Tipo especial de índice funcional basado en símbolos
(token) que crea y mantiene el servicio del Motor de texto
completo de Microsoft para SQL Server (MSFTESQL).
Proporciona la compatibilidad adecuada para búsquedas de
texto complejas en datos de cadenas de caracteres, como
con el operador LIKE.
6. XML: Representación dividida y permanente de los objetos
XML binarios grandes (BLOB) de la columna de tipo de datos
xml.
Rendimiento de consultas
Índice vs no Índice

Ejemplo consulta sin índice vs con índice:


Sin índice

Con índice
Consejos para un buen rendimiento

• Elija el tipo de datos apropiado: Trate de usar los tipos de


datos buscando la eficiencia, priorice los numéricos, luego
los de texto y finalmente los de fecha.
• Evitar nchar y nvarchar: Ambos tipos de datos toman el
doble de memoria que char y varchar.
• Evitar * en la instrucción SELECT: SQL Server hace el trabajo
adicional de convertir el * en el nombre de las columnas
antes de la ejecución de la consulta.
• Use EXISTS en lugar de IN: EXISTS es más rápido que IN.
• Evitar HAVING: Ya que actúa como un filtro sobre las filas
seleccionadas. Sólo úselo si desea filtrar el resultado de una
agregación.
• Cree índices agrupados y no agrupados: Crear índices ayuda
a acceder a los datos rápidamente, pero tenga cuidado, pues
muchos índices ralentizarán las operaciones INSERT,
UPDATE, DELETE.
Consejos para un buen rendimiento

• Mantenga pequeño el índice agrupado: Mantenga el índice


agrupado tan pequeño como sea posible, ya que los campos
utilizados en el índice agrupado también pueden usarse en
un índice no agrupado y los datos en la base de datos
también se almacenan en el orden del índice agrupado.
• Evite cursores: Ya que el cursor es muy lento en
rendimiento.
• Use variables tipo tabla en lugar de tablas temporales: Ya
que la tablas temporales reside en la base de datos tempdb
y accederlas demora más.
• Use UNION ALL en lugar de UNION: Ya que es más rápido
que UNION por no clasifica el conjunto de resultados.
• Utilice esquema.objeto en vez de solamente objeto: Ya que
ayuda a que el SQL Server no busque el esquema de cada
objeto. Como resultado, el rendimiento es el mejor.
• Cree transacciones pequeñas: Algunas veces las
transacciones largas pueden resultar en bloqueos de tablas.
Consejos para un buen rendimiento

• Evite contar innecesariamente: El SQL Server devuelve las


filas afectadas por cada instrucción ejecutada por defecto.
Use SET NOCOUNT ON.
• Utilice TRY-Catch: A veces, un error en una transacción en
ejecución puede causar un bloqueo si no maneja el error
con TRY-CATCH.
• Use procedimientos almacenados para datos de uso
frecuente y consultas más complejas: Debido a que tendrían
calculados los planes de ejecución previamente.
• Evite el prefijo "sp_" para procedimientos almacenados
definidos por el usuario: Los procedimientos almacenados
del sistema comienza con "sp_“, pero como el SQL Server
primero busca procedimientos definidos por el usuario,
demanda mucho tiempo buscarlos entre los que son del
sistema.
Jobs – automatización de
tareas
Introducción

el Agente de SQL Server que es un servicio que le permite


automatizar algunas tareas administrativas (JOBS). El Agente
SQL Server ejecuta trabajos, supervisa SQL Server y procesa
alertas. El servicio Agente SQL Server debe estar en ejecución
para poder ejecutar automáticamente los trabajos
administrativos locales o multiservidor. Si le da click derecho a
Agente de SQL Server, podrá configurarlo
¿En que me ayuda Tareas?

Puede utilizar los trabajos del Agente SQL Server para


automatizar tareas administrativas rutinarias y ejecutarlas
periódicamente, lo que permite que la administración sea más
eficaz.
¿En que me ayuda Tareas?

Puede crear pasos para cada Tarea


¿En que me ayuda Tareas?

Puede hacer una programación de la ejecución de las Tareas


¿En que me ayuda Tareas?

Desde el monitor de actividades de las Tareas, puede probar las


ya creadas
¿En que me ayuda Tareas?

Las respuestas de trabajos especifican acciones que realizará el


servicio del Agente SQL Server tras completar un trabajo. Estas
respuestas permiten a los administradores de las bases de
datos saber cuándo se completan los trabajos y con qué
frecuencia se ejecutan. Respuestas más comunes:
• Notificar al operador mediante correo electrónico,
localizador electrónico o un mensaje de NET SEND
• Escribir un mensaje de evento en el registro de aplicación de
Microsoft Windows
• Eliminar automáticamente el trabajo
Planes de Mantenimiento
Introducción

Las bases de datos de SQL Server requieren un mantenimiento


regular y esto puede ser un proceso lento. El SQL Server tiene
una herramienta integrada que facilita la creación y ejecución
de tareas de mantenimiento: el Asistente del plan de
mantenimiento y puede realizar las siguientes tareas:

• Copia de respaldo de Base de datos y/o registro de


transacciones (Backup)
• Reconstruir índices
• Reorganizar índices
• Actualizar estadísticas de los índices
• Reducir páginas vacías en los datos y/o los archivos de
registro
• Realizar comprobaciones de consistencia
• Tareas de limpieza
PM: Backup de base de datos

La estrategia de copias de respaldo dependen de las


necesidades y políticas de cada empresa, que debe definir cada
cuanto debe obtener una copia.

Asumiremos que necesitamos copias semanales completas de


la base de datos TestDB. Haremos estos pasos:
1. Seleccione el Asistente. En la ventana presione siguiente.
PM: Backup de base de datos

2. Poner nombre a la tarea. Presionar Cambiar Horario


PM: Backup de base de datos

3. Configurar Horario. En este caso serán los domingos


semanalmente a la 1am, sin indicar fecha de fin. Presionar
Aceptar y en la ventana anterior presionamos Siguiente
PM: Backup de base de datos

4. Elija Copia de seguridad completa. Presione Siguiente. En la


ventana que salga presione Siguiente porque solo hay una
tarea y no se necesita ordenar.
PM: Backup de base de datos

5. En la ventana, en la pestaña general elegimos la base de


datos TestDB. En la pestaña destino elegimos la ubicación
del archivo
PM: Backup de base de datos

6. En la pestaña opciones dependiendo de la versión de SQL


hay opciones diferentes como revisar la integridad del
backup. Al terminar presione Siguiente
PM: Backup de base de datos

7. En la ventana mostrada se pueden elegir opciones de


informes. Presione siguiente. En la última ventana presione
Finalizar
PM: Backup de base de datos

8. Aparecerá una ventana en la que si los indicadores están en


verde, entonces todo se creo correctamente
PM: Reconstrucción de Índices

Tras eliminar, actualizar e insertar datos los índices se


fragmentan y pierden velocidad. Una manera muy efectiva pero
lenta es la reconstrucción de índices, que implica borrar los
índices y volverlos a crear. Al crearlos incluso podemos definir
el factor de relleno, que indica cuanto espacio libre por página
de datos debe dejarse para la inserción de nuevas filas.

Los datos se guardan en páginas y cuando se llenan se deben


buscar otras páginas para ingresar esos datos. Lo ideal para
tener un buen tiempo de respuesta es que las páginas tengan
espacio suficiente para insertar datos sin tener que conseguir
nuevas páginas. Un índice debe reconstruirse si la
fragmentación supera el 30%

Finalmente la reconstrucción de índice también actualiza el


cálculo de estadísticas automáticamente, esto es importante
porque esos valores le permiten saber al SQL Server como
están distribuidos los valores y por tanto elegirá buenos planes
de ejecución.
PM: Reconstrucción de Índices

Haremos estos pasos:


1. Seleccione el Asistente. En la ventana presione siguiente.
PM: Reconstrucción de Índices

2. Poner nombre a la tarea. Presionar Cambiar Horario


PM: Reconstrucción de Índices

3. Configurar Horario. En este caso serán los domingos


semanalmente a la 1:30am, sin indicar fecha de fin.
Presionar Aceptar y en la ventana anterior presionamos
Siguiente
PM: Reconstrucción de Índices

4. Elija Copia de seguridad completa. Presione Siguiente. En la


ventana que salga presione Siguiente porque solo hay una
tarea y no se necesita ordenar.
PM: Reconstrucción de Índices

5. En la ventana, en la pestaña general podemos elegir una


base de datos específica, pero elegiremos todas. Se puede
elegir el porcentaje de espacio en blanco por página o dejar
el tamaño por defecto.
PM: Reconstrucción de Índices

Dependiendo de la versión del SQL Server hay diferentes


opciones. Cuando termine presione Siguiente.
PM: Reconstrucción de Índices

6. En la ventana mostrada se pueden elegir opciones de


informes. Presione siguiente. En la última ventana presione
Finalizar
PM: Reconstrucción de Índices

7. Aparecerá una ventana en la que si los indicadores están en


verde, entonces todo se hizo correctamente
Conclusiones
• El plan de mantenimiento nos permite crear tareas
fácilmente para mantener nuestro SGBD óptimo
• Debe tomar en cuenta las recomendaciones de rendimiento
al diseñar un store procedure y así evitar bloqueos
• Los índices agrupados son los más veloces por ordenar la
tabla físicamente según este índice
• Las PK no serán índices agrupados si es que hay otros
atributos por los que se busque más frecuentemente
• Las restricciones ayudan a evitar el ingreso de datos inválidos
Gracias
Docente: Eduardo Reyes Rodriguez

También podría gustarte