서버 메모리 서버 구성 옵션Server Memory Server Configuration Options

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

최소 서버 메모리최대 서버 메모리의 두 가지 서버 메모리 옵션을 사용하여 SQL ServerSQL Server인스턴스에서 사용하는 SQL Server 프로세스의 메모리 양(MB)을 다시 구성할 수 있습니다. 이 메모리는 SQL Server Memory Manager가 관리합니다.Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) that is managed by the SQL Server Memory Manager for a SQL Server process used by an instance of SQL ServerSQL Server.

min server memory의 기본 설정은 0이고 max server memory의 기본 설정은 2,147,483,647(MB)입니다.The default setting for min server memory is 0, and the default setting for max server memory is 2,147,483,647 megabytes (MB). 기본적으로 SQL ServerSQL Server 는 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다.By default, SQL ServerSQL Server can change its memory requirements dynamically based on available system resources. 자세한 내용은 동적 메모리 관리을 참조하세요.For more information, see dynamic memory management.

max server memory 에 지정할 수 있는 최소 메모리 양은 128MB입니다.The minimum memory amount allowable for max server memory is 128 MB.

중요

max server memory 값을 너무 높게 설정하면 SQL ServerSQL Server의 단일 인스턴스가 동일한 호스트에서 호스팅되는 다른 SQL ServerSQL Server 인스턴스와 메모리를 경쟁해야 할 수 있습니다.Setting max server memory value too high can cause a single instance of SQL ServerSQL Server might have to compete for memory with other SQL ServerSQL Server instances hosted on the same host. 그러나 이 값을 너무 낮게 설정하면 메모리 부족 및 성능 문제가 발생할 수 있습니다.However, setting this value too low could cause significant memory pressure and performance problems. max server memory 를 최소값으로 설정하면 SQL ServerSQL Server를 시작하지 못할 수도 있습니다.Setting max server memory to the minimum value can even prevent SQL ServerSQL Server from starting. 이 옵션을 변경한 후 SQL ServerSQL Server 를 시작할 수 없으면 –f 시작 옵션을 사용하여 SQL Server를 시작하고 max server memory 를 이전 값으로 다시 설정합니다.If you cannot start SQL ServerSQL Server after changing this option, start it using the –f startup option and reset max server memory to its previous value. 자세한 내용은 Database Engine Service Startup Options을(를) 참조하세요.For more information, see Database Engine Service Startup Options.

SQL ServerSQL Server는 메모리를 동적으로 사용할 수 있지만 메모리 옵션을 수동으로 설정하고 SQL ServerSQL Server 에서 액세스할 수 있는 메모리 양을 제한할 수 있습니다. can use memory dynamically; however, you can set the memory options manually and restrict the amount of memory that SQL ServerSQL Server can access. SQL ServerSQL Server에 대한 메모리 양을 설정하기 전에 OS, max_server_memory setting에 의해 제어되지 않는 메모리 할당, 기타 다른 SQL ServerSQL Server 인스턴스(컴퓨터가 SQL ServerSQL Server 전용이 아닌 경우 다른 시스템 사용)에 필요한 메모리를 총 실제 메모리에서 빼서 적합한 메모리 설정을 결정합니다.Before you set the amount of memory for SQL ServerSQL Server, determine the appropriate memory setting by subtracting, from the total physical memory, the memory required for the OS, memory allocations not controlled by the max_server_memory setting, and any other instances of SQL ServerSQL Server (and other system uses, if the computer is not wholly dedicated to SQL ServerSQL Server). 이러한 차이 값이 현재 SQL ServerSQL Server 인스턴스에 할당할 수 있는 최대 메모리 양입니다.This difference is the maximum amount of memory you can assign to the current SQL ServerSQL Server instance.

메모리 옵션 수동 설정Setting the memory options manually

서버 옵션 min server memorymax server memory를 설정하여 메모리 값 범위를 확장합니다.The server options min server memory and max server memory can be set to span a range of memory values. 이 방법은 시스템 또는 데이터베이스 관리자가 다른 응용 프로그램의 메모리 요구 사항 또는 동일한 호스트에서 실행되는 SQL ServerSQL Server의 다른 인스턴스와 함께 SQL ServerSQL Server의 인스턴스를 구성하는 데 유용합니다.This method is useful for system or database administrators to configure an instance of SQL ServerSQL Server in conjunction with the memory requirements of other applications, or other instances of SQL ServerSQL Server that run on the same host.

참고

