sys.dm_os_memory_objects (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Restituisce gli oggetti di memoria attualmente allocati da SQL Server. È possibile usare sys.dm_os_memory_objects per analizzare l'uso della memoria e per identificare possibili perdite di memoria.

Nota

Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_os_memory_objects. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Nome colonna Tipo di dati Descrizione
memory_object_address varbinary(8) Indirizzo dell'oggetto memoria. Non ammette i valori Null.
parent_address varbinary(8) Indirizzo dell'oggetto memoria padre. Ammette i valori Null.
pages_allocated_count int Si applica a: SQL Server 2008 (10.0.x) a SQL Server 2008 R2 (10.50.x).

Numero di pagine allocate dall'oggetto. Non ammette i valori Null.
pages_in_bytes bigint Si applica a: SQL Server 2012 (11.x) e versioni successive.

Quantità di memoria in byte allocata tramite questa istanza dell'oggetto memoria. Non ammette i valori Null.
creation_options int Solo per uso interno. Ammette i valori Null.
bytes_used bigint Solo per uso interno. Ammette i valori Null.
type nvarchar(60) Tipo di oggetto memoria.

Indica un componente a cui appartiene l'oggetto memoria oppure la funzione dell'oggetto memoria. Ammette i valori Null.
name varchar(128) Solo per uso interno. Ammette valori Null.
memory_node_id smallint ID di un nodo di memoria utilizzato dall'oggetto memoria. Non ammette i valori Null.
creation_time datetime Solo per uso interno. Ammette i valori Null.
max_pages_allocated_count int Si applica a: SQL Server 2008 (10.0.x) a SQL Server 2008 R2 (10.50.x).

Numero massimo di pagine allocate dall'oggetto memoria. Non ammette i valori Null.
page_size_in_bytes int Si applica a: SQL Server 2012 (11.x) e versioni successive.

Dimensioni in byte delle pagine allocate dall'oggetto. Non ammette i valori Null.
max_pages_in_bytes bigint Quantità massima di memoria utilizzata da questo oggetto memoria. Non ammette i valori Null.
page_allocator_address varbinary(8) Indirizzo di memoria dell'allocatore di pagine. Non ammette i valori Null. Per altre informazioni, vedere sys.dm_os_memory_clerks (Transact-SQL).
creation_stack_address varbinary(8) Solo per uso interno. Ammette i valori Null.
sequence_num int Solo per uso interno. Ammette i valori Null.
partition_type int Si applica a: SQL Server 2016 (13.x) e versioni successive.

Tipo di partizione:

0 - Oggetto memoria non partizionabile

1 - Oggetto memoria partizionabile, attualmente non partizionato

2 - Oggetto memoria partizionabile, partizionato dal nodo NUMA. In un ambiente con un singolo nodo NUMA equivale a 1.

3 - Oggetto memoria partizionabile, partizionato dalla CPU.
contention_factor real Si applica a: SQL Server 2016 (13.x) e versioni successive.

Valore che specifica la contesa su questo oggetto memoria, con 0 che non significa contesa. Il valore viene aggiornato ogni volta che è stato effettuato un numero specificato di allocazioni di memoria che riflettono la contesa durante tale periodo. Si applica solo agli oggetti memoria thread-safe.
Waiting_tasks_count bigint Si applica a: SQL Server 2016 (13.x) e versioni successive.

Numero di attese su questo oggetto memoria. Questo contatore viene incrementato ogni volta che la memoria viene allocata da questo oggetto memoria. L'incremento è il numero di attività attualmente in attesa dell'accesso a questo oggetto memoria. Si applica solo agli oggetti memoria thread-safe. Si tratta di un valore ottimale senza una garanzia di correttezza.
exclusive_access_count bigint Si applica a: SQL Server 2016 (13.x) e versioni successive.

Specifica la frequenza di accesso esclusivo a questo oggetto memoria. Si applica solo agli oggetti memoria thread-safe. Si tratta di un valore ottimale senza una garanzia di correttezza.
pdw_node_id int Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW)

Identificatore del nodo in cui è attiva la distribuzione.

partition_type, contention_factor, waiting_tasks_count e exclusive_access_count non sono ancora implementati in database SQL.

Autorizzazioni

In SQL Server e Istanza gestita di SQL è richiesta VIEW SERVER STATE l'autorizzazione.

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader##server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'appartenenza al ruolo del ##MS_ServerStateReader## server.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW edizione Standard RVER PERFORMANCE STATE nel server.

Osservazioni:

Gli oggetti memoria sono heap. Le allocazioni implementate dagli oggetti sono caratterizzate da una maggiore granularità rispetto alle allocazioni implementate dai clerk di memoria. I componenti di SQL Server usano oggetti di memoria anziché i clerk di memoria. Gli oggetti memoria utilizzano l'interfaccia dell'allocatore di pagine del clerk di memoria per allocare le pagine. Gli oggetti memoria non utilizzano interfacce di memoria virtuale o condivisa. In base al modello di allocazione, i componenti possono creare tipi diversi di oggetti memoria per allocare aree di dimensioni arbitrarie.

Le dimensioni di pagina tipiche di un oggetto memoria sono pari a 8 KB. Gli oggetti memoria incrementale possono tuttavia avere dimensioni di pagina da 512 byte a 8 KB.

Nota

Le dimensioni di pagina non corrispondono a un'allocazione massima. Le dimensioni di pagina corrispondono invece alla granularità dell'allocazione supportata da un allocatore di pagine e implementata da un clerk di memoria. È possibile richiedere allocazioni superiori a 8 KB dagli oggetti memoria.

Esempi

Nell'esempio seguente viene restituita la quantità di memoria allocata per ogni tipo di oggetto 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  

Vedi anche

Viste a gestione dinamica correlate al sistema operativo SQL Server (Transact-SQL)
sys.dm_os_memory_clerks (Transact-SQL)