locks 옵션

locks 옵션을 사용하여 데이터베이스 엔진이 잠금에 사용하는 메모리 양을 제한하는 최대 사용 가능 잠금 수를 설정할 수 있습니다. 기본 설정은 0이며 데이터베이스 엔진이 시스템 요구 사항 변경에 따라 동적으로 잠금 구조를 할당하거나 할당 취소할 수 있습니다.

locks를 0으로 설정한 상태로 서버를 시작하면 잠금 관리자가 초기 2,500개의 잠금 구조 풀에 사용할 메모리를 데이터베이스 엔진으로부터 충분하게 확보합니다. 잠금 풀을 모두 사용하면 풀에 사용할 추가 메모리를 확보합니다.

일반적으로 데이터베이스 엔진 메모리 풀에서 사용 가능한 잠금 풀에 메모리가 더 많이 필요하고 컴퓨터 메모리를 더 사용할 수 있는 경우 max server memory 임계값에 도달하지 않았으면 데이터베이스 엔진은 잠금 요청을 만족시킬 수 있도록 동적으로 메모리를 할당합니다. 그러나 이 메모리 할당으로 인해 운영 체제 수준에서 페이징이 발생하는 경우, 예를 들어 SQL Server 인스턴스와 같은 컴퓨터에서 실행되는 다른 응용 프로그램이 이 메모리를 사용하면 잠금 공간이 추가로 할당되지 않습니다. 동적 잠금 풀은 데이터베이스 엔진에 할당된 메모리의 60% 이상은 확보하지 못합니다. 잠금 풀이 데이터베이스 엔진 인스턴스에 의해 확보된 메모리의 60%에 도달하거나 컴퓨터에 더 이상 사용 가능한 메모리가 없는 경우 잠금에 대한 요청을 추가하면 오류가 발생됩니다.

SQL Server가 잠금을 동적으로 사용하는 것이 권장 구성입니다. 그러나 잠금을 설정하여 잠금 리소스를 동적으로 할당하는 SQL Server의 기능을 무시할 수 있습니다. 잠금이 0 이외의 값으로 설정되면 데이터베이스 엔진은 잠금에 지정된 값보다 많은 잠금을 할당할 수 없습니다. SQL Server에서 사용할 수 있는 잠금 수를 넘었다는 메시지를 표시하면 이 값을 늘립니다. 각 잠금은 잠금 하나당 96바이트의 메모리를 사용하므로 이 값을 늘리면 서버에서 전용으로 사용하는 메모리 양을 늘려야 합니다.

또한 잠금 옵션은 잠금 에스컬레이션이 수행될 때 영향을 줍니다. locks가 0으로 설정된 경우 현재 잠금 구조에서 사용되는 메모리가 데이터베이스 엔진 메모리 풀의 40%에 도달하면 잠금 에스컬레이션이 발생합니다. 잠금이 0으로 설정되지 않은 경우 잠금 수가 잠금에 지정된 값의 40%에 도달하면 잠금 에스컬레이션이 수행됩니다

잠금 옵션은 고급 옵션입니다. sp_configure 시스템 저장 프로시저를 사용하여 설정을 변경하는 경우 show advanced options 옵션이 1로 설정되어 있을 때만 locks를 변경할 수 있습니다. 이 설정은 서버를 다시 시작한 후에 적용됩니다.

NUMA(Non-Uniform Memory Access)를 사용하는 컴퓨터에서 잠금 설정은 NUMA 노드별로 적용되므로 4노드 컴퓨터에서 10,000 설정을 사용하면 40,000개의 잠금이 허용됩니다. NUMA 노드의 수는 다음 쿼리를 사용하여 확인할 수 있습니다.

SELECT COUNT(DISTINCT parent_node_id)
FROM sys.dm_os_schedulers 
WHERE parent_node_id <> 32

참고 항목

개념

잠금 및 행 버전 관리
잠금 에스컬레이션(데이터베이스 엔진)
서버 구성 옵션 설정

관련 자료

RECONFIGURE(Transact-SQL)
sp_configure(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기