Jeśli mam 8 GB pamięci RAM na serwerze i uruchamiam 4 instancje SQL Express, czy całkowity limit pamięci używany przez SQL Server wyniesie 1 GB czy 4 GB?
Każde wystąpienie może wykorzystać do 1 GB pamięci dla puli buforów . Każde wystąpienie może zużyć nieco więcej niż 1 GB, ponieważ nie wszystkie przydziały pamięci przechodzą przez pulę buforów. W twoim przypadku maksymalna pamięć używana przez cztery instancje dla puli buforów wynosiłaby 4 GB.
Aby to potwierdzić, uruchomiłem dwa wystąpienia aparatu bazy danych Express Server SQL Server 2008 , wykonałem pewne czynności, aby załadować (osobne) pule buforów, a następnie spojrzałem na wykorzystanie pamięci na wystąpienie na wiele sposobów, na przykład używając DBCC MEMORYSTATUS lub przez zliczenie liczby buforów za pomocą DMV sys.dm_os_buffer_descriptors .
Poniższe numery wykorzystania pamięci fizycznej uzyskano przy użyciu jednoczesnych zapytań przeciwko systemowej pamięci DMV sys.dm_os_process_memory dla każdej instancji silnika bazy danych:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
Wydajność:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
Każda z nich przekracza nieco 1 GB, ponieważ całkowite użycie pamięci fizycznej obejmuje więcej niż tylko użycie puli buforów, jak wspomniano wcześniej.
Czy wskazane byłoby uruchomienie wielu takich instancji, aby umożliwić każdej bazie danych lepsze wykorzystanie zasobów (przy założeniu, że serwer ma dużo zasobów)?
Jeśli bazy danych w każdej instancji są funkcjonalnie niezależne, to co najmniej wykonalne jest uruchomienie wielu instancji Express w ten sposób, chociaż należy zwrócić szczególną uwagę na konfigurację, a konserwacja może być bardziej złożona.
Lepszym rozwiązaniem może być skorzystanie z innej edycji, takiej jak w pełni funkcjonalna (i bardzo tania) wersja dla programistów, jeśli zamierzone użycie jest zgodne z licencją). Aby uzyskać jasną odpowiedź na ten temat, musisz powiedzieć znacznie więcej o okolicznościach.
SQL Server Database Engine
oznaczaA Single Instance
. Za każdym razem, gdy musisz zmienić serwer okna dialogowego połączenia, z którym się łączysz (np.localhost\dev
Vslocalhost\test
), jest to nowy „Instancja” lub nowy „Silnik”. Pomyślałem, że to wyjaśnię.