En SQL Server 2008 el número de DMVs y de categorías de DMVs han sido incrementados respecto a SQL Server 2005. En la siguiente tabla vemos las categorías de DMVs, destacando en rojo las nuevas categorías que no existían en 2005:
Common Language Runtime Related Dynamic Management Views
Object Related Dynamic Management Views and Functions
Database Mirroring Related Dynamic Management Views Query Notifications Related Dynamic Management Views
Database Related Dynamic Management Views Replication Related Dynamic Management Views
Execution Related Dynamic Management Views and Functions Service Broker Related Dynamic Management Views
Full-Text Search Related Dynamic Management Views SQL Server Operating System Related Dynamic Management Views
Index Related Dynamic Management Views and Functions Transaction Related Dynamic Management Views and Functions
I/O Related Dynamic Management Views and Functions SQL Server Extended Events Dynamic Management Views

A continuación vamos a analizar las nuevas DMVs que aparecen en 2008 categoría por categoría describiendo brevemente que información nos ofrecen.

Database Mirroring Related Dynamic Management Views

  • sys.dm_db_mirroring_auto_page_repair: Esta vista nos devuelve una fila por cada intento de reparación automático de página junto al estado de la operación. En SQL Server 2008 disponemos de una nueva funcionalidad que nos permite recuperarnos de un fallo de página en bases de datos en mirroring, aumentando la disponibilidad. Esto puede producirse por ejemplo por un sector defectuoso en disco y por tanto deberemos vigilar esta vista pues nos indicará problemas con nuestro sistema de almacenamiento que deben ser resueltos.
  • sys.dm_db_mirroring_past_actions: Esta vista, aún no documentada en BOL 2008, devuelve información relacionada con la actividad de mirroring de la base de datos.

Object Related Dynamic Management Views and Functions (nueva)

  • sys.dm_sql_referenced_entities: Nos devuelve una fila por cada entidad definida por el usuario a la que referencia la entidad consultada.
  • sys.dm_sql_referencing_entities: Nos devuelve una fila por cada entidad definida que referencia a la entidad consultada.

Vamos a verlo con un ejemplo para que quede todo claro. Creamos unas tablas y un procedimiento que hace referencia a éstas:

create table test1(a int)
go
create table test2(b int, c int)
go
create procedure testproc1
as
begin
      select * from test1
      select b from test2
end

Consultamos las DMVs…

select * FROM sys.dm_sql_referencing_entities ('dbo.test1', 'OBJECT');
go
select * FROM sys.dm_sql_referencing_entities ('dbo.test2', 'OBJECT');
go
select referenced_entity_name,referenced_minor_name FROM sys.dm_sql_referenced_entities ('dbo.testproc1', 'OBJECT');

 

Los resultados obtenidos son:

referencing_entity_name

testproc1

 

referencing_entity_name

testproc1

 

references_entity_name

referenced_minor_name

test1

NULL

test1

a

test2

NULL

test2

b

 

Como podemos apreciar, se nos muestran para cada tabla, que el procedimiento depende de ella. Además, en el caso del procedimiento nos dice que depende de las tablas test1 y test2 especificando además de las columnas de las que depende (no indica que depende de la columna c de test2 pues no la utiliza).

SQL Server Operating System Related Dynamic Management Views

  • sys.dm_os_memory_brokers: Esta DMV nos informará sobre el uso interno de memoria de SQL Server. Al comprobar las diferencias entre ésta y la memoria del proceso podremos encontrar el consumo de memoria de componentes externos que estén ejecutando en SQL Server.
  • sys.dm_os_memory_nodes : Nos muestra información de los nodos de memoria en una arquitectura NUMA.
  • sys.dm_os_nodes: Nos muestra el estado de cada uno de los nodos tal y como los maneja el SQL OS. Normalmente esto tiene más importancia en sistemas NUMA o con múltiples procesadores repartidos con soft-NUMA. Nos indica el número de workers asociados para cada nodo, la carga de cada uno de ellos, las CPUs asociadas, etc.
  • sys.dm_os_process_memory : Esta DMV nos muestra información sobre el consumo de la memoria del proceso de SQL Server. Nos separa el consumo de memoria física, virtual, el número de fallos de página, el porcentaje de uso, etc.
  • sys.dm_os_sys_memory:  Nos devuelve información de memoria del sistema operativo. Esta información es muy importante cuando tenemos problemas que no conseguimos detectar por otras vías y pueden estar provocadas por otros procesos que están afectando al rendimiento de nuestro SQL Server. Indica la memoria libre, la memoria ocupada por el kernel, etc.
  • sys.dm_os_performance_counters: Se han añadido algunos contadores y se espera que se añadan más en la versión final. Comentar algunos interesantes como el número de transacciones escritas por una base de datos o el número de usos de funciones marcadas como obsoletas. Este último indicador puede ser útil para conocer si nuestro sistema tendrá problemas al migrar a la próxima versión de SQL Server. En el apartardo de Mirroring se han añadido multitud de nuevos contadores destinados a conocer mejor el desempeño de este tipo de configuraciones. Actualmente la CTP actual no reporta todos los contadores (si están disponibles a traves del monitor de rendimiento) lo cual esperamos que se resuelva en próximas versiones previas a la RTM.

 SQL Server Extended Events Dynamic Management Views (nueva)

Dentro de este grupo encontramos un conjunto totalmente nuevo de DMVs: sys.dm_xe_map_values, sys.dm_xe_session_events, sys.dm_xe_object_columns, sys.dm_xe_session_object_columns, sys.dm_xe_objects, sys.dm_xe_session_targets, sys.dm_xe_packages, sys.dm_xe_sessions. Entrar en detalle en cada una sería demasiado extenso por lo que resumiremos la finalidad global de éstas. Estas DMVs proporcionan acceso al soporte de eventos extendidos en SQL Server 2008. Estos eventos extendidos son nuevos en la plataforma Windows y nos servirán para poder obtener información de diagnostico sin utilizar profiler.

El procedimiento que utilizaremos en este caso será generar una sesión de captura de eventos y posteriormente podremos leerlos o bien a través de las DMVs como sys.dm_xe_session_targets. El enfoque de estos eventos extendidos es permitir la diagnosis de la forma menos intrusiva posible para evitar penalizar en el rendimiento. Será la alternativa lógica a las trazas de profiler en servidor cuando lo que busquemos sea capturar algunos eventos concretos afectando al mínimo el rendimiento. Para quien quiera conocer mejor y de primera mano los eventos extendidos el próximo 14 de noviembre Jerome Halmans (Program Manager de SQL Operating System y SQL Extended Events) dará un webcast al respecto: http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032356290&EventCategory=4&culture=en-US&CountryCode=US

Esto es todo por ahora respecto a las DMVs que nos trae la CTP de 2008. Seguiremos atentos a las novedades .

 

Rubén Garrigós