인스턴스 당 SQL Server Express 메모리 및 CPU 제한이 있습니까?


32

서버에 8GB의 RAM이 있고 4 개의 SQL Server Express 인스턴스를 실행하는 경우 SQL Server에서 사용하는 총 메모리 제한은 1GB 또는 4GB입니까?

서버가 많은 자원을 가지고 있다고 가정 할 때 각 데이터베이스가 자원을 더 잘 사용할 수 있도록 이와 같은 다중 인스턴스를 실행하는 것이 바람직합니까?

답변:


27

서버에 8GB의 RAM이 있고 4 개의 SQL Express 인스턴스를 실행하는 경우 SQL Server에서 사용하는 총 메모리 제한은 1GB 또는 4GB입니까?

각 인스턴스는 버퍼 풀에 최대 1GB의 메모리를 사용할 수 있습니다 . 모든 메모리 할당이 버퍼 풀을 통과하는 것은 아니기 때문에 각 인스턴스는 총 1GB를 약간 초과 할 수 있습니다. 귀하의 경우, 4 개의 인스턴스가 버퍼 풀에 사용하는 최대 메모리는 4GB입니다.

BOL 추출물

확인하기 위해 SQL Server 2008 Express 데이터베이스 엔진의 두 인스턴스 를 시작 하고 (별도의) 버퍼 풀을로드하기 위해 몇 가지 활동을 수행 한 다음 DBCC MEMORYSTATUS 또는 sys.dm_os_buffer_descriptors DMV를 사용하여 버퍼 수를 계산합니다 .

아래 의 실제 메모리 사용량 은 데이터베이스 엔진의 각 인스턴스 에서 시스템 DMV sys.dm_os_process_memory 에 대한 동시 쿼리를 사용하여 얻은 것입니다 .

SELECT 
    dopm.physical_memory_in_use_kb 
FROM sys.dm_os_process_memory AS dopm;

산출:

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

전체 물리적 메모리 사용량에는 앞에서 언급 한 것처럼 버퍼 풀 사용량 이상이 포함되므로 이들 각각은 1GB를 약간 초과합니다.

서버가 많은 자원을 가지고 있다고 가정 할 때 각 데이터베이스가 자원을 더 잘 사용할 수 있도록 이와 같은 다중 인스턴스를 실행하는 것이 바람직합니까?

각 인스턴스의 데이터베이스가 기능적으로 독립적 인 경우 최소한 이러한 방식으로 여러 Express 인스턴스를 실행하는 것이 가능하지만 구성에주의를 기울여야하고 유지 관리가 더 복잡해질 수 있습니다.

의도 한 용도가 라이센스와 일치하는 경우 완전한 기능을 갖춘 (그리고 매우 저렴한) Developer Edition과 같은 다른 에디션을 사용하는 것이 더 좋습니다. 이 시점에서 분명한 답변을 얻으려면 상황에 대해 더 많이 말해야합니다.


3
또한 명쾌한 독자의 경우 : SQL Server Database Enginemeans A Single Instance. 연결할 새 대화 상자 서버 (예 : localhost\devvs localhost\test)를 새 "인스턴스"또는 새 "엔진" 으로 변경해야 할 때마다 . 그냥 정리하겠다고 생각 했어요
jcolebrand

7

별도의 프로세스가 있으므로 모든 인스턴스는 개별적으로 계산됩니다.


1
리미터가 모든 프로세스에 적용되지 않는다고 확신한다고 가정합니까?

-8

SQL Express 에서 데이터베이스 엔진은 1GB RAM 만 사용할 수 있으며 DB는 10GB보다 클 수 없습니다.

따라서 4 개의 인스턴스는 여전히 1GB RAM을 공유해야합니다.

http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx 에서 훨씬 더 자세한 내용을 확인할 수 있습니다 .

스택 오버플로에 대한 비슷한 토론에 따르면 이것이 BTW의 정답이라고 답할 수 있습니다.

이 페이지는 SQL Server Express 2005에 관한 내용에도 동일하게 적용됩니다. http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- per-instance.html


3
반드시 따라야하는 것은 아닙니다-서버 또는 인스턴스 당 1 개의 엔진입니까?

1
그것은 그것을 의미하지만 메모리 한계 라인에서 그것을 놓칠 수도 있습니다.

1
인터넷에 있기 때문에 사실이어야합니다. 그들은 인터넷에 어떤 문제가 발생하지 않도록했습니다. ~ 여기서 문제가된다고 말하는 것은 모든 SQL Express를 영원히 제한하기위한 목적으로 만 OS에 관리 프로세스 나 구워진 것이 있어야한다는 것입니다. 나는 실제로 그런 일이 일어나지 않았다고 생각합니다 (일명 산소를들이 마시고 논리를 잘 따를 수 있다는 사실에 근거하여 절대로 발생하지 않았습니다). 문제의 사실은 프로세스 자체가 RAM의 양을 관리한다는 것입니다 익숙한.
jcolebrand

2
당연히 나쁜 답변이 무엇인지에 대해 사람들에게 다운 보트를 제거하도록 요청하는 것은 인용 한 출처에 상관없이 귀하에게 투표하지 않을 것입니다. 소스를 인용하려면 여러 인스턴스를로드하고 실제로드를 메모리에 표시하십시오. 이것이 확실히 알 수있는 유일한 방법입니다. 또는 SQL Express의 동작을 제어하는 ​​Microsoft 코드를 보여주십시오. 각 서비스는 위에서 아래로 자체적으로 포함되므로 항상 인스턴스 별 관리입니다. 모든 관리 서비스는 포트를 통해 작동합니다.
jcolebrand

2
Maximum memory utilized (SQL Server Database Engine)그들은 라인에 것처럼 그들이 거기에 같은 용어를 사용하는 방법주의 사항 : Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1(집에서 그 연주에, 그 지점은 동일한 측정 있다는 것입니다) msdn.microsoft.com/en-us/library/... 또한 나는 SO에 대한 답이 잘못 잘못되었습니다. "1 코어 또는 4 소켓"으로 시작하면 편집기는 복사하여 올바르게 붙여 넣기조차 할 수 없습니다.
jcolebrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.