전체 글 1383

프로시저와 임시테이블, 그리고 리컴파일

프로시저와 임시테이블, 그리고 리컴파일 Version : SQL Server 2005, 2008, 2008R2, 2012 대부분의 자료에서 보면 보안, 성능 측면에서 stored procedure 사용을 권장한다. 보안 적인 측면에서는 ad-hoc 쿼리의 실행 권한을 방지 함으로써 허가 받지 않는 데이터 변경을 방지 하고 성능 적인 측면에서는 실행 계획 재사용 및 컴파일 비용의 감소를 통해 성능상 이점을 지향 한다. 그렇다면 성능 적인 측면에서 프로시저를 사용하면 무조건 compile(recompile)이 발생하지 않을까? 다음 시나리오를 통해 알아 보자. 우리는 프로시저의 리컴파일에 대해서 알아 보기 위해 프로시저 내에서 임시 테이블을 생성하는 쿼리를 작성 하였다. 임시 테이블이라는 것은 TempDB에..

access check cache 크기에 따른 성능 문제

access check cache 크기에 따른 성능 문제 Version : SQL Server 2005, 2008, 2008R2, 2012 데이터베이스 개체를 SQL Server에서 액세스 할 때 액세스 검사는 access check result cache라는 내부 구조에 캐시 된다. 캐시의 크기가 너무 크거나 너무 작은 경우 성능에 문제가 발생 할 수 있다. 예를 들어 너무 많은 메모리를 사용하는 경우 access check result cache 크기를 줄이는 것이 좋다. 또한 사용 권한을 다시 계산하여 높은 CPU 사용량이 발생할 경우 access check result cache 크기를 늘려야 한다. sp_configure의 access check cache quota 및 access check ..

Hot Add CPU

Hot Add CPU Version : SQL Server 2005, 2008, 2008R2 Hot Add Memory와 비슷하게 CPU 또한 온라인 중에 추가 할 수 있다. Hot Add Memory : http://sqlmvp.kr/140190545122 SQL Server 2008 부터 지원하는 Hot Add CPU는 실행 중인 시스템에 CPU를 동적으로 추가할 수 있는 기능이다. CPU는 새 하드웨어를 추가하여 물리적으로 추가하거나 온라인으로 하드웨어를 분할하여 논리적으로 추가하거나 가상화 계층을 통해 가상으로 추가할 수 있다. [Hot Add CPU 요구사항] Hot Add CPU를 지원하는 하드웨어 64비트 버전의 Windows Server 2008 Datacenter Itanium 기반 Wi..

스레드 및 파이버 실행

스레드 및 파이버 실행 Version : SQL Server 2005, 2008, 2008R2 Windows Server에서는 1부터 31까지 숫자 우선 순위 시스템을 사용하여 스레드 실행 일정을 예약한다. 0은 운영체제용으로 예약되며 여러 스레드가 실행을 위해 대기하고 있을 때 Windows에서는 우선 순위가 가장 높은 스레드를 디스패치한다. 디스패치 개념 : http://sqlmvp.kr/140190107899 기본적으로 SQL Server의 인스턴스 우선순위는 7이다. 이 기본값은 다른 응용 프로그램에 영향을 주지 않고 SQL Server 스레드가 충분한 CPU 리소스를 얻을 수 있는 순위를 제공한다. SQL Server의 우선 순위를 높이려면 priority boost 옵션을 사용하여 우선순위 1..

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 ..