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/aggregation を含む複数ステップの処理
  5. ゼロコピー: to_df() ではデータ変換のオーバーヘッドが発生しない

DataStore が効果を発揮するケース

高負荷な集計処理

複雑なパイプライン

大容量ファイルの処理

複数カラムの操作


pandas と同程度の性能になる場合

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

小規模なデータセット (1,000行未満)

基本的なスライス操作

カスタム Python のラムダ関数

重要DataStore が「遅い」ケースでも、通常、パフォーマンスは pandas とほぼ同等 で、実用上の差はほとんどありません。複雑な操作では、DataStore の利点がこうした限定的なケースを大きく上回ります。実行を細かく制御する方法については、実行エンジンの設定 を参照してください。

ゼロコピー 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月3日