SQL Server/SQL Server Tip 662

CPU에 스레드 할당 및 lightweight pooling 옵션 사용

CPU에 스레드 할당 및 lightweight pooling 옵션 사용 Version : SQL Server 2005, 2008, 2008R2 기본적으로 SQL Server 인스턴스마다 각 스레드를 시작한다. Affinity를 사용하는 경우에는 운영체제에서 각 스레드를 특정 CPU에 할당 한다. 운영체제에서는 여러 SQL Server 인스턴스의 스레드를 부하에 따라 컴퓨터의 CPU에 균일하게 분산한다. 사용량이 많은 CPU에서 다른 CPU로 스레드를 이동하는 경우도 있다. 반대로 SQL Server 데이터베이스 엔진은 스레드를 CPU에 균일하게 분산하는 스케줄러 작업자 스레드를 할당 한다. Affinity mask 옵션은 ALTER SERVER CONFIGURATION을 사용하여 설정 한다. Affini..

스레드 및 태스크 아키텍처

스레드 및 태스크 아키텍처 Version : SQL Server 2005, 2008, 2008R2 스레드는 응용프로그램 논리를 여러 동시 실행 경로로 분리할 수 있게 하는 운영체제 기능이다. 이 기능은 여러 태스크를 동시에 수행 할 때 유용하다. 운영체제는 응용프로그램 인스턴스를 실행 할 때 인스턴스를 관리하는 프로세스라는 단위를 만든다. 프로세스에는 실행 스레드가 하나씩 있으며 실행 스레드는 응용 프로그램 코드가 수행하는 일련의 명령이다. 프로세스 개념 : http://sqlmvp.kr/140189245176 예를 들어 차례로 수행되는 단일 명령 집합의 경우 응용 프로그램 하나에 하나의 스레드만 있다. 그러나 복잡한 응용프로그램의 경우 차례 대로 실행 되지 않고 동시에 수행 될 수 있는데(대부분의 프로..

메모리 관리 아키텍처 – NUMA 버퍼 풀 증가 및 축소

메모리 관리 아키텍처 – NUMA 버퍼 풀 증가 및 축소 Version : SQL Server 2005, 2008, 2008R2 SQL Server에서는 각 물리적 NUMA 노드에 대해 하나의 메모리 노드가 있다. 메모리 노드는 서로 독립적으로 증가하지만 메모리를 균일하게 나누어 쓴다. 예를 들어 SQL Server가 구성되어 있는 시스템의 메모리가 16GB라고 하였을 때 Windows를 포함한 다른 응용프로그램에서 각 노드의 일부 메모리를 사용하며 SQL Server는 일부 메모리를 버퍼 풀 외부의 프로세스에 할당 한다. 또한 SQL Server는 버퍼 풀에 할당할 10GB 메모리가 있을 때 버퍼 풀 메모리는 4개의 물리적인 NUMA 노드인 N0, N1, N2, N3에 분할되며 각 노드에서 사용할 수 ..

메모리 관리 아키텍처 – NUMA 지원 방법

메모리 관리 아키텍처 – NUMA 지원 방법 Version : SQL Server 2005, 2008, 2008R2 특정 하드웨어 NUMA 노드에서 실행되는 스레드가 메모리를 할당하는 경우 SQL Server 메모리 관리자는 참조 효율을 위해 해당 NUMA 노드와 연결된 메모리에서 메모리 할당을 시도한다. 마찬가지로 버퍼풀 페이지도 해당 NUMA 노드와 연결된 메모리에서 메모리 할당을 시도 한다. 마찬가지로 버퍼풀 페이지도 하드웨어 NUMA 노드에 분산된다. 스레드가 로컬 메모리에 할당된 버퍼 페이지의 메모리에 액세스하는 것이 외부 메모리를 액세스하는 것보다 효율 적이다. 각 NUMA 노드(하드웨어 NUMA, 소프트 NUMA)에는 네트워크 I/O 처리에 사용되는 I/O 완료 포트가 연결되어 있어 여러 포..

메모리 관리 아키텍처 – NUMA(Non-Uniform Memory Access)이해

메모리 관리 아키텍처 – NUMA(Non-Uniform Memory Access)이해 Version : SQL Server 2005, 2008, 2008R2 SQL Server는 NUMA(Non-Uniform Memory Access)를 인식하며 특수한 구성 없이 NUMA 하드웨어에서 작동한다. 클럭 속도와 프로세서 수가 증가 할수록 처리하는데 필요한 메모리 대기 시간을 줄이기가 더욱 어려워진다. 이러한 문제를 피하기 위해 하드웨어 업체에서는 L3 캐시를 제공하지만 제한적이다. NUMA 아키텍처는 이 문제에 대한 포괄적인 해결책을 제공하며 SQL Server는 응용프로그램을 변경할 필요 없이 NUMA 기반 컴퓨터를 활용하도록 디자인 되었다. [NUMA 개념] 일반적인 하드웨어는 작은 프로세서 집합에 사용..

