다음을 통해 공유


Fabric 데이터 웨어하우징의 캐싱

적용 대상:Microsoft Fabric의 ✅ SQL 분석 엔드포인트 및 웨어하우스

데이터 레이크에서 데이터를 검색하는 것은 쿼리 성능에 상당한 영향을 미치는 중요한 IO(입출력) 작업입니다. Fabric Data Warehouse는 구체화된 액세스 패턴을 사용하여 스토리지에서 데이터 읽기를 향상시키고 쿼리 실행 속도를 높입니다. 또한 로컬 캐시를 활용하여 원격 저장소 읽기의 필요성을 지능적으로 최소화합니다.

캐싱은 IO 작업을 줄여 데이터 처리 애플리케이션의 성능을 향상시키는 기술입니다. 캐싱은 자주 액세스하는 데이터 및 메타데이터를 로컬 메모리나 로컬 SSD 디스크와 같은 빠른 스토리지 계층에 저장하므로 후속 요청을 캐시에서 직접 더 빠르게 처리할 수 있습니다. 이전에 쿼리에서 특정 데이터 집합에 액세스한 경우 후속 쿼리는 메모리 내 캐시에서 직접 해당 데이터를 검색합니다. 이 접근 방식은 원격 저장소에서 데이터를 가져오는 것보다 로컬 메모리 작업이 훨씬 빠르기 때문에 IO 대기 시간을 크게 줄여줍니다.

캐싱은 사용자에게 완전히 투명합니다. 출처에 관계없이 웨어하우스 테이블, OneLake 바로 가기, 심지어 Azure가 아닌 서비스를 참조하는 OneLake 바로 가기인지 여부에 관계없이 쿼리는 액세스하는 모든 데이터를 캐시합니다.

이 문서의 뒷부분에서는 두 가지 유형의 캐시에 대해 설명합니다.

  • 메모리 내 캐시
  • 디스크 캐시

메모리 내 캐시

쿼리는 저장소에서 데이터에 액세스하고 검색할 때 데이터를 원래 파일 기반 형식에서 인메모리 캐시의 고도로 최적화된 구조로 트랜스코딩하는 변환 프로세스를 수행합니다.

인메모리 캐시가 채워지는 방법을 표시하는 다이어그램입니다.

캐시의 데이터는 분석 쿼리에 최적화된 압축 열 형식으로 구성됩니다. 데이터의 각 열은 다른 열과 분리되어 함께 저장되므로 유사한 데이터 값이 함께 저장되므로 압축률이 높아져 메모리 공간이 줄어듭니다. 쿼리가 집계 또는 필터링과 같은 특정 열에 대한 작업을 수행해야 하는 경우 엔진은 다른 열의 불필요한 데이터를 처리할 필요가 없으므로 더 효율적으로 작업할 수 있습니다.

또한 이 열 형식 스토리지는 병렬 처리에도 도움이 되므로 대규모 데이터 세트에 대한 쿼리 실행 속도를 크게 높일 수 있습니다. 엔진은 최신 다중 코어 프로세서를 활용하여 여러 열에서 동시에 작업을 수행할 수 있습니다.

이 접근 방식은 쿼리가 대량의 데이터를 검사하여 집계, 필터링 및 기타 데이터 조작을 수행하는 분석 워크로드에 특히 유용합니다.

디스크 캐시

특정 데이터 세트는 너무 커서 인메모리 캐시 내에 수용할 수 없습니다. 이러한 데이터 세트에 대한 빠른 쿼리 성능을 유지하기 위해 웨어하우스는 디스크 공간을 인메모리 캐시에 대한 보완적인 확장으로 활용합니다. 인메모리 캐시에 로드되는 모든 정보는 SSD 캐시로 직렬화됩니다.

인메모리 및 SSD 캐시가 채워지는 방식을 나타내는 다이어그램입니다.

인메모리 캐시는 SSD 캐시에 비해 용량이 작기 때문에 인메모리 캐시에서 제거된 데이터는 오랜 기간 동안 SSD 캐시 내에 유지됩니다. 후속 쿼리에서 이 데이터를 요청하면 원격 저장소에서 가져오는 것보다 훨씬 빠른 속도로 SSD 캐시에서 인메모리 캐시로 검색되므로 궁극적으로 더 일관된 쿼리 성능을 제공합니다.

SSD에서 인메모리 캐시가 채워지는 방법을 표시하는 다이어그램입니다.

캐시 관리

캐싱은 지속적으로 활성 상태로 유지되며 백그라운드에서 원활하게 작동하므로 사용자의 개입이 필요하지 않습니다. 캐싱을 사용하지 않도록 설정하면 쿼리 성능이 눈에 띄게 저하될 수 있으므로 사용 중지할 필요는 없습니다.

캐싱 메커니즘은 Microsoft Fabric 자체에서 오케스트레이션 및 유지되며, 사용자에게 캐시를 수동으로 지울 수 있는 기능을 제공하지 않습니다.

전체 캐시 트랜잭션 일관성을 통해 DML(데이터 조작 언어) 작업과 같이 저장소의 데이터가 처음 인메모리 캐시에 로드된 후 수정되어도 일관된 데이터가 생성됩니다.

캐시가 용량 임계값에 도달하고 새 데이터를 처음으로 읽을 때 가장 긴 기간 동안 사용되지 않은 상태로 남아 있는 개체가 캐시에서 제거됩니다. 이 프로세스는 새 데이터의 유입을 위한 공간을 만들고 최적의 캐시 사용률 전략을 유지하기 위해 제정되었습니다.