概要
パフォーマンスモード で無効化されるもの
パフォーマンスモードを有効にする
config オブジェクトを使う
モジュールレベルの関数を使う
便利なインポートを使う
パフォーマンスモードを有効にすると、実行エンジンは自動的に
chdb に設定されます。config.use_chdb() を別途呼び出す必要はありません。パフォーマンスモードを使用する場面
- 大規模なデータセット (数十万〜数百万行) を処理する場合
- 集計中心のワークロード (groupby、sum、mean、count) を実行する場合
- 行の順序が重要でない場合 (例: 集計結果、レポート、ダッシュボード)
- SQL のスループットを最大化し、オーバーヘッドを最小限に抑えたい場合
- メモリ使用量が懸念事項である場合 (Parquet の並列読み取り、中間 DataFrame なし)
- pandas の正確な挙動 (行の順序、MultiIndex、dtypes) が必要な場合
first()/last()が真の最初/最後の行を返すことを前提としている場合- 行の順序に依存する
shift()、diff()、cumsum()を使用する場合 - DataStore の出力を pandas と比較するテストを作成している場合
挙動の違い
行の順序
- フィルター結果
- GroupBy の集計結果
sort_values()を明示的に指定しないhead()/tail()first()/last()集計
sort_values() を明示的に追加してください。
GroupBy の結果
集計
単一 SQL 実行
ColumnExpr の groupby 集約 (例: ds[condition].groupby('col')['val'].sum()) は、pandas モードで用いられる2段階の処理ではなく、1つのSQLクエリとして実行されます。
実行エンジンとの比較
compat_mode) と実行エンジン (execution_engine) は、互いに独立した設定項目です。
compat_mode='performance' を設定すると、execution_engine='chdb' が自動的に設定されます。これは、パフォーマンスモードが SQL の実行を前提として設計されているためです。
パフォーマンスモード でのテスト
ソート後に比較 (集計、フィルター)
値範囲の確認 (先頭/末尾)
スキーマと件数 (ORDER BY を伴わない LIMIT)
ベストプラクティス
1. スクリプトの冒頭で有効にする
2. 順序が重要な場合は、明示的にソートする
3. バッチ/ETLワークロードに使用する
4. セッション内でモードを切り替える
- 実行エンジン — エンジンの選択 (auto/chdb/pandas)
- パフォーマンスガイド — 一般的な最適化のヒント
- pandas との主な違い — 動作の違い