パフォーマンス改善の実装

Microsoft Fabricでデータを変換して分析する

Luis Silva

Solution Architect - Data & AI

最適化戦略

  • Fabric アイテムの設計を最適化する
  • スケールアップ
  • スケールアウト
Microsoft Fabricでデータを変換して分析する

SQL の最適化

  • 必要な列と処理のみに絞ってクエリする

すべての列から必要な列だけを選択するように減らした SQL の SELECT 文の例

Microsoft Fabricでデータを変換して分析する

SQL の最適化

  • 必要な列と処理のみに絞ってクエリする
  • 可能な限り小さいデータ型を使う

数値列のデータ型を BIGINT から INT に変更した CREATE TABLE 文の例

Microsoft Fabricでデータを変換して分析する

SQL の最適化

  • 必要な列と処理のみに絞ってクエリする
  • 可能な限り小さいデータ型を使う
  • スタースキーマを採用する

ファクトテーブルと関連ディメンションテーブルを持つスタースキーマの図

Microsoft Fabricでデータを変換して分析する

SQL の最適化

  • 必要な列と処理のみに絞ってクエリする
  • 可能な限り小さいデータ型を使う
  • スタースキーマを採用する
  • システムビューでクエリ使用状況を監視する
SELECT *
FROM sys.dm_exec_requests;
Microsoft Fabricでデータを変換して分析する

ノートブックの最適化

  • Spark History Server を活用する

Spark UI のウェブページのスクリーンショット

Microsoft Fabricでデータを変換して分析する

ノートブックの最適化

  • Spark History Server を活用する
  • 未使用時はアクティブな Spark セッションを停止する
Microsoft Fabricでデータを変換して分析する

ノートブックの最適化

  • Spark History Server を活用する
  • 未使用時はアクティブな Spark セッションを停止する
  • 結合時は、実行前にメモリ上のデータ量を減らす
Microsoft Fabricでデータを変換して分析する

データフローの最適化

  • ソートなど高コスト処理を最小化する

不要ならソート処理を省いたデータフロー例

Microsoft Fabricでデータを変換して分析する

データフローの最適化

  • ソートなど高コスト処理を最小化する
  • クエリ折りたたみ(Query Folding)
    • 処理をデータソース側にオフロードする

クエリ折りたたみの有無で、処理がデータソース外かデータソース側かに分かれる例

Microsoft Fabricでデータを変換して分析する

データフローの最適化

  • ソートなど高コスト処理を最小化する
  • クエリ折りたたみ(Query Folding)
    • 処理をデータソース側にオフロードする
  • Staging のオン/オフ
    • 小規模データや単純変換では無効化
    • 大規模データや複雑変換では有効化

データフローのクエリで Enable Staging オプションを示すスクリーンショット

Microsoft Fabricでデータを変換して分析する

スケールアップ

  • SKU サイズを増やす
  • 高い SKU = 計算リソース増

最小の F2 から最大の F2048 までの Fabric Azure SKU 一覧表 v

Microsoft Fabricでデータを変換して分析する

スケールアップ

vCore 数を増やして Fabric 容量をスケールアップする例の図解

例: F64(8 vCore)から F128(16 vCore)へスケールアップ

Microsoft Fabricでデータを変換して分析する

スケールアウト

  • 一部アイテムを別の Fabric 容量へ移動
  • ワークロードを分離
    • 本番と非本番
    • 経営レポート用など、部門別に専用容量を用意
Microsoft Fabricでデータを変換して分析する

スケールアウト

2つ目の容量を追加し、ワークロードを移してスケールアウトする例の図解

Microsoft Fabricでデータを変換して分析する

練習してみましょう!

Microsoft Fabricでデータを変換して分析する

Preparing Video For Download...