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