SQL Server가 더 많은 서버 메모리를 사용하는 이유는 무엇입니까?


36

SQL Server가 서버 RAM의 87.5 %를 소비하고 있습니다. 최근에는 속도 저하와 같은 많은 성능 병목 현상이 발생했습니다. 이 문제를 조사했습니다. 인터넷에서 찾을 수있는 일반적인 솔루션 중 하나는 SQL Server의 최대 제한을 설정하는 것입니다. 이것은 이루어졌고 많은 개선이 이루어졌다. 최대 메모리 값이 설정되지 않은 경우 SQL Server가 리소스를 계속 소비하는 이유를 알고 싶습니다.


3
SQL Server의 RAM 사용이 병목 현상의 원인이라고 어떻게 판단 했습니까? 뭐가 느려? 그렇다면 가능한 많은 RAM을 사용하거나 예상보다 더 많은 RAM을 사용하는 경우 SQL Server가 더 효율적 이어야합니다 . 그리고 SQL Server가 메모리를 사용하도록 설계되어 있기 때문에 문제가있는 다른 응용 프로그램이 서버에있는 경우 다른 응용 프로그램으로 옮깁니다 .
Aaron Bertrand

나는 여기에 방법을 사용했다. lucidica.com/help/got-sql-eating-up-ram 그것이 도움이되었는지 알려주세요 :) Kind related , Nikita.
Nikita Kosousov

답변:


48

SQL Server는 허용하는만큼의 메모리를 사용합니다 . 기본적으로이 숫자는 컴퓨터의 숫자 메모리의 100 %를 포함합니다. 그것이 당신이보고있는 것을보고있는 이유입니다. SQL Server에 24GB의 메모리를 제공하면 SQL Server는 24GB의 메모리를 사용하기 위해 최선을 다할 것입니다. 그런 다음 SQL Server와 OS가 리소스와 싸우고 있으며 항상 성능이 저하됩니다.

max server memory구성 제한 을 설정하면 SQL Server가 버퍼 풀에 할당 할 수있는 양 (가상적으로 데이터 페이지와 프로 시저 캐시를 저장하는 위치)이 제한됩니다. SQL Server에는 다른 메모리 담당자가 있으므로 특정 버전 (2008 R2 이하)의 max server memory경우 버퍼 풀만 제어합니다. 그러나 이것은 항상 가장 큰 메모리 소비자가 될 것입니다.

최소 및 최대 서버 메모리의 영향에 대한 TechNet 참조

최소 서버 메모리 및 최대 서버 메모리 구성 옵션은 Microsoft SQL Server 데이터베이스 엔진의 버퍼 풀에서 사용되는 메모리 양의 상한 및 하한을 설정합니다.

OS에 얼마나 많은 메모리를 남겨 두어야하는지에 대한 질문 은 일반적으로 논쟁의 여지가 있습니다. 실제로는 모든 프로세스가 주로 서버에서 실행중인 다른 프로세스 에 따라 다릅니다 . 서버가 진정한 전용 서버라면 거의 그렇지 않습니다. 내가보고 싶은 적어도 4기가바이트의 운영 체제 메모리 (더욱 큰 하드웨어 상자를 참조). 그러나 가장 중요한 것은 사용되지 않은 메모리의 양을 모니터링하십시오. 사용 가능하고 (perfmon을 통해 모니터링 할 수 있음) 사용되지 않는 메모리 (물론 코너 상황에 대해 항상 작은 버퍼를 남겨 두는 경우)에주의하면 SQL Server에 더 많은 메모리를 제공하십시오.


11

SQL Server는 기본적으로 서버의 모든 메모리를 사용하도록 설계되었습니다. 그 이유는 SQL Server가 RAM의 데이터베이스에있는 데이터를 캐시하여 사용자가 필요할 때마다 디스크에서 데이터를 읽어야 할 때보 다 더 빠르게 데이터에 액세스 할 수 있기 때문입니다. SQL Server가 디스크 IO 요구 사항과 동일한 데이터를 필요로 할 때마다 디스크로 이동해야한다면 엄청나게 높을 것입니다.

일반적으로 사람들은 Windows에 약 4GB의 RAM을 남겨 두는 것이 좋지만 실제로 서버에서 실행되는 소프트웨어의 양, 사용중인 SQL Server의 구성 요소 (모든 구성 요소가 해당 설정을 따르는 것은 아님) 등에 따라 다릅니다.


6

이것은 SQL 재시작없이 즉시 작동합니다.

서버 메모리 서버 구성 옵션

min server memorymax server memory 두 서버 메모리 옵션을 사용하여 SQL Server 인스턴스에 대해 SQL Server 메모리 관리자가 관리하는 메모리 양 (MB)을 재구성하십시오. 기본적으로 SQL Server는 사용 가능한 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다.

고정 메모리 양을 구성하는 절차 고정 메모리 양을 설정하려면 :

  1. 개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오.
  2. 메모리 노드를 클릭하십시오.
  3. 서버 메모리 옵션에서 최소 서버 메모리 및 최대 서버 메모리에 원하는 양을 입력하십시오.

기본 설정을 사용하면 SQL Server가 사용 가능한 시스템 리소스를 기반으로 메모리 요구 사항을 동적으로 변경할 수 있습니다. 최소 서버 메모리의 기본 설정은 0이고 최대 서버 메모리의 기본 설정은 2147483647MB입니다.

이게 도움이 되길 바란다!



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.