Data">
Nothing Special   »   [go: up one dir, main page]

Guia Laboratorio (Administracion de La Arquitectura)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

UNIVERSIDAD TÉCNICA NACIONAL

INGENIERÍA EN TECNOLOGÍAS DE INFORMACIÓN


SEDE DE GUANACASTE
• Laboratorio
• Curso: Administración de BD Avanzadas
• Profesor: Juan Pablo Rodriguez Bogantes

Administración de la arquitectura.
Objetivos

• Aplicar los conceptos de administración de la arquitectura física, memoria, transacciones,


bitácoras y gestión de índices en el motor de bases de datos SQL Server para crear bases
de datos que permitan la escalabilidad, disponibilidad y un mejor rendimiento.

Enunciado general
• Instalar y configurar un gestor de bases de datos SQL server con una arquitectura distribuida
y administrar: índices, bitácoras y transacciones.

Recursos requeridos
• PC.
• SGBD SQL Server 2019.
• Base de datos AdventureWorks2019

Parte #1 instalación:
1. Descargar el motor de SQL Server
2. 2019 express edition o developer. https://www.microsoft.com/es-es/sql-server/sql-
server-downloads

3. En la carpeta de archivos de programas cree la siguiente estructura de carpetas:


• SQLServer2019Express.
• Programa.
• Registros.
• Datos.
• Temporales.
• Respaldos.

4. Instale el motor de SQL Server 2019 express edition o developer usando el modo de
autentificación mixto y siguiendo el esquema físico de la estructura de carpetas
creada anteriormente.
5. Documente el proceso de instalación.

Parte #2 Preparación de ambiente:


6. Descargar e restaure la base de datos AdventureWorks2019:
https://docs.microsoft.com/en-us/sql/samples/adventureworks-install-
configure?view=sql-server-ver15&tabs=ssms

Parte #3 administración de la memoria:


7. Configure la memoria a 2 GB.

8. Ejecute el siguiente script sobre la base de datos AdventureWorks2019: SELECT * FROM


sys.dm_exec_query_stats

Nota: recuerde que SQL server utiliza la memoria para almacenar entre otras cosas
almacenar los planes de ejecución (execution plan), podemos observar que cada uno de
los datos retornados representa un plan de ejecución ya creado.

9. Ejecute el siguiente script DBCC FREEPROCCACHE sobre la base de datos AdventureWorks2019,


este comando permite eliminar los planes de ejecución.

Nota: cabe recalcar que no es recomendable ejecutar dicho comando en producción ya


que afectaría el rendimiento al tener que volver a mapear todas las rutas de los datos,
crear nuevamente los planes de ejecución y cargar los datos en chache. Se recomienda
utilizarlo al poner una base de datos en producción para su primer uso (Esto eliminaría los
posibles datos y planes de ejecución creado para pruebas).

10. Ejecute nuevamente el script de paso 8 sobre la base de datos AdventureWorks2019,


notaremos que ya no tenemos resultados, pera a la vez esta sentencia creara un nuevo
plan de ejecución, por lo que en el futuro ya existirá un plan de para dicha sentencia.

11. Ejecute los siguientes scripts sobre la base de datos AdventureWorks2019:

a. SELECT * FROM [HumanResources].[Department]

b. SELECT * FROM [HumanResources].Employee

c. SELECT * FROM sys.dm_exec_query_stats

Nota: Al ejecutar el último de los scripts notaremos que existen nuevos planes de ejecución
para las nuevas sentencias realizadas.

12. Ejecute el siguiente script sobre la base de datos AdventureWorks2019:

a. SELECT QS.execution_count, ST.text, QS.creation_time, QS.last_elapsed_time FROM


sys.dm_exec_query_stats as QS CROSS APPLY sys.dm_exec_sql_text (QS.sql_handle) as ST
OPTION (RECOMPILE)

Nota: Al ejecutar este scritp notaremos que existen estadísticas de los plane de ejecución
creados y de cuantas veces se ha ejecutado cada uno. Es importante saber que se creara
un nuevo plan por cada nueva sentencia ejecutada aun cuando la diferencia sea un
espacio en blanco.
13. Active la opción de incluir el plan de ejecución actual:

14. Ejecute nuevamente el siguiente script sobre la base de datos AdventureWorks2019:

