Qué son las DMV’s?

Las Dynamic Management Views o DMV’s (en español Vistas Dinámicas para la Administración) son estructuras que nos permiten accesar la información en memoria que SQL Server recopila y almacena constantemente sobre su operación interna. Dicha información es utilizada para diagnosticar o identificar las causas de problemas, optimizar el desempeño del motor y para monitorear su operación. La información recopilada puede estar relacionada con métricas sobre la efectividad de los índices (indexes), la ejecución de las consultas o queries, el estado del sistema operativo, la seguridad, replicación, espejeo o replicación de base de datos y muchas otras áreas más.  Cabe mencionar que la información arrojada por las vistas dinámicas es un acumulado desde el último arranque del motor, por lo tanto, si deseas obtener datos sobre una operación en específico, tendrás que recopilar los valores de las vistas un instante antes de activar la operación, y un instante después, y luego calcular la diferencia lo cual arrojará el efecto neto.

Y qué problemas podemos diagnosticar utilizando DMVs?

Bueno pues consultas que corren muy lento, problemas de bloqueo de recursos, índices que no se usan o faltantes, planes de ejecución que no se re-utilizan, etc.

En cuanto a la optmización del desempeño se refiere, las Dynamic Management Views o DMVs pueden ayudarnos a identificar áreas que pudieran mejorarse, como por ejemplo, problemas de fragmentación, la falta de indices, y otros aspectos de esa naturaleza.

El monitoreo tiene que ver con la identificación de tareas o procesos que están siendo ejectutados en este momento. Es decir, dichas vistas nos ayudan a contestarnos la pregunta, qué esta siendo ejecutado por el motor ahorita mismo? En específico, que líneas de código, y existirán problemas de bloqueo?

Las vistas se clasifican de acuerdo a el area de operación del motor con la que se relacionan. Por ejemplo:

-        Dm_exec_*

  • Contienen informacion relacionada con la ejecución de consultas y procesos de usuario

-        Dm_os_*

  • Contienen información a cerca de locking y programación de tareas.

-        Dm_tran_*

  • Contienen información sobre transacciones activas.

-        Dm_db_*

  • Contienen información sobre las bases de datos y objetos de la base de datos tales como indices.

Ahora, ejemplos:

Sys.dm_exec_query_stats: Esta vista es utilizada para obtener información sobre la ejecución de commandos de SQL. Por ejemplo, qué tanto tardó en ejecutarse (total_elapsed_time) o el número de veces que se ha ejecutado (execution_count).

Sys.dm_db_missing_index_groups: Actúa como la tabla maestra que lista los indices faltantes de forma general.

Sys.dm_db_missing_index_group_stats: Muestra los detalles  sobre las métricas de los índices inexistentes y los beneficios que se obtendrían si existieran. En otras palabras, lista los beneficios acumulados (desde la ultima vez que se reinició el motor) que se tendrían si el índice en cuestión existiera en tu base de datos.

Sys.dm_db_missing_index_columns: Requiere de un parámetro que hace referencia al número del index inexistente que se desea examinar (index handle). La vista arroja información detalladas sobre las columnas que deben formar parte del índice que te hace falta implementar.

Como verás, la información que puedes extraer utilizando las vistas dinámicas es bastante interesante así que es muy recommendable familiarizarse con ellas para aumentar nuestras capacidades como administrador del motor.

This entry was posted in Funcionamiento. Bookmark the permalink.

Comments are closed.