DataStore プロファイリング
DataStore プロファイラを使用すると、実行時間を測定し、パフォーマンス上のボトルネックを特定するのに役立ちます。
クイックスタート
プロファイリングを有効化する
プロファイラ API
プロファイラの取得
report()
パフォーマンスレポートを表示します。
パラメーター:
| Parameter | Type | Default | Description |
|---|---|---|---|
min_duration_ms | float | 0.1 | この時間(ミリ秒)以上のステップのみを表示 |
出力例:
レポートには次の内容が表示されます:
- 各ステップの実行時間(ミリ秒)
- 親ステップ/全体時間に対する割合
- 処理の階層的なネスト構造
- 各ステップのメタデータ(例:
ops_count、ops)
step()
コードブロックの処理時間を手動で計測します。
clear()
すべてのプロファイリングデータを消去します。
summary()
ステップ名をキー、処理時間(ミリ秒)を値とする Dictionary を取得します。
出力結果の例:
レポートの見方
ステップ名
| ステップ名 | 説明 |
|---|---|
Total Execution | 全体の実行時間 |
Query Planning | クエリ計画の作成に要した時間 |
SQL Segment N | SQL セグメント N の実行 |
SQL Execution | 実際の SQL クエリ実行 |
Result to DataFrame | 結果を pandas DataFrame に変換する処理 |
Cache Check | クエリキャッシュのチェック |
Cache Write | 結果をキャッシュに書き込む処理 |
Duration
- Planning steps (Query Planning): 通常は短時間で完了する
- Execution steps (SQL Execution): 実際の処理が行われる箇所
- Transfer steps (Result to DataFrame): 結果を pandas の DataFrame に変換する処理
ボトルネックの特定
プロファイリングのパターン
単一クエリのプロファイリング
複数のクエリをプロファイルする
アプローチの比較
最適化のポイント
1. SQL の実行時間を確認する
SQL execution がボトルネックになっている場合は:
- データ量を減らすためのフィルターを追加する
- CSV ではなく Parquet を使用する
- (データベースソースの場合)適切な索引があるか確認する
2. I/O 時間を確認する
read_csv や read_parquet がボトルネックになっている場合:
- Parquet 形式(列指向・圧縮)を使用する
- 必要なカラムのみを読み込む
- 可能であればソース側でフィルタリングする
3. データ転送を確認する
to_df が遅い場合は:
- 結果セットが大きすぎる可能性があります
- フィルタや LIMIT を追加します
- プレビューには
head()を使用します