SQL Server, oggetto Memory Manager

Si applica a:SQL Server

L'oggetto Memory Manager in Microsoft SQL Server fornisce contatori per monitorare l'utilizzo complessivo della memoria del server. Tale monitoraggio che consente di misurare l'attività degli utenti e l'utilizzo delle risorse può risultare utile per identificare eventuali colli di bottiglia. Il monitoraggio della memoria usata da un'istanza di SQL Server consente di determinare:

  • Presenza di colli di bottiglia in seguito a quantità di memoria fisica non sufficiente per l'archiviazione nella cache dei dati di accesso frequente. Se la memoria non è adeguata, SQL Server deve recuperare i dati dal disco.

  • Se le prestazioni delle query possono essere migliorate aggiungendo più memoria o rendendo disponibile più memoria per la cache dei dati o le strutture interne di SQL Server.

Contatori di Memory Manager

Questa tabella descrive i contatori di Gestione memoria di SQL Server.

Contatori Memory Manager di SQL Server Descrizione
Memoria connessioni (KB) Specifica la quantità totale di memoria dinamica utilizzata dal server per gestire le connessioni.
Memoria cache di database (KB) Specifica la quantità totale di memoria attualmente utilizzata dal server per la cache delle pagine del database.
Vantaggio esterno della memoria Stima interna del vantaggio per le prestazioni dall'aggiunta di memoria a una cache specifica. Usato dal motore per equilibrare l'utilizzo della memoria tra cache, è utile per i casi di risoluzione dei problemi con un aumento imprevisto delle dimensioni della cache. Il valore è visualizzato come numero intero basato su un calcolo interno.
Memoria disponibile (KB) Specifica la quantità di memoria allocata attualmente non utilizzata dal server.
Memoria area di lavoro concessa (KB) Specifica la quantità totale di memoria concessa per l'esecuzione di processi, quali operazioni di hashing, ordinamento, copia bulk e creazione di indici.
Blocchi di blocco Specifica il numero corrente di blocchi di blocco in uso nel server (valore aggiornato periodicamente). Un blocco di blocco rappresenta una singola risorsa bloccata, ad esempio una tabella, una pagina o una riga.
Blocchi di blocco allocati Specifica il numero corrente di blocchi di blocco allocati. All'avvio del server, il numero di blocchi di blocco allocati più il numero di blocchi di proprietario del blocco allocati dipende dall'opzione di configurazione Blocchi di SQL Server. Se è necessario un maggior numero di blocchi di blocco, il valore aumenta.
Memoria blocchi (KB) Specifica la quantità totale di memoria dinamica utilizzata dal server per i blocchi.
Blocchi proprietari di blocco Specifica il numero di blocchi dei proprietari di blocco in uso nel server (valore aggiornato periodicamente). Un blocco di proprietario di blocco rappresenta la detenzione della proprietà di un blocco su un oggetto da parte di un singolo thread. Di conseguenza, se tre thread dispongono ciascuno di un blocco condiviso (S) su una pagina, saranno presenti tre blocchi dei proprietari di blocco.
Blocchi proprietari di blocco allocati Specifica il numero corrente di blocchi dei proprietari di blocco allocati. All'avvio del server, il numero di blocchi di proprietari di blocchi di blocco allocati e il numero di blocchi di blocco allocati dipendono dall'opzione di configurazione Blocchi di SQL Server. Se è necessario un maggior numero di blocchi dei proprietari di blocco, il valore aumenta in modo dinamico.
Memoria del pool del log (KB) Quantità totale di memoria dinamica usata dal server per il pool del log.
Memoria massima area di lavoro (KB) Indica la quantità massima di memoria disponibile per l'esecuzione di processi, quali operazioni di hashing, ordinamento, copia bulk e creazione di indici.
Concessioni di memoria in attesa Specifica il numero totale di processi a cui è stata concessa memoria per l'area di lavoro.
Concessioni di memoria in sospeso Specifica il numero totale di processi in attesa di ottenere memoria per l'area di lavoro.
Memoria Query Optimizer (KB) Specifica la quantità totale di memoria dinamica utilizzata dal server per l'ottimizzazione delle query.
Memoria server riservata (KB) Indica la quantità di memoria che il server ha riservato per l'utilizzo futuro. Questo contatore indica la quantità di memoria corrente non utilizzata e inizialmente concessa indicata in Memoria area di lavoro concessa (KB).
Memoria cache SQL (KB) Specifica la quantità totale di memoria dinamica utilizzata dal server per la cache SQL dinamica.
Memoria server prelevata (KB) Specifica la quantità di memoria utilizzata dal server per fini diversi dalle pagine del database.
Memoria prevista server (KB) Indica la quantità totale di memoria dinamica disponibile per il server.
Memoria totale server (KB) Specifica la quantità totale di memoria riservata dal server tramite Gestione memoria.

Esempio

Si inizia a esplorare i contatori delle prestazioni delle query in questo oggetto usando questa query T-SQL nella vista a gestione dinamica sys.dm_os_performance_counters :

SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Memory Manager%';