min server memorymax server memory 는 고급 옵션입니다.The min server memory and max server memory options are advanced options. sp_configure 시스템 저장 프로시저를 사용하여 이러한 설정을 변경할 경우 고급 옵션 표시 를 1로 설정해야만 변경할 수 있습니다.If you are using the sp_configure system stored procedure to change these settings, you can change them only when show advanced options is set to 1. 이러한 설정은 서버를 다시 시작하지 않아도 즉시 적용됩니다.These settings take effect immediately without a server restart.

min_server_memory 옵션을 사용하여 SQL ServerSQL Server Memory Manager가 SQL ServerSQL Server의 인스턴스에 사용할 수 있는 최소 메모리 양을 보장할 수 있습니다.Use min_server_memory to guarantee a minimum amount of memory available to the SQL ServerSQL Server Memory Manager for an instance of SQL ServerSQL Server. SQL ServerSQL Server 는 시작할 때 min server memory 에 지정된 메모리의 양을 즉시 할당하지 않습니다. will not immediately allocate the amount of memory specified in min server memory on startup. 그러나 클라이언트 로드 때문에 메모리 사용량이 이 값에 도달하면 SQL ServerSQL Server min server memory 값을 줄이기 전에는 가 메모리를 비울 수 없습니다.However, after memory usage has reached this value due to client load, SQL ServerSQL Server cannot free memory unless the value of min server memory is reduced. 예를 들어 동일한 호스트에 여러 인스턴스 SQL ServerSQL Server이 동시에 존재할 수 있는 경우 인스턴스의 메모리를 예약하기 위해 max_server_memory 대신 min_server_memory 매개 변수를 설정합니다.For example, when several instances of SQL ServerSQL Server can exist concurrently in the same host, set the min_server_memory parameter instead of max_server_memory for the purpose of reserving memory for an instance. 또한 가상 환경에서 min_server_memory 값을 설정하여 기본 호스트의 메모리 압력을 가하는 것은 게스트 SQL ServerSQL Server 가상 머신(VM)의 버퍼 풀에서 수용 가능한 성능에 필요한 것 이상으로 메모리를 할당 해제하지 않도록 하는 데 필수적입니다.Also, setting a min_server_memory value is essential in a virtualized environment to ensure memory pressure from the underlying host does not attempt to deallocate memory from the buffer pool on a guest SQL ServerSQL Server virtual machine (VM) beyond what is needed for acceptable performance.

참고

SQL ServerSQL Server에서는 min server memory에 지정된 메모리 양을 할당하는 것이 보장되지 않습니다. is not guaranteed to allocate the amount of memory specified in min server memory. 서버의 로드 때문에 min server memory에 지정된 메모리 양을 할당할 필요가 없는 경우 SQL ServerSQL Server 는 보다 적은 메모리로 실행됩니다.If the load on the server never requires allocating the amount of memory specified in min server memory, SQL ServerSQL Server will run with less memory.

OS가 유해 메모리 압력을 겪지 않도록 max_server_memory를 사용합니다.Use max_server_memory to guarantee the OS does not experience detrimental memory pressure. 최대 서버 메모리 구성을 설정하려면 메모리 요구 사항을 결정하기 위해 SQL ServerSQL Server 프로세스의 전체 소비량을 모니터링합니다.To set max server memory configuration, monitor overall consumption of the SQL ServerSQL Server process in order to determine memory requirements. 단일 인스턴스에 대해 이러한 계산을 통해보다 정확한 결과를 얻으려면To be more accurate with these calculations for a single instance:

  • 전체 OS 메모리에서 1GB-4GB를 OS에 예약합니다.From the total OS memory, reserve 1GB-4GB to the OS itself.
  • 그런 다음 스택 크기 1 \ 계산된 최대 작업자 스레드 수 2 + -g 시작 매개 변수 3(또는 *-g가 설정되지 않은 경우 기본적으로 256MB)으로 구성된 최대 서버 메모리 컨트롤 외부의 잠재적 SQL ServerSQL Server 메모리 할당량을 뺍니다.Then subtract the equivalent of potential SQL ServerSQL Server memory allocations outside the max server memory control, which is comprised of stack size 1 \ calculated max worker threads 2 + -g startup parameter 3* (or 256MB by default if -g is not set). 남은 일은 단일 인스턴스 설정을 위한 max_server_memory를 설정하는 것입니다.What remains should be the max_server_memory setting for a single instance setup.

