SQL Server 2012 Express가 서버에서 9.5GB의 RAM을 사용하는 이유는 무엇입니까?


22

SQL Server 2012 Express를 기본 데이터 저장소로 포함하려는 응용 프로그램을 구축 중입니다. 개발 시스템 (3GB RAM이있는 Win7-32)에서 테스트 할 때 SQL Server Express Edition에 대해 sqlservr.exe게시 된 하드웨어 스케일링 제한 에서 예상 한대로 1GB 이상의 RAM을 사용 하는 프로세스 는 관찰되지 않았습니다 .

그런 다음 응용 프로그램을 서버 등급 시스템 (16GB RAM이있는 Win Server 2008R2 64 비트)으로 이동하여 성능을 평가하고 sqlservr.exe프로세스가 약 9.5GB의 RAM으로 빠르게 확장되어 그대로 유지 되었다는 사실에 놀랐 습니다.

효과가 있는지 확인하기 위해 몇 번 다시 시작했지만 매번 프로세스가 ~ 9.5GB로 빠르게 돌아 왔습니다. 이제는 SQL Server Express에서 RAM을 사용하게 된 것을 기쁘게 생각하지만, RAM이 잘못 사용 된 성능 수준에 의존하지 않도록 예상되는 동작인지 알고 싶습니다.

에 따르면 서버 컴퓨터의 SQL Server 버전 인 FYI SELECT @@VERSION는 다음과 같습니다.

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 
    Oct 19 2012 13:38:57 
    Copyright (c) Microsoft Corporation
    Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

내 9.5GB 번호는 작업 관리자의 "개인 작업 집합"번호에서 나왔습니다. DBCC memorystatus현재 유휴 서버 인 경우 의 첫 번째 출력 테이블 은 다음과 같습니다.

PROCESS/SYSTEM COUNTS
Available Physical Memory   5543616512
Available Virtual Memory    8734902411264
Available Paging File       22471094272
Working Set                 9664200704
Percent of Committed Memory in WS   99
Page Faults                 2627510
System physical memory high 1
System physical memory low  0
Process physical memory low 0
Process virtual memory low  0

spaghettidba의 제안 된 쿼리 출력 sys.dm_os_memory_clerks:

MEMORYCLERK_SQLBUFFERPOOL   1410
OBJECTSTORE_LOCK_MANAGER    256
MEMORYCLERK_SQLCLR          38
MEMORYCLERK_SOSNODE         26
CACHESTORE_SQLCP            11

30MB보다 작은 10 개 이상의 작은 항목

답변:


12

버퍼 풀의 경우 SQL Express는 1GB로 제한되지만 SQL Server에는 다른 많은 메모리 풀이 있습니다. 내가 놀랍게 생각하는 것은 비 버퍼 메모리 풀을 과도하게 사용한다는 것입니다. 메모리 담당자마다 메모리 사용량을 찾으려면 다음을 실행하십시오.

SELECT type, SUM(pages_kb)/1024 AS MemoryMB
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY 2 DESC

이것이 도움이되기를 바랍니다.


이 쿼리의 결과는 다음 MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11 과 같습니다. 그리고 <30MB에 해당하는 몇 개의 작은 쿼리가 있습니다. 나에게 이상해 보인다. 주석 형식에서 -arg-
Dan

흠. MEMORYCLERK_SQLBUFFERPOOL만으로는 1GB 제한을 초과하므로 버그가 발생할 수 있습니다. 내가 이상하게 생각하는 것은 쿼리에 표시되지 않고 9.5GB를 사용하는 방법입니다.
spaghettidba

sys.dm_os_memory_clerks (single_pages_kb 옆에)에 다른 흥미로운 열이 있다고 생각합니다. virtual_memory_committed_kb는 MEMORYCLERK_SQLBUFFERPOOL의 경우 더 관련이있는 것으로 보입니다.
Razvan Socol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.