디스크 기반 테이블 스토리지와 메모리 액세스에 최적화된 테이블 스토리지 비교

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

범주 디스크 기반 테이블 지속성 메모리 최적화 테이블
DDL 메타데이터 정보는 데이터베이스의 기본 파일 그룹에 있는 시스템 테이블에 저장되고 카탈로그 보기를 통해 액세스할 수 있습니다. 메타데이터 정보는 데이터베이스의 기본 파일 그룹에 있는 시스템 테이블에 저장되고 카탈로그 보기를 통해 액세스할 수 있습니다.
구조체 행은 8K 페이지에 저장됩니다. 페이지는 동일한 테이블의 행만 저장합니다. 행은 개별 행으로 저장됩니다. 페이지 구조는 없습니다. 데이터 파일의 두 행은 서로 다른 메모리 최적화 테이블에 속할 수 있습니다.
인덱스 인덱스는 데이터 행과 유사한 페이지 구조에 저장됩니다. 인덱스 정의만 유지됩니다(인덱스 행은 유지되지 않음). 인덱스는 메모리 내 유지 관리되며 메모리 최적화 테이블이 데이터베이스 다시 시작의 일부로 메모리에 로드될 때 다시 생성됩니다. 인덱스 행은 유지되지 않으므로 인덱스 변경에 대한 로깅이 수행되지 않습니다.
DML 작업 첫 번째 단계는 페이지를 찾은 다음 버퍼 풀로 로드하는 것입니다.

삽입
SQL Server는 클러스터형 인덱스에 대한 행 순서를 나타내는 행을 페이지에 삽입합니다.

Delete
SQL Server는 페이지에서 삭제할 행을 찾아 삭제된 행을 표시합니다.

엽데이트
SQL Server는 페이지에서 행을 찾습니다. 키가 아닌 열에 대한 업데이트가 현재 위치에서 수행됩니다. 키 열 업데이트는 삭제 및 삽입 작업에 의해 수행됩니다.

DML 작업이 완료되면 영향을 받는 페이지는 최소 로깅 작업에 대한 버퍼 풀 정책, 검사점 또는 트랜잭션 커밋의 일부로 디스크로 플러시됩니다. 페이지에서 읽기/쓰기 작업을 모두 수행하면 불필요한 I/O가 발생합니다.
메모리 최적화 테이블의 경우 데이터가 메모리에 있으므로 DML 작업은 메모리에서 직접 수행됩니다. 메모리 최적화 테이블에 대한 로그 레코드를 읽고 데이터 및 델타 파일에 유지하는 백그라운드 스레드가 있습니다. 업데이트는 새 행 버전을 생성합니다. 그러나 업데이트는 삭제 후 삽입으로 기록됩니다.
데이터 조각화 데이터 조작은 데이터를 조각화하여 부분적으로 채워진 페이지와 디스크에서 연속되지 않는 논리적으로 연속된 페이지로 이어집니다. 이로 인해 데이터 액세스 성능이 저하되고 데이터 조각 모음을 수행해야 합니다. 메모리 최적화 데이터는 페이지에 저장되지 않으므로 데이터 조각화가 없습니다. 그러나 행이 업데이트되고 삭제되면 데이터 및 델타 파일을 압축해야 합니다. 이 작업은 병합 정책에 따라 백그라운드 MERGE 스레드에서 수행됩니다.

참고 항목

메모리 최적화 개체에 대한 스토리지 만들기 및 관리