次の方法で共有


メモリ内キャッシュとディスク キャッシュ

適用対象:✅ Microsoft Fabric の SQL 分析エンドポイントおよびウェアハウス

データ レイクからデータを取得することは、クエリのパフォーマンスに大きな影響を与える重要な入出力 (IO) 操作です。 Fabric Data Warehouse では、ストレージからのデータ読み取りを強化し、クエリの実行速度を高めるために、洗練されたアクセス パターンを採用しています。 さらに、ローカル キャッシュを活用することで、リモート ストレージ読み取りの必要性をインテリジェントに最小限に抑えます。

キャッシュは、IO 操作を減らすことでデータ処理アプリケーションのパフォーマンスを向上させる手法です。 キャッシュによって、頻繁にアクセスされるデータとメタデータが、ローカル メモリやローカル SSD ディスクなどの高速なストレージ層に保存されるため、後続の要求をキャッシュから直接、より迅速に処理できます。 特定のデータ セットがクエリによって以前にアクセスされている場合、後続のクエリでは、そのデータがメモリ内キャッシュから直接取得されます。 ローカル メモリ操作はリモート ストレージからデータをフェッチする場合と比べて特に高速であるため、この方法で IO 待機時間が大幅に短縮されます。

Fabric Data Warehouse のメモリ内キャッシュとディスク キャッシュは、ユーザーに対して完全に透過的です。 配信元に関係なく、ウェアハウス テーブル、OneLake ショートカット、または Azure 以外のサービスを参照する OneLake ショートカットのいずれであっても、クエリでアクセスするすべてのデータがキャッシュされます。

この記事で後述するキャッシュには、 メモリ内キャッシュディスク キャッシュの 2 種類があります。 結果セットのキャッシュ については、別の記事で説明します。

メモリ内キャッシュ

クエリでストレージにあるデータにアクセスして取得する際に、元のファイルベースの形式からメモリ内キャッシュの高度に最適化された構造にデータをトランスコードする変換プロセスが実行されます。

メモリ内キャッシュの設定方法を示す図。

キャッシュ内のデータは、分析クエリ用に最適化された圧縮列形式で編成されます。 各データ列を一緒に、他の列とは別にして保存することで、同様のデータ値を一緒に保存でき、より優れた圧縮が可能になり、メモリ占有領域が減少します。 クエリで特定の列に対して集計やフィルター処理などの操作を実行する必要がある場合、他の列の不要なデータを処理する必要がないため、エンジンがより効率的に動作できるようになります。

さらに、この列形式ストレージは並列処理にも適しており、大規模なデータセットのクエリ実行を大幅に高速化できます。 エンジンで最新のマルチコア プロセッサを利用して、複数の列に対して同時に操作を実行できます。

このアプローチは、クエリで大量のデータをスキャンして集計、フィルター処理、その他のデータ操作を実行する分析ワークロードに特に役立ちます。

ディスク キャッシュ

一部のデータセットは大きすぎて、メモリ内キャッシュに格納しきれません。 これらのデータセットの迅速なクエリ パフォーマンスを維持するために、Warehouse では、メモリ内キャッシュを補完的に拡張するものとしてディスク領域を利用します。 メモリ内キャッシュに読み込まれる情報は、SSD キャッシュにもシリアル化されます。

メモリ内キャッシュと SSD キャッシュの設定方法を示す図。

メモリ内キャッシュの容量が SSD キャッシュと比較して小さい場合、メモリ内キャッシュから削除されたデータは、SSD キャッシュ内に長期間保持されます。 後続のクエリでこのデータが要求されると、SSD キャッシュからメモリ内キャッシュに取得される時間は、リモート ストレージからフェッチされた場合よりも大幅に速くなり、最終的には一貫性のあるクエリ パフォーマンスが得られます。

SSD キャッシュからのメモリ内キャッシュの設定方法を示す図。

キャッシュ管理

キャッシュは常にアクティブであり、バックグラウンドでシームレスに動作します。ユーザーの介入は必要ありません。 キャッシュを無効にする必要はありません。これを行うと、必然的にクエリ パフォーマンスが著しく低下する可能性があるためです。

キャッシュ メカニズムは Microsoft Fabric 自体によって調整され、維持されます。ユーザーがキャッシュを手動でクリアすることはできません。

完全なキャッシュ トランザクションの整合性により、ストレージ内のデータが最初にメモリ内キャッシュに読み込まれた後にデータ操作言語 (DML) 操作などで変更された場合に、整合性のあるデータが生成されます。

キャッシュが容量のしきい値に達したときに新しいデータが初めて読み取られると、最も長い期間未使用になっているオブジェクトがキャッシュから削除されます。 このプロセスは、新しいデータを入れるスペースを作り、最適なキャッシュ使用率の戦略を維持するために実行されます。