1 아키텍처당 스레드 스택 크기에 대한 내용은 메모리 관리 아키텍처 가이드 를 참조하세요.1 Refer to the Memory Management Architecture guide for information on thread stack sizes per architecture.

2 현재 호스트에서 선호도가 높은 CPU의 지정된 수에 대해 계산된 기본 작업자 스레드에 대한 내용은 max worker threads 서버 구성 옵션 구성 방법에 대한 설명서 페이지를 참조하세요.2 Refer to the documentation page on how to Configure the max worker threads Server Configuration Option, for information on the calculated default worker threads for a given number of affinitized CPUs in the current host.

3 -g 시작 매개 변수에 대한 자세한 내용은 데이터베이스 엔진 서비스 시작 옵션의 설명서 페이지를 참조하세요.3 Refer to the documentation page on Database Engine Service Startup Options for information on the -g startup parameter.

SQL Server Management StudioSQL Server Management Studio를 사용하여 메모리 옵션을 구성하는 방법How to configure memory options using SQL Server Management StudioSQL Server Management Studio

min server memorymax server memory의 두 가지 서버 메모리 옵션을 사용하여 SQL ServerSQL Server Memory Manager가 관리하는 SQL ServerSQL Server 인스턴스의 메모리 양(MB)을 다시 구성할 수 있습니다.Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) managed by the SQL ServerSQL Server Memory Manager for an instance of SQL ServerSQL Server. 기본적으로 SQL ServerSQL Server 는 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다.By default, SQL ServerSQL Server can change its memory requirements dynamically based on available system resources.

고정 메모리 크기를 설정하려면To set a fixed amount of memory:

  1. 개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.In Object Explorer, right-click a server and select Properties.

  2. 메모리 노드를 클릭합니다.Click the Memory node.

  3. 서버 메모리 옵션에서 원하는 최소 서버 메모리최대 서버 메모리와 동일한 양을 입력합니다.Under Server Memory Options, enter the same amount that you want for Minimum server memory and Maximum server memory.

    기본 설정을 사용하면 SQL ServerSQL Server 가 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다.Use the default settings to allow SQL ServerSQL Server to change its memory requirements dynamically based on available system resources. 최대 서버 메모리위에서 설명한 대로 설정하는 것이 좋습니다.It is recommended to set a max server memory as detailed above.

메모리의 페이지 잠금(LPIM)Lock Pages in Memory (LPIM)

이 Windows 정책은 데이터를 실제 메모리에 유지하는 프로세스를 사용하여 시스템이 디스크의 가상 메모리로 데이터를 페이징하지 않도록 방지할 수 있는 계정을 결정합니다.This Windows policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. 메모리의 페이지를 잠그면 메모리를 디스크로 페이징할 때 서버가 계속해서 응답합니다.Locking pages in memory may keep the server responsive when paging memory to disk occurs. sqlservr.exe 실행 권한이 있는 계정에 Windows 메모리의 페이지 잠금(LPIM) 사용자 권한이 부여된 경우 SQL ServerSQL Server Standard 이상 버전의 인스턴스에서 메모리의 페이지 잠금 옵션은 ON으로 설정됩니다.The Lock Pages in Memory option is set to ON in instances of SQL ServerSQL Server Standard edition and higher when the account with privileges to run sqlservr.exe has been granted the Windows Lock Pages in Memory (LPIM) user right.

SQL ServerSQL Server에 대해 메모리의 페이지 잠금 옵션을 사용하지 않도록 설정하려면 권한을 가진 계정에 대해 메모리의 페이지 잠금 사용자 권한을 제거하여 sqlservr.exe 시작 계정( SQL ServerSQL Server 시작 계정)을 실행합니다.To disable the Lock Pages In Memory option for SQL ServerSQL Server, remove the Lock Pages in Memory user right for the account with privileges to run sqlservr.exe (the SQL ServerSQL Server startup account) startup account.

이 옵션을 설정해도 SQL ServerSQL Server 동적 메모리 관리에는 영향을 미치지 않으므로 다른 메모리 클럭의 요청에 따라 확장 또는 축소할 수 있습니다.Setting this option does not affect SQL ServerSQL Server dynamic memory management, allowing it to expand or shrink at the request of other memory clerks. 메모리의 페이지 잠금 사용자 권한을 사용할 때 max server memory를 에 대한 상한값을 위에서 설명한 대로 설정하는 것이 좋습니다.When using the Lock Pages in Memory user right it is recommended to set an upper limit for max server memory as detailed above.

중요

