Si je dispose de 8 Go de RAM sur un serveur et que je lance 4 instances de SQL Express, la limite de mémoire totale utilisée par SQL Server sera-t-elle de 1 Go ou 4 Go?
Chaque instance peut utiliser jusqu'à 1 Go de mémoire pour le pool de mémoire tampon . Chaque instance peut utiliser un peu plus de 1 Go au total, car toutes les allocations de mémoire ne passent pas par le pool de mémoire tampon. Dans votre cas, la mémoire maximale utilisée par les quatre instances pour le pool de mémoire tampon serait de 4 Go.
Pour confirmer, j’ai démarré deux instances du moteur de base de données SQL Server 2008 Express, effectué quelques tâches pour charger les pools de mémoire tampon (séparés), puis examiné la mémoire utilisée par instance de différentes manières, par exemple à l’aide de DBCC MEMORYSTATUS ou en comptant le nombre de mémoires tampons à l’aide du fichier DMV sys.dm_os_buffer_descriptors .
Les numéros d' utilisation de la mémoire physique ci-dessous ont été obtenus à l'aide de requêtes simultanées sur le système DMV sys.dm_os_process_memory du système sur chaque instance du moteur de base de données:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
Sortie:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
Chacune d'entre elles dépasse légèrement 1 Go, car l'utilisation totale de la mémoire physique ne comprend pas uniquement l'utilisation du pool de mémoire tampon, comme indiqué précédemment.
Serait-il conseillé d'exécuter plusieurs instances de ce type pour permettre à chaque base de données de mieux utiliser les ressources (en supposant que le serveur dispose de beaucoup de ressources)?
Si les bases de données sur chaque instance sont fonctionnellement indépendantes, il est au moins réalisable d'exécuter plusieurs instances d'Express de cette manière, bien que vous deviez faire très attention à la configuration et la maintenance peut être rendue plus complexe.
Vous pourriez être mieux servi en utilisant une autre édition, telle que la Developer Edition (très peu coûteuse), si l'utilisation prévue correspond à la licence. Il vous faudrait en dire beaucoup plus sur les circonstances pour avoir une réponse claire sur ce point.
SQL Server Database Engine
moyensA Single Instance
. Chaque fois que vous devez changer le serveur de dialogue de connexion auquel vous vous connectez (par exemple,localhost\dev
vslocalhost\test
), il s'agit d'une nouvelle "instance" ou d'un nouveau "moteur". Je pensais juste que je clarifierais ça.Chaque instance compte séparément car elle a un processus séparé.
la source
Dans SQL Express, le moteur de base de données ne peut utiliser que 1 Go de RAM , et aucune base de données ne peut dépasser 10 Go.
Donc, 4 instances devraient toujours partager ce 1 Go de RAM.
Vous pouvez en savoir plus sur http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx .
Une discussion similaire ici sur Stack Overflow indique que c’est la bonne réponse BTW, il n’est donc pas nécessaire de passer au vote suivant: https://stackoverflow.com/questions/1169634/limitations-of-sql-server-express
Cette page dit la même chose, même s’il s’agit de SQL Server Express 2005: http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- par instance.html
la source
Maximum memory utilized (SQL Server Database Engine)
Remarquez comment ils utilisent la même terminologie que sur la ligne:Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1
(pour ceux qui jouent à la maison, le fait est qu’ils ont la même mesure) msdn.microsoft.com/en-us/library/… et moi aussi J'adore le fait que la réponse à SO qui était liée est FAUX FAUX. Commencez par "1 cœur ou 4 sockets", les éditeurs ne peuvent même pas copier-coller correctement.