sys.dm_os_performance_counters

Posted on
  • martes, 23 de diciembre de 2008
  • by
  • Román
  • in
  • La performance de un servidor SQL Server 2005 puede ser monitoreada utilizando los contadores de performance. Para lo cual podemos usar el System Monitor (perfmon) o, a partir de SQL Server 2005, utilizando la Dynamic Management View (DMV a partir de ahora) con sys.os_exec_performance_counters.

    Algunos contadores útiles (en otro posteo indicaré como analizar estos contadores):
    SQLServer:Buffer Partition
    SQLServer:User Settable
    SQLServer:Databases
    SQLServer:CLR
    SQLServer:Cursor Manager by Type
    SQLServer:Exec Statistics
    SQLServer:Transactions
    SQLServer:Memory Manager
    SQLServer:SQL Errors
    SQLServer:Buffer Node
    SQLServer:Plan Cache
    SQLServer:Access Methods
    SQLServer:Cursor Manager Total
    SQLServer:Broker Activation
    SQLServer:Latches
    SQLServer:Wait Statistics
    SQLServer:Broker/DBM Transport
    SQLServer:General Statistics
    SQLServer:SQL Statistics
    SQLServer:Catalog Metadata
    SQLServer:Broker Statistics
    SQLServer:Locks
    SQLServer:Buffer Manage
    En SQL Server 2000 podíamos obtener la información desde la tabla master.dbo.sysperfinfo. En 2005 se nos provee con una vista que representa esta tabla, solo a los efectos de mantener compatibilidad con codificaciones previas, pero en 2005 usted debiera usar el DMV “sys.os_exec_performance_counters”.

    Para Finalizar un ejemplo:
    Vamos a crear un script para calcular el "buffer cache hit ratio", mientras mas cercano a 100% mejor el valor, ya que indicaría que el buffer cache está siendo utilizado de manera óptima y que las páginas permanecen en el cache de buffer. Y por ende la performance de su servidor será mejor.
    Create Proc dbo.P_ContadorBufferCacheHit
    as
    SELECT (a.cntr_value * 1.0 / b.cntr_value) * 100.0 [BufferCacheHitRatio]
    FROM (SELECT *, 1 x FROM sys.dm_os_performance_counters
    WHERE counter_name = 'Buffer cache hit ratio'
    AND object_name = 'SQLServer:Buffer Manager') a
    JOIN
    (SELECT *, 1 x FROM sys.dm_os_performance_counters
    WHERE counter_name = 'Buffer cache hit ratio base'
    AND object_name = 'SQLServer:Buffer Manager') b
    GO

    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea


    1 comentarios:

    Fco Javier dijo...

    Al parecer le falta el ON al JOIN.

    Adicioné (Antes del último GO)

    ... AND object_name = 'SQLServer:Buffer Manager') b
    ON a.object_name=b.object_name
    GO

    Publicar un comentario