Compartir a través de


sys.dm_os_memory_objects (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Devuelve objetos de memoria asignados actualmente por SQL Server. Puede usar sys.dm_os_memory_objects para analizar el uso de memoria e identificar posibles pérdidas de memoria.

Nota:

Para llamarlo desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_os_memory_objects. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Nombre de la columna Tipo de datos Descripción
memory_object_address varbinary(8) Dirección del objeto de memoria. No admite valores NULL.
parent_address varbinary(8) Dirección del objeto de memoria primario. Acepta valores NULL.
pages_allocated_count int Se aplica a: de SQL Server 2008 (10.0.x) hasta SQL Server 2008 R2 (10.50.x).

Número de páginas asignadas por este objeto. No admite valores NULL.
pages_in_bytes bigint Válido para : SQL Server 2012 (11.x) y versiones posteriores.

Cantidad de memoria en bytes que esta instancia del objeto de memoria asigna. No admite valores NULL.
creation_options int Solo para uso interno. Acepta valores NULL.
bytes_used bigint Solo para uso interno. Acepta valores NULL.
type nvarchar(60) Tipo de objeto de memoria.

Indica algún componente al que pertenece este objeto de memoria, o la función del objeto de memoria. Acepta valores NULL.
name varchar(128) Solo para uso interno. Acepta valores NULL.
memory_node_id smallint Identificador de un nodo de memoria que utiliza este objeto de memoria. No admite valores NULL.
creation_time datetime Solo para uso interno. Acepta valores NULL.
max_pages_allocated_count int Se aplica a: de SQL Server 2008 (10.0.x) hasta SQL Server 2008 R2 (10.50.x).

Número máximo de páginas asignadas por este objeto de memoria. No admite valores NULL.
page_size_in_bytes int Válido para : SQL Server 2012 (11.x) y versiones posteriores.

Tamaño de las páginas asignadas por este objeto, en bytes. No admite valores NULL.
max_pages_in_bytes bigint Cantidad máxima de memoria que este objeto de memoria nunca usó. No admite valores NULL.
page_allocator_address varbinary(8) Dirección de memoria del asignador de la página. No admite valores NULL. Para obtener más información, consulte sys.dm_os_memory_clerks (Transact-SQL).
creation_stack_address varbinary(8) Solo para uso interno. Acepta valores NULL.
sequence_num int Solo para uso interno. Acepta valores NULL.
partition_type int Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Tipo de partición:

0- Objeto de memoria no particionable

1- Objeto de memoria particionable, actualmente no con particiones

2 - Objeto de memoria particionable, particionado por nodo NUMA. En un entorno con un único nodo NUMA, esto equivale a 1.

3 - Objeto de memoria particionable, particionado por CPU.
contention_factor real Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Valor que especifica contención en este objeto de memoria, con 0, lo que significa que no hay contención. El valor se actualiza cada vez que se realizó un número especificado de asignaciones de memoria que reflejan la contención durante ese período. Solo se aplica a objetos de memoria seguros para subprocesos.
waiting_tasks_count bigint Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Número de esperas en este objeto de memoria. Este contador se incrementa cada vez que se asigna memoria desde este objeto de memoria. El incremento es el número de tareas que esperan actualmente el acceso a este objeto de memoria. Solo se aplica a objetos de memoria seguros para subprocesos. Este es un mejor valor de esfuerzo sin garantía de corrección.
exclusive_access_count bigint Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Especifica la frecuencia con la que se accedió exclusivamente a este objeto de memoria. Solo se aplica a objetos de memoria seguros para subprocesos. Este es un mejor valor de esfuerzo sin garantía de corrección.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.

partition_type, contention_factor, waiting_tasks_count y exclusive_access_count aún no se han implementado en SQL Database.

Permisos

En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.

En los objetivos de servicio Básico, S0 y S1 de SQL Database y para bases de datos en grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador Microsoft Entra o la pertenencia al ##MS_ServerStateReader## rol del servidor. En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.

Comentarios

Los objetos de memoria son montones. Proporcionan asignaciones con una granularidad más fina que las que proporcionan los distribuidores de memoria. Los componentes de SQL Server usan objetos de memoria en lugar de distribuidores de memoria. Los objetos de memoria utilizan la interfaz del asignador de la página del distribuidor de memoria para asignar páginas. Los objetos de memoria no utilizan interfaces de memoria virtual o compartida. Según los patrones de asignación, los componentes pueden crear diferentes tipos de objetos de memoria para asignar regiones de tamaño arbitrario.

El tamaño de página típico de un objeto de memoria es de 8 KB. No obstante, los objetos de memoria incrementales pueden tener tamaños de página que van desde 512 bytes hasta 8 KB.

Nota:

El tamaño de página no tiene una asignación máxima. En su lugar, el tamaño de página es la granularidad de la asignación que admite una asignador de la página y que se implementa mediante un distribuidor de memoria. Puede solicitar asignaciones mayores de 8 KB de los objetos de memoria.

Ejemplos

En el siguiente ejemplo se devuelve la cantidad de memoria asignada por cada tipo de objeto de memoria.

SELECT SUM (pages_in_bytes) as 'Bytes Used', type   
FROM sys.dm_os_memory_objects  
GROUP BY type   
ORDER BY 'Bytes Used' DESC;  
GO  

Consulte también

Vistas de administración dinámica relacionadas con el sistema operativo de SQL Server (Transact-SQL)
sys.dm_os_memory_clerks (Transact-SQL)