이 옵션의 설정은 필요한 경우, 즉 sqlservr 프로세스가 페이징 아웃되고 있다는 징후가 있는 경우에만 사용해야 합니다. 이 경우 오류 17890이 아래 예제와 유사한 Errorlog에서 보고됩니다. A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%. SQL Server 2012(11.x)SQL Server 2012 (11.x)로 시작되는 추적 플래그 845는 Standard Edition이 잠긴 페이지를 사용하는 데 필요하지 않습니다.Setting this option should only be used when necessary, namely if there are signs that sqlservr process is being paged out. In this case, error 17890 will be reported in the Errorlog, resembling the below example: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%. Starting with SQL Server 2012(11.x)SQL Server 2012 (11.x), trace flag 845 is not needed for Standard Edition to use Locked Pages.

메모리의 페이지 잠금을 사용하려면To enable Lock Pages in Memory

메모리의 페이지 잠금 옵션을 사용하려면To enable the lock pages in memory option:

  1. 시작 메뉴에서 실행을 클릭합니다.On the Start menu, click Run. 열기 상자에 gpedit.msc를 입력합니다.In the Open box, type gpedit.msc.

    그룹 정책 대화 상자가 열립니다.The Group Policy dialog box opens.

  2. 그룹 정책 콘솔에서 컴퓨터 구성을 확장한 다음 Windows 설정을 확장합니다.On the Group Policy console, expand Computer Configuration, and then expand Windows Settings.

  3. 보안 설정을 확장한 다음 로컬 정책을 확장합니다.Expand Security Settings, and then expand Local Policies.

  4. 사용자 권한 할당 폴더를 선택합니다.Select the User Rights Assignment folder.

    세부 정보 창에 정책이 표시됩니다.The policies will be displayed in the details pane.

  5. 세부 정보 창에서 메모리의 페이지 잠그기를 두 번 클릭합니다.In the pane, double-click Lock pages in memory.

  6. 로컬 보안 정책 설정 대화 상자에서 sqlservr.exe 실행 권한이 있는 계정을 추가합니다( SQL ServerSQL Server 시작 계정).In the Local Security Policy Setting dialog box, add the account with privileges to run sqlservr.exe (the SQL ServerSQL Server startup account).

여러 SQL ServerSQL Server 인스턴스 실행Running multiple instances of SQL ServerSQL Server

