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 Piattaforma di strumenti analitici (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, vedi 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 l'autorizzazione VIEW SERVER STATE
.
Negli obiettivi del servizio Basic del Database SQL, S0 e S1 e per i database nei pool elastici, è richiesto l'account amministratore del server, l'account amministratore di Microsoft Entra o l’adesione nel ##MS_ServerStateReader##
al ruolo del server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE
per il database o l'adesione ruolo del server ##MS_ServerStateReader##
.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il 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)