web-dev-qa-db-fra.com

La mémoire et la CPU de SQL Server Express sont-elles limitées par instance?

Si j'ai 8 Go de RAM sur un serveur et que j'exécute 4 instances de SQL Server Express, la limite de mémoire totale utilisée par SQL Server sera-t-elle de 1 Go ou 4 Go?

Serait-il conseillé d'exécuter plusieurs instances comme celle-ci pour permettre à chaque base de données de mieux utiliser les ressources (en supposant que le serveur dispose de nombreuses ressources)?

32
wizzardmr42

Si j'ai 8 Go de RAM sur un serveur et que j'exécute 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 tampons . 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 tampons. Dans votre cas, la mémoire maximale utilisée par les quatre instances pour le pool de mémoire tampon serait de 4 Go.

BOL extract

Pour confirmer, j'ai démarré deux instances du moteur de base de données SQL Server 2008 Express, effectué une activité pour charger les pools de mémoire tampon (séparés), puis regardé à l'utilisation de la mémoire par instance de plusieurs façons, par exemple en utilisant DBCC MEMORYSTATUS ou en comptant le nombre de tampons en utilisant sys.dm_os_buffer_descriptors DMV.

Les nombres 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 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;

Production:

╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║   1102872 ║   1059812 ║
╚═══════════╩═══════════╝

Chacun d'eux est légèrement supérieur à 1 Go, car l'utilisation totale de la mémoire physique comprend plus que l'utilisation du pool de mémoire tampon, comme mentionné précédemment.

Serait-il conseillé d'exécuter plusieurs instances comme celle-ci pour permettre à chaque base de données de mieux utiliser les ressources (en supposant que le serveur dispose de nombreuses ressources)?

Si les bases de données de chaque instance sont indépendantes sur le plan fonctionnel, il est au moins possible d'exécuter plusieurs instances d'Express de cette manière, bien que vous deviez prêter une attention particulière à la configuration et à la maintenance qui pourraient devenir plus complexes.

Vous pourriez être mieux servi en utilisant une autre édition, comme l'édition développeur complète (et très bon marché), si l'utilisation prévue correspond à la licence). Il faudrait en dire beaucoup plus sur les circonstances pour obtenir une réponse claire sur ce point.

27
Paul White 9

Chaque instance compte séparément car elle a un processus distinct.

7
TomTom