여러 데이터베이스 엔진Database Engine인스턴스를 실행하는 경우 다음 3가지 방법으로 메모리를 관리할 수 있습니다.When you are running multiple instances of the 데이터베이스 엔진Database Engine, there are three approaches you can use to manage memory:

  • max server memory를 사용하여 위에서 설명한 대로 메모리 사용을 제어합니다.Use max server memory to control memory usage, as detailed above. 허용되는 총 메모리가 컴퓨터의 실제 메모리 합계보다 크지 않도록 주의하여 각 인스턴스의 최대값을 설정합니다.Establish maximum settings for each instance, being careful that the total allowance is not more than the total physical memory on your machine. 예상 작업이나 데이터베이스 크기에 비례하여 각 인스턴스에 메모리를 제공할 수 있습니다.You might want to give each instance memory proportional to its expected workload or database size. 이 방법은 새 프로세스나 인스턴스 시작 시 여유 메모리를 즉시 사용할 수 있다는 장점이 있습니다.This approach has the advantage that when new processes or instances start up, free memory will be available to them immediately. 단점은 모든 인스턴스를 실행하지 않는 경우 실행 중인 인스턴스가 남은 여유 메모리를 사용할 수 없다는 것입니다.The drawback is that if you are not running all of the instances, none of the running instances will be able to utilize the remaining free memory.

  • min server memory를 사용하여 위에서 설명한 대로 메모리 사용을 제어합니다.Use min server memory to control memory usage, as detailed above. 최소값의 합계가 컴퓨터의 실제 메모리 합계보다 1-2GB 작도록 각 인스턴스의 최소값을 설정합니다.Establish minimum settings for each instance, so that the sum of these minimums is 1-2 GB less than the total physical memory on your machine. 또한 해당 인스턴스의 예상 부하에 비례하여 이러한 최소값을 설정할 수 있습니다.Again, you may establish these minimums proportionately to the expected load of that instance. 이 방법은 모든 인스턴스를 동시에 실행하지 않는 경우 실행 중인 인스턴스에서 남은 여유 메모리를 사용할 수 있다는 장점이 있습니다.This approach has the advantage that if not all instances are running at the same time, the ones that are running can use the remaining free memory. 또한 이 방법은 SQL ServerSQL Server 에 적절한 양의 메모리가 최소한 할당되도록 하기 때문에 컴퓨터에 메모리를 많이 사용하는 다른 프로세스가 있을 때 유용합니다.This approach is also useful when there is another memory-intensive process on the computer, since it would insure that SQL ServerSQL Server would at least get a reasonable amount of memory. 단점은 새 인스턴스나 다른 프로세스 시작 시, 특히 메모리를 해제하기 위해 수정된 페이지를 다시 데이터베이스에 써야 하는 경우 실행 중인 인스턴스가 메모리를 해제하는 데 오랜 시간이 걸린다는 것입니다.The drawback is that when a new instance (or any other process) starts, it may take some time for the running instances to release memory, especially if they must write modified pages back to their databases to do so.

  • 아무 작업도 하지 않습니다(권장되지 않음).Do nothing (not recommended). 작업이 제공되는 첫 번째 인스턴스에서 모든 메모리를 할당합니다.The first instances presented with a workload will tend to allocate all of memory. 유휴 인스턴스나 나중에 시작된 인스턴스는 최소의 사용 가능한 메모리만 사용하여 실행될 수 있습니다.Idle instances, or instances started later, may end up running with only a minimal amount of memory available. SQL ServerSQL Server 에서는 인스턴스의 메모리 사용을 조절하지 않습니다. makes no attempt to balance memory usage across instances. 그러나 모든 인스턴스는 Windows 메모리 알림 신호에 응답하여 해당 메모리 사용 공간의 크기를 조절합니다.All instances will, however, respond to Windows Memory Notification signals to adjust the size of their memory footprint. Windows는 메모리 알림 API가 있는 응용 프로그램에서 메모리 균형을 유지하지 않고Windows does not balance memory across applications with the Memory Notification API. 단순히 시스템의 메모리 사용 가능 여부에 대한 전역 피드백만 제공합니다.It merely provides global feedback as to the availability of memory on the system.

    인스턴스를 다시 시작하지 않고 이러한 설정을 변경할 수 있으므로 사용 패턴에 가장 맞는 설정을 쉽게 찾을 수 있습니다.You can change these settings without restarting the instances, so you can easily experiment to find the best settings for your usage pattern.

SQL Server에 최대 메모리 양 제공Providing the maximum amount of memory to SQL Server

모든 SQL ServerSQL Server 버전의 프로세스 가상 주소 공간 제한까지 메모리를 구성할 수 있습니다.Memory can be configured up to the process virtual address space limit in all SQL ServerSQL Server editions. 자세한 내용은 Windows 및 Windows Server 릴리스에 대한 메모리 제한을 참조하세요.For more information, see Memory Limits for Windows and Windows Server Releases.

Examples

예 1Example A

다음 예에서는 max server memory 옵션을 4GB로 설정합니다.The following example sets the max server memory option to 4 GB:

sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'max server memory', 4096;  
GO  
RECONFIGURE;  
GO  

예 B. 현재 메모리 할당 확인Example B. Determining Current Memory Allocation

다음 쿼리는 현재 할당된 메모리에 대한 정보를 반환합니다.The following query returns information about currently allocated memory.

SELECT 
  physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB, 
    large_page_allocations_kb/1024 AS sql_large_page_allocations_MB, 
    locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB,
    virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB, 
    virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB, 
    virtual_address_space_available_kb/1024 AS sql_VAS_available_MB,
    page_fault_count AS sql_page_fault_count,
    memory_utilization_percentage AS sql_memory_utilization_percentage, 
    process_physical_memory_low AS sql_process_physical_memory_low, 
    process_virtual_memory_low AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;  

참고 항목See Also

메모리 관리 아키텍처 가이드 Memory Management Architecture Guide
성능 모니터링 및 튜닝 Monitor and Tune for Performance
RECONFIGURE(Transact-SQL) RECONFIGURE (Transact-SQL)
서버 구성 옵션(SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
데이터베이스 엔진 서비스 시작 옵션 Database Engine Service Startup Options
버전 및 SQL Server 2016의 지원되는 기능 Editions and supported features of SQL Server 2016
버전 및 SQL Server 2017의 지원되는 기능 Editions and supported features of SQL Server 2017
Linux의 SQL Server 2017 버전 및 지원되는 기능 Editions and supported features of SQL Server 2017 on Linux
Windows 및 Windows Server 릴리스에 대한 메모리 제한Memory Limits for Windows and Windows Server Releases