SQL Server/SQL Server Tip 662

SQL Server 테이블 및 인덱스 구조 아키텍처(4/4) – 비클러스터형 인덱스 구조

SQL Server 테이블 및 인덱스 구조 아키텍처(4/4) – 비클러스터형 인덱스 구조 Version : SQL Server 2005, 2008, 2008R2, 2012 비클러스터형 인덱스는 다음 두 가지 주요 차이점을 제외하고 클러스터형 인덱스와 동일한 B-tree구조를 갖는다. 기본 테이블의 데이터 행은 비클러스터형 키 기반의 순서대로 정렬되거나 저장되지 않는다. 비클러스터형 인덱스의 리프계층은 데이터 페이지 대신 인덱스 페이지로 구성 된다. 테이블이나 뷰에 클러스터형 인덱스나 힙과 함께 비크러스터형 인덱스를 정의할 수 있다. 비클러스터형 인덱스의 각 인덱스 행에는 비클러스터형 키 값과 행 로케이터가 있다. 이 로케이터는 키 값이 포함된 힙이나 클러스터형 인덱스의 데이터 행을 가리킨다. 테이블이 힙..

SQL Server 테이블 및 인덱스 구조 아키텍처(3/4) – 클러스터형 인덱스 구조

SQL Server 테이블 및 인덱스 구조 아키텍처(3/4) – 클러스터형 인덱스 구조 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 인덱스는 B-tree로 구성 된다. 인덱스 B-tree의 각 페이지를 인덱스 노드라고 한다. B-tree 맨 상위의 노드를 루트노드(root)라고 하며 최하위 노드를 리프노드(leaf)라고 한다. 루프노드와 리프노드 사이를 통틀어 중간노드(Non leaf)라고 한다. 클러스터형 인덱스의 리프노드에는 기본테이블의 데이터 페이지가 있다. 루트노드와 중간수준 노드에서는 인덱스 행을 포함하는 인덱스페이지가 있다. 각 인덱스 행에는 키 값과 함께 B-tree의 중간 수준 페이지에 대한 포인터나 인덱스 리프 수준의 데이터 행..

SQL Server 테이블 및 인덱스 구조 아키텍처(2/4) – 힙 구조

SQL Server 테이블 및 인덱스 구조 아키텍처(2/4) – 힙 구조 Version : SQL Server 2005, 2008, 2008R2, 2012 힙이란 클러스터 인덱스가 없는 테이블이다. 힙에는 힙에서 사용하는 각 파티션에 대해 index_id = 0의 sys.partitions 행이 하나 있다. select * from sys.partitions 기본적으로 힙은 단일 파티션을 사용한다. 힙이 다중 파티션을 사용하는 경우 각 파티션은 특정 파티션에 대한 데이터를 포함하는 힙 구조를 갖는다. 예를 들어 힙이 4개의 파티션을 사용하면 각 파티션마다 하나씩 총 4개의 힙이 있다. 힙의 데이터 형식에 따라 각 힙 구조에는 특정 파티션에 대한 데이터를 저장하고 관리하는 할당 단위가 하나 이상 있다. 최..

SQL Server 테이블 및 인덱스 구조 아키텍처(1/4) – 테이블 및 인덱스 구성

SQL Server 테이블 및 인덱스 구조 아키텍처(1/4) – 테이블 및 인덱스 구성 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 데이터베이스의 개체는 8KB 페이지의 컬렉션으로 저장된다. 테이블 미 및 인덱스 페이지가 구성되고 저장, 액세스 되는 방법에 대해서 4장에 걸쳐 다루어 본다. [테이블 구성] 테이블은 하나 이상의 파티션에 포함되어 있으며 각 파티션에는 데이터 행이 힙 또는 클러스터형 인덱스 구조로 포함되어 있다. 힙 또는 클러스터형 인덱스 페이지는 데이터 행의 열 유형에 따라 하나 이상의 할당 단위로 관리 된다. 페이지 할당 관리 관련 : http://sqlmvp.kr/140186842239 아래 그림은 테이블의 구성을 나타낸다. [..

SQL Server 트랜잭션 로그 아키텍처(4/4) – 미리 쓰기 트랜잭션 로그

SQL Server 트랜잭션 로그 아키텍처(4/4) – 미리 쓰기 트랜잭션 로그 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서는 미리 쓰기 로그(Write-Ahead Logging)기능을 사용하여 관련된 로그 레코드가 디스크에 기록되기 전에는 어떠한 데이터 수정 내용도 디스크에 기록되지 않도록 한다. 따라서 ACID 속이 유지 관리 된다. [Write-Ahead Logging 프로토콜] 데이터가 올바르게 저장 및 교환되었는지 그리고 장애가 발생했을 경우 데이터를 알 수 있는 상태로 복구 할 수 있는지 확인하는데 필요한 특정하게 정의된 수행 단계의 모음이다. 네트워크에 정의된 프로토콜이 일관되고 보호된 방식으로 데이터를 교환하는 것처럼 WAL 역시..

SQL Server 트랜잭션 로그 아키텍처(3/4) – 검사점 및 로그의 활성 부분