메모리 관리 아키텍처 – Hot Add 메모리

메모리 관리 아키텍처 – Hot Add 메모리 Version : SQL Server 2005, 2008, 2008R2 Hot Add 메모리는 SQL Server Enterprise 64bit 에서 지원되면 AWE가 설정되어 있는 경우 32bit에서도 사용 가능하다. Hot Add 메모리는 Windows Server 2003 Enterprise Edition, Datacenter Edition 에서만 사용할 수 있다. 또한 이 메모리를 사용하려면 하드웨어 공급업체에서 지원해야 한다. SQL Server 32bit AWE 상태에 Hot Add 메모리를 사용하려면 SQL Server 시작 옵션에서 –h 를 사용하여 서비스를 시작해야 한다. Windows Server 2003에서 PAE는 서버가 Hot Add ..

메모리 관리 아키텍처 – 버퍼 관리_페이지 쓰기

메모리 관리 아키텍처 – 버퍼 관리_페이지 쓰기 Version : SQL Server 2005, 2008, 2008R2 데이터베이스 엔진 인스턴스의 I/O에는 논리적 읽기 수 및 물리적 읽기 수가 포함되어 있다. 논리 쓰기는 버퍼캐시에 있는 페이지의 데이터가 수정 될 때 발생 한다. 물리적 쓰기는 페이지를 버퍼 캐시에서 디스크로 쓸 때 발생 한다. 페이지가 버퍼 캐시에서 수정 될 때 페이지는 디스크에 바로 기록되지 않고 대신 커밋되지 않음으로 표시 된다. 즉 페이지는 물리적으로 디스크에 기록되기 전에 두 개 이상의 논리적 쓰기를 수행 할 수 있다. 각 논리적 쓰기의 경우 트랜잭션 로그 레코드는 수정 사항을 기록하는 로그 캐시에 삽입 된다. 로그 레코드는 관련된 커밋되지 않은 페이지가 버퍼 캐시에서 제거되..

메모리 관리 아키텍처 – 버퍼 관리_페이지 읽기

메모리 관리 아키텍처 – 버퍼 관리_페이지 읽기 Version : SQL Server 2005, 2008, 2008R2 SQL Server 데이터베이스 엔진 인스턴스의 I/O에는 논리적 읽기 수 및 물리적 읽기 수가 포함되어 있다. 논리적 읽기는 데이터베이스 엔진이 버퍼캐시에서 페이지를 요청할 때마다 발생 한다. 페이지가 현재 버퍼캐시에 없는 경우 물리적 읽기가 먼저 디스크의 페이지를 캐시로 복사한다. 데이터베이스 엔진의 인스턴스로 생성된 읽기 요청은 관계형 엔진에 의해 제어되고 저장소 엔진에 의해 최적화 된다. 관계형 엔진은 테이블 검색, 인덱스 검색, 키 사용 읽기와 같은 가장 효과적인 액세스 방법을 결정 한다. 저장소 엔진 및 버퍼 관리자 구성 요소는 수행할 일반 적인 읽기 패턴을 결정하고 액세스 ..

메모리 관리 아키텍처 – 버퍼 관리

메모리 관리 아키텍처 – 버퍼 관리 Version : SQL Server 2005, 2008, 2008R2 SQL Server 데이터베이스의 주 목적은 데이터 저장과 데이터 검색이므로 데이터베이스 엔진의 특성은 집중형 디스크 I/O이다. I/O 작업은 많은 리소스를 소비하며 완료하는 데 비교적 오랜 시간이 걸리므로 SQL Server에서는 I/O의 효율성을 높이는 것이 중요하다. 버퍼 관리는 이러한 효율성을 얻기 위한 핵심 구성요소이다. 버퍼 관리 구성 요소는 데이터베이스 페이지를 액세스하고 업데이트 하기 위한 버퍼 관리자와 데이터베이스 파일 I/O를 줄이기 위한 버퍼캐시(버퍼 풀이라고도 함)의 두 가지 메커니즘으로 구성되어 있다. [버퍼 관리 작업 방법] 버퍼는 데이터 또는 인덱스 페이지와 같은 크기인..

메모리 관리 아키텍처 – Min/Max Server Memory 효과

메모리 관리 아키텍처 – Min/Max Server Memory 효과 Version : SQL Server 2005, 2008, 2008R2 Min Server Memory / Max Server Memory의 두 가지 옵션을 사용하여 SQL Server 인스턴스에서 사용하는 버퍼 풀의 메모리 양을 제어 할 수 있다. 기본적으로 SQL Server는 사용할 수 있는 시스템의 리소스에 따라 메모리를 동적으로 변경 한다. Min Server Memory 의 최소 용량은 0 이며 Max Server Memory의 최소 용량은 16MB이다. Min / Max Server Memory 설정 : http://sqlmvp.kr/140167266577 SQL Server는 프로세스로서 Max Server Memory ..