Skip to main content
DataStore は、多くの操作で pandas より大幅に高いパフォーマンスを発揮します。このガイドでは、その理由とワークロードを最適化する方法を解説します。

DataStore が高速な理由

1. SQL プッシュダウン

操作はデータソース側にプッシュダウンされます:

2. カラムプルーニング

必要なカラムのみが読み込まれます:

3. 遅延評価

複数の操作は 1 つのクエリにまとめてコンパイルされます:

ベンチマーク: DataStore と pandas

テスト環境

  • データ: 1,000万行
  • ハードウェア: 一般的なノートPC
  • ファイル形式: CSV

結果

主な知見

  1. GroupBy 操作: DataStore は最大 19.93 倍高速
  2. 複雑なパイプライン: DataStore は 5〜6 倍高速 (SQL プッシュダウンの効果)
  3. 単純なスライス操作: 性能は同程度で、差はほとんどない
  4. 最適なユースケース: GroupBy/集約を含む複数ステップの操作
  5. ゼロコピー: to_df() ではデータ変換のオーバーヘッドがない

DataStoreが適しているケース

高負荷な集計

複雑なパイプライン

大容量ファイルの処理

複数カラムの操作


pandasに匹敵するケース

ほとんどのケースでは、DataStore は pandas と同等以上の性能を発揮します。ただし、次のような特定のケースでは、pandas のほうがわずかに高速な場合があります:

少量のデータ (<1,000行)

基本的なスライス操作

Python のカスタムラムダ関数

重要DataStore が「遅い」ケースでも、通常は pandas と同等の性能 であり、実用上の差はほとんどありません。複雑な操作における DataStore の利点は、こうしたケースを大きく上回ります。実行を細かく制御するには、実行エンジン Configuration を参照してください。

ゼロコピー DataFrame インテグレーション

DataStore では、pandas DataFrame の読み書きに ゼロコピー を使用します。つまり、次のことを意味します。
主なポイント:
  • to_df() は実質的にコストがかからず、シリアライゼーションやメモリコピーも発生しません
  • pandas DataFrame から DataStore を作成する処理は瞬時に完了します
  • メモリは DataStore と pandas のビューの間で共有されます

最適化のポイント

1. 高負荷ワークロード向けにパフォーマンスモードを有効にする

集計負荷の高いワークロードで、pandas の厳密な出力フォーマット (行順、MultiIndex のカラム、dtype の補正など) が不要な場合は、スループットを最大化するためにパフォーマンスモードを有効にします。
期待される改善: filter+groupbyワークロードで最大2〜8倍高速化し、大容量のParquetファイルでのメモリ使用量を削減します。 詳細はパフォーマンスモードを参照してください。

2. CSVではなくParquetを使用する

想定される改善: 読み取りが3〜10倍高速化

3. 早めに絞り込む

4. 必要なカラムのみを選択する

5. SQLの集計を活用する

6. クエリ全体の代わりに head() を使用する

7. バッチ処理

8. explain() を使って最適化する


ワークロードのプロファイリング

プロファイリングを有効にする

ボトルネックを特定する

アプローチの比較


ベストプラクティスの概要


クイック判断ガイド

最適なエンジンを自動選択するには、config.set_execution_engine('auto') (デフォルト) を使用します。 集約ワークロードで最大のスループットを得るには、config.use_performance_mode() を使用します。 詳しくは、実行エンジンパフォーマンスモード を参照してください。
最終更新日 2026年7月23日