バッチサイズ1000のBulk INSERT
1バッチあたり1000行の高スループットBulk INSERT文を生成します。最大速度が必要なPostgreSQLおよびMySQLインポートに最適です。
Batch Sizes
詳細な説明
バッチサイズ1000:最大スループット
INSERT文1つあたり1000行のバッチサイズは、パフォーマンスの限界を押し上げ、PostgreSQLおよびMySQLへの大量データインポートに最適です。
パフォーマンス向上
小さなバッチサイズと比較して、1000行のINSERTは以下を提供します:
| バッチサイズ | 10,000行に必要な文数 | 相対速度 |
|---|---|---|
| 1(個別) | 10,000 | 1x(ベースライン) |
| 100 | 100 | 約50倍速い |
| 500 | 20 | 約80倍速い |
| 1000 | 10 | 約100倍速い |
速度向上の要因:
- 文のパース操作の削減
- トランザクションコミットオーバーヘッドの削減
- データベースのバッファ利用率の向上
データベース互換性
| データベース | 1000行サポート |
|---|---|
| PostgreSQL | 優秀 — 1000行以上も容易に処理 |
| MySQL | 良好 — ワイドテーブルではmax_allowed_packetに注意 |
| SQL Server | 上限 — INSERT1文あたり1000行のハードリミット |
| SQLite | 限定的 — ワイドテーブルでは変数数制限に抵触の可能性 |
生成される出力
INSERT INTO metrics ("timestamp", "cpu", "memory", "disk")
VALUES
('2024-01-01 00:00:00', 45.2, 72.1, 55.0),
('2024-01-01 00:01:00', 46.8, 71.9, 55.0),
-- ... さらに998行 ...
('2024-01-01 16:39:00', 52.1, 68.3, 56.2);
1000を使うべきとき
- デフォルトまたは増加されたパケットサイズのPostgreSQLまたはMySQL
- カラム数が少ない時系列やログデータ
- 速度が最優先のバッチインポート
- 「トランザクションでラップ」と組み合わせてアトミックなインポートに
ユースケース
数か月分にわたって収集されたサーバーメトリクス(500,000行以上)をPostgreSQLにインポートして分析する場合。バッチサイズ1000とトランザクションを使用することで、インポート時間を数時間から数分に短縮できます。