SQL Server 기준의 페이지와 익스텐트
데이터베이스를 구성하는 데이터 파일은 내부적으로 페이지라고 하는 8KB의 논리 단위로 구분되어 사용된다.
페이지는 테이블 등의 오브젝트에 저장된 데이터를 읽고 쓸 때의 최소 I/O 단위다.
그러나 오브젝트에 새로운 영역을 할당해야 하는 경우에는 페이지가 아니라 익스텐트라는 단위가 사용된다.
익스텐트는 8KB 페이지가 8개로 구성되어 있다.
테이블에 할당된 모든 페이지에 빈 용량이 없어지면 테이블에는 새로운 익스텐트가 할당된다.
단일 익스텐트와 혼합 익스텐트
하나의 오브젝트에 8페이지 모두를 점유하는 단일 익스텐트와
복수의 오브젝트를 공유하는 혼합 익스텐트가 존재한다.
SQL 서버는 2014까지 디폴트 동작으로 오브젝트의 초기 구성에 혼합 익스텐트를 할당했다.
디스크의 효율적인 이용이 목적이었다.
예를 들어, 신규 오브젝트에 단일 익스텐트(8개의 페이지)를 할당했는데,
오브젝트 크기가 1페이지에서 더 이상 늘어나지 않는다.
그렇다면 나머지 7페이지를 낭비하는 셈이다.
낭비되는 디스크 영역을 가능한 줄이기 위해 신규로 할당된 오브젝트에 우선 혼합 익스텐트를 할당하고
그 뒤로 사이즈가 커지면 단일 익스텐트를 할당했다.
그러나 SQL 서버 2016 이후에는 오브젝트 초기 구성부터 디폴트로 단일 익스텐트를 할당하는 것으로 변경되었다.
그 이유는 혼합 익스텐트가 단일 익스텐트보다 작업량이 많아 생기는 오버헤드 때문이다.
디스크의 효율적인 사용보다 퍼포먼스를 우선했다는 것을 알 수 있다.
다만, SQL 서버 2016 이후에는 옵션을 지정해서 디폴트의 동작을 변경할 수 는 있다.
* 한국데이터산업진흥원의 SQL 전문가 가이드 내용과 그림으로 이해하는 SQL 서버의 구조 내용을 기반으로 작성하였습니다.
'IT 이야기 > DB' 카테고리의 다른 글
[MSSQL] SQL Server 2019 SSMS 설치 방법 (0) | 2022.10.11 |
---|---|
[MSSQL] 집합 연산자 (UNION, INTERSECT, EXCEPT) 합집합, 교집합, 차집합 (0) | 2022.10.10 |
[MSSQL] 중복 제거 조회 (distinct, group by) (0) | 2022.09.16 |
[SQLP 시험대비 요약/단답형] 선택도와 카디널리티 (1) | 2022.09.15 |
[MSSQL] 문자열 자르기 (SUBSTRING, RIGHT, LEFT) (0) | 2022.09.13 |