a. SELECT QS.execution_count, ST.text, QS.creation_time, QS.last_elapsed_time FROM


sys.dm_exec_query_stats as QS CROSS APPLY sys.dm_exec_sql_text (QS.sql_handle) as ST
OPTION (RECOMPILE)

a. Veremos una nueva pestaña llamada Execution plan:

b. En esta pestaña veremos un diagrama de la secuencia de ejecución para devolver los


resultados de la consulta (Plan de ejecución), este diagrama se lee de derecha a
izquierda por lo que podemos ver el paso a paso y el consumo de recursos y las tablas
consultadas:

Nota: Cada tabla consultada nos detalla el tiempo y el costo de recursos. Al identificar las
operaciones con mayor costo (tiempo y recursos) podemos modificar el script administrar
índices y elaborar vistas para optimizar el rendimiento de la consulta. Para profundizar sobre
los objetos mostrados en el diagrama puede consultar la guía oficial en el siguiente enlace
https://docs.microsoft.com/en-us/sql/relational-databases/showplan-logical-and-
physical-operators-reference?view=sql-server-ver15

Parte #4 Administración de transacciones:


15. Ejecute los siguientes scripts transacción_1 y transacción_2 sobre la base de datos
AdventureWorks2019, interprete la sintaxis de ambas transacciones y seleccione según su
criterio la opción que elegiría justificando la respuesta.

Parte #5 Administración de bitácoras:


16. Cree una tabla de bitácora para las tablas Person.BusinessEntity y Person.Person. Recuerde
los datos que se deben almacenar en la bitácora y los Triggers para realizar dichos registros.

17. Documente el proceso (Creación de tablas, Triggers y tuplas).

Parte #6 Administración índices:


18. En la base de datos AdventureWorks2019 cree una nueva tabla llamada EMPLOYEE con los
campos IDEmployee INT, EmployeeName varchar(50), EmployeeLastName varchar(50),
EmployeeEmail varchar(50).

19. Agregue datos a la nueva tabla usando la tabla Person mediante el siguiente script: INSERT
INTO EMPLOYEE SELECT [BusinessEntityID],[FirstName], [LastName] FROM
[AdventureWorks2019].[Person].[Person]

Nota: Es posible que el script anterior genere un error, identifique la causa del error y
proporcione una solución.

20. Ejecute los siguientes scripts sobre la base de datos AdventureWorks2019 y observe la
pestaña del execution plan para ambas consultas:
o SELECT EMPLOYEE.EmployeeName,
EMPLOYEE.EmployeeLastName from EMPLOYEE where
IDEmployee=100

o SELECT EMPLOYEE.EmployeeName,
EMPLOYEE.EmployeeLastName from EMPLOYEE where
EmployeeName='Marcelo'

Nota: Observa el diagrama del plan de


ejecución, además como podemos observar en
la imagen para ejecutar dichas consultas se
debieron realizar un gran número de lecturas.

21. Crear un índice agrupado con el siguiente script:


CREATE CLUSTERED INDEX CL_EmployeeID ON
EMPLOYEE(IDEmployee).

o ¿Es posible tener más de un índice


agrupado?

o ¿Qué pasaría al crear el clúster agrupado si


la tabla tiene una llave primaria?
22. Crear un índice no agrupado con el siguiente script: CREATE NONCLUSTERED INDEX
NL_EmployeeName ON EMPLOYEE (EmployeeName).

o ¿Es posible tener más de un índice no agrupado?

o ¿Qué pasaría al crear el clúster no agrupado si la tabla tiene una llave primaria?

Nota: Aunque se pueden crear índices no agrupados para cualquier columna esto puede
afectar el rendimiento de la BD por lo que se recomienda realizarlo solo en los campos
usados para generar reportes u ordenamientos.

23. Ejecute nuevamente los scripts del paso 19 y observe la pestaña del execution plan para
ambas consultas.

a. ¿Qué diferencia notaste en el diagrama del plan de ejecución?

b. ¿Existe alguna diferencia en la cantidad de lecturas?

c. Documenta el resultado.

24. Elimine los índices creados anteriormente con los siguientes scripts:
o DROP INDEX EMPLOYEE.CL_EmployeeID

o DROP INDEX EMPLOYEE.NL_EmployeeName

También podría gustarte