2009-05-13 8 views
11

10GB RAM이있는 64 비트 컴퓨터에서 실행되는 SQL Server 2008 64 비트에서 호스팅되는 데이터베이스에서 스트레스 테스트를 수행하고 있습니다.SQL Server 2008은 많은 메모리를 차지합니까?

400 개의 스레드가 있습니다. 각 스레드는 매초마다 데이터베이스를 쿼리하지만 쿼리 시간에는 SQL 프로파일 러에서 말하는 것처럼 시간이 걸리지 않지만 18 시간 후에 SQL Server는 7.2GB의 RAM과 7.2GB의 가상 메모리를 사용합니다.

정상적인 동작입니까? 사용하지 않는 메모리를 정리하기 위해 SQL Server를 조정하려면 어떻게합니까?

+0

이 수치는 어떻게 측정합니까? 작업 관리자가 오해의 소지가있는 수치를 제공 할 수 있음을 명심하십시오 (저는 항상 perfmon을 선택하고 개인/가상 바이트를 보게됩니다) –

+0

TaskCommon과 PerformanceCounter 클래스를 사용하는 별도의 dotnet 응용 프로그램을 사용하여 SQL Server를 모니터링하고 있습니다. –

답변

27

SQL Server는 많은 양의 메모리를 메모리에 저장하여 성능을 향상시키기 위해 최대한 많은 메모리를 사용하도록 설계되었습니다. SQL Server 전용 컴퓨터를 사용하는 것이 좋습니다. 이렇게하면 다른 사람이 메모리를 필요로하지 않기 때문에이 방법을 완벽하게 유효한 방법으로 사용할 수 있습니다. 그래서 이것에 대해 걱정할 필요가 없습니다. 그것은 정상입니다.

그렇다면 실제 환경이 아닌 개발 컴퓨터를 사용하는 경우 상자를 인계받는 것을 막기 위해 메모리 양을 제한 할 수 있습니다. 이 경우 가장 쉬운 방법은 SQL Server Management Studio를 열고 서버를 마우스 오른쪽 단추로 클릭 한 다음 "속성"을 선택한 다음 "메모리"탭에서 최대 서버 메모리를 설정할 수 있습니다.

1

Greg의 대답을 무시하고 메모리를 구성 할 때 OS에 대해 전체 메모리의 10 % 이상을 비워 둡니다. SQL이 긴 쿼리에서 제어를 벗어나면 쿠션이 원격으로 들어오고 상자를 관리 할 수 ​​있기를 원합니다.

4

사실, 당신이 찾고있는 것을 얻기위한 깔끔한 작은 트릭이 있습니다. 문제/질문은 SQL Server를 적극적으로 필요로하지 않을 수도있는 메모리를 "일시적으로"포기시키고, 필요에 따라 다시 보도록 허용하는 방법입니다.

이렇게하려면 다음 스크립트를 실행 : {낮은 물 마크}과 (MB)에서 {워터 마크 (water mark)}에 대한 자신의 값

EXEC sys.sp_configure N'show advanced options', N'1' 

RECONFIGURE WITH OVERRIDE 

GO 

EXEC sys.sp_configure N'max server memory (MB)', N'{low water mark}' 

GO 

RECONFIGURE WITH OVERRIDE 

GO 

EXEC sys.sp_configure N'max server memory (MB)', N'{High water mark}' 

GO 

RECONFIGURE WITH OVERRIDE 

GO 

EXEC sys.sp_configure N'show advanced options', N'0' 

RECONFIGURE WITH OVERRIDE 

GO 

를 착용합니다.

이렇게하면 메모리를 최소량으로 강제 실행 한 다음 SQL Server에서 필요로하거나 원할 경우 즉시 다시 열 수 있습니다.

남은 일은 스크립트를 정기적으로 실행하도록 예약하는 것입니다.

권장 사항 :

SQL Server가 많이 사용되지

, 6 시간마다 자동으로 실행 해보십시오. 사용 빈도가 높은 경우 24 시간마다 한 번 실행하십시오 (예 : 한밤중 또는 하루가 시작되기 직전). 사용량은 다양합니다.

관련 문제