SQL Server 트랜잭션 로그 아키텍처(3/4) – 검사점 및 로그의 활성 부분 Version : SQL Server 2005, 2008, 2008R2, 2012 검사점은 현재 데이터베이스의 버퍼 캐시에 있는 커멋되지 않은 데이터 페이지를 디스크로 플러시 한다. 따라서 데이터베이스의 전체 복구 중에 처리되어야 하는 로그의 활성 부분이 최소화 된다. 전체 복구가 일어나는 동안 다음의 동작이 수행 된다. 시스템이 중단되기 전 디스크로 플러시되지 않은 로그의 수정 레코드가 롤포워드 된다. 커밋 또는 롤백 로그 레코드가 없는 불완전한 트랜잭션과 관련된 모든 수정 내용이 롤백 된다. [검사점 수행 프로세스] 검사점 레코드에는 데이터베이스를 수정한 모든 활성 트랜잭션 목록이 포함 된다. 검사점의 시작을 표시하는..

SQL Server 트랜잭션 로그 아키텍처(2/4) – 트랜잭션 로그 물리 아키텍처

SQL Server 트랜잭션 로그 아키텍처(2/4) – 트랜잭션 로그 물리 아키텍처 Version : SQL Server 2005, 2008, 2008R2, 2012 트랜잭션 로그는 데이터베이스의 무결성 보장 및 복구를 위해 사용된다. 물리적 아키텍처를 이해하면 트랜잭션 로그를 보다 효울적으로 관리 할 수 있다. 데이터베이스의 트랜잭션 로그는 하나 이상의 물리적 파일에 매핑 된다. 개념상으로 로그 파일은 로그 레코드의 문자열이다. 실제 로그 레코드의 시퀀스는 트랜잭션 로그를 구현하는 물리적 파일 집합에 효율적으로 저장 된다. SQL Server 데이터베이스 엔진은 내부적으로 각 물리 로그 파일을 여러 개의 가상 로그 파일로 나눈다. 가상 로그 파일의 크기는 고정되어 있지 않으며 물리 로그 파일에 대해 고..

SQL Server 트랜잭션 로그 아키텍처(1/4) – 트랜잭션 로그 논리 아키텍처

SQL Server 트랜잭션 로그 아키텍처(1/4) – 트랜잭션 로그 논리 아키텍처 Version : SQL Server 2005, 2008, 2008R2, 2012 데이터베이스의 무결성을 보장하기 위해서 사용되는 트랜잭션 로그의 기록 방법 및 데이터 복구에 트랜잭션 로그가 사용되는 방법을 이해하고 기본 아키텍처에 대해서 알아 보자. 이번 트랜잭션 로그 아키텍처는 총 4부로 진행 된다. SQL Server 트랜잭션 로그는 로그레코드 문자열처럼 논리적으로 작동 한다. 각 로그 레코드는 LSN(로그 시퀀스 넘버)으로 식별 된다. 각 새 로그 레코드는 LSN과 함께 로그의 논리적 끝에 작성되며 이때 LSN은 오름차순이다. 로그 레코드는 작성된 순서대로 저장 된다. 각 로그 레코드는 자신이 속한 트랜잭션 ID가..

파일 및 파일 그룹 아키텍처

파일 및 파일 그룹 아키텍처 Version : All Version SQL Server에서 데이터베이스는 운영체제의 파일 시스템에 종속 적이다. 데이터와 로그는 같은 파일에 저장되지 않으며 각 파일은 한 데이터베이스에서만 사용 된다. 파일 그룹은 명명된 파일 모음이며 백업 및 복원 작업 등의 데이터 배치 및 관리 태스크에 도움이 된다. [데이터베이스 파일] 데이터베이스 파일의 종류에는 3가지의 유형이 있다. 주 데이터 파일 : 데이터베이스의 기본 파일 이며 모든 데이터베이스에는 하나의 주 데이터 파일이 있다. 주로 사용되는 확장자는 .mdf 이다. 보조 데이터 파일 : 주 데이터 파일이 아닌 모든 데이터 파일을 구성. 데이터베이스에 따라 보조 데이터파일을 사용하지 않거나 여러 개 있을 수도 있다. 주로 ..

SQL Server 페이지 및 익스텐트 아키텍처(4/4) – 수정된 익스텐트 추적

SQL Server 페이지 및 익스텐트 아키텍처(4/4) – 수정된 익스텐트 추적 Version : SQL Server 2005, 2008, 2008R2, 2012 페이지 및 익스텐트 아키텍처의 마지막 챕터 이다. 지금까지는 페이지 및 익스텐의 구조, 익스텐트에 대한 할당 관리, 공간관리 등에 대해서 살펴 보았다. 페이지 및 익스텐트 이해 : http://sqlmvp.kr/140186753568 익스텐트 할당 미 및 빈 공간 관리 : http://sqlmvp.kr/140186842239 개체에서 사용하는 공간 관리 : http://sqlmvp.kr/140186908637 이번 시간에는 수정된 익스텐트 추적에 대해서 알아 보도록 한다. 수정된 익스텐트에 대한 이해는 백업과도 큰 관련이 있다. 백업이 이루질..