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