디스크 기반 Table Storage와 메모리 최적화 테이블 스토리지 비교
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance
범주 | 디스크 기반 테이블 | 내구성 있는 메모리 최적화 테이블 |
---|---|---|
DDL | 메타데이터 정보는 데이터베이스의 기본 파일 그룹에 있는 시스템 테이블에 저장되고 카탈로그 보기를 통해 액세스할 수 있습니다. | 메타데이터 정보는 데이터베이스의 기본 파일 그룹에 있는 시스템 테이블에 저장되고 카탈로그 보기를 통해 액세스할 수 있습니다. |
구조체 | 행은 8K 페이지에 저장됩니다. 페이지는 동일한 테이블의 행만 저장합니다. | 행은 개별 행으로 저장됩니다. 페이지 구조는 없습니다. 데이터 파일의 연속하는 두 행은 서로 다른 메모리 최적화 테이블에 속할 수 있습니다. |
인덱스 | 인덱스는 데이터 행과 유사한 페이지 구조에 저장됩니다. | 인덱스 정의만 유지됩니다(인덱스 행은 유지되지 않음). 인덱스는 메모리 내에서 유지 관리되며 메모리 최적화 테이블이 데이터베이스 다시 시작의 일부로 메모리에 로드될 때 다시 생성됩니다. 인덱스 행은 유지되지 않으므로 인덱스 변경에 대한 로깅은 수행되지 않습니다. |
DML 작업 | 첫 번째 단계는 페이지를 찾은 다음 버퍼 풀로 로드하는 것입니다. 삽입 SQL Server가 클러스터형 인덱스의 행 순서를 나타내는 행을 페이지에 삽입합니다. 삭제 SQL Server가 페이지에서 삭제할 행을 찾아 삭제됨으로 표시합니다. 엽데이트 SQL Server가 페이지에서 행을 찾습니다. 키가 아닌 열에 대한 업데이트가 현재 위치에서 수행됩니다. 키 열 업데이트는 삭제 및 삽입 작업에 의해 수행됩니다. DML 작업이 완료된 후 영향을 받는 페이지는 로깅 작업을 최소화하기 위해 버퍼 풀 정책, 검사점 또는 트랜잭션 커밋의 일부로 디스크에 플러시됩니다. 페이지에서 수행되는 읽기/쓰기 작업은 모두 불필요한 I/O를 발생시킵니다. |
메모리 최적화 테이블의 경우 데이터가 메모리에 있으므로 DML 작업은 메모리에서 직접 수행됩니다. 메모리 최적화 테이블에 대한 로그 레코드를 읽고 데이터 및 델타 파일에 유지하는 백그라운드 스레드가 있습니다. 업데이트는 새 행 버전을 생성합니다. 그러나 업데이트는 삭제 후 삽입으로 기록됩니다. |
데이터 조각화 | 데이터 조작은 데이터를 조각화하여 부분적으로 채워진 페이지를 만들고 논리적으로 연속된 페이지를 디스크에서 연속하지 않도록 만듭니다. 이로 인해 데이터 액세스 성능이 저하되고 데이터 조각 모음을 수행해야 합니다. | 메모리 최적화 데이터는 페이지에 저장되지 않으므로 데이터 조각화가 발생하지 않습니다. 그러나 행이 업데이트되고 삭제되면 데이터 및 델타 파일을 압축해야 합니다. 이 작업은 병합 정책에 따라 백그라운드 MERGE 스레드에서 수행됩니다. |