J'ai obtenu ci-dessous la définition de Bob Dorr sur la mémoire maximale du serveur dans les contrôles SQL Server 2012. Vous pouvez également lire la documentation en ligne pour plus de détails
La mémoire maximale du serveur contrôle l'allocation de mémoire SQL Server, y compris le pool de mémoire tampon, la mémoire de compilation, tous les caches, les allocations de mémoire qe, la mémoire du gestionnaire de verrous et la mémoire CLR (essentiellement tout "commis" comme dans dm_os_memory_clerks). La mémoire des piles de threads, des segments de mémoire, des fournisseurs de serveurs liés autres que SQL Server ou toute mémoire allouée par une DLL «non SQL Server» n'est pas contrôlée par la mémoire maximale du serveur.
La mémoire allouée à la pile de threads, la DLL tierce, le fournisseur de serveur lié autre que celui de Microsoft (comme MySQL.PostgreSQL, etc.) ou toute DLL chargée dans l'espace d'adressage SQL Server qui n'est pas SQL Server est allouée en dehors de la mémoire maximale du serveur. L'opération de sauvegarde IIRC dans SQL Server 2012 se voit également allouer de la mémoire en dehors du pool de tampons.
Utilisez-vous un serveur lié pour interroger d'autres SGBDR? Tout autre logiciel installé sur la même machine Windows. Pouvez-vous publier sur un emplacement partagé la sortie des requêtes suivantes
select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
from sys.dm_os_memory_clerks
group by type
order by [Memory utilized in MB] desc
Go
-------
select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
(locked_page_allocations_kb/1024) locked_page_allocations_MB,
(pages_kb/1024) [memory allocated MB]
from sys.dm_os_memory_nodes
Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go
Pouvez-vous également télécharger une DBCC MMEMORYSTATUS
sortie complète sur un emplacement partagé et publier le lien ici. Cela aiderait à comprendre quel composant prend de la mémoire
Modifier: selon la sortie memorystatus dbcc, je peux voir 2 nœuds NUMA et la mémoire utilisée par chaque nœud est d'environ
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
Encore une fois, si vous voyez Memory Manager dans memorystatus sortir son
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
La VM validée est en fait de la mémoire virtuelle validée par SQL Server et puisque cette mémoire est validée, elle l'a fait physical memory backing it
. Cela encore une fois, ce qui me fait penser que SQL Server utilise 65 G comme défini dans la mémoire maximale du serveur
C'est ce qu'est la mémoire max du serveur. La mémoire est donc bien répartie entre les deux nœuds. Vous pouvez également ajouter la sortie de la requête ci-dessous pour vérifier. Veuillez ajouter une capture d'écran
SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;
?