バッチサイズ100のBulk INSERT
1バッチあたり100行のBulk INSERT文を生成します。100が一般的なデフォルトバッチサイズである理由と、パフォーマンスバランスのための使い方を学びます。
Batch Sizes
詳細な説明
バッチサイズ100:安全なデフォルト
INSERT文1つあたり100行のバッチサイズは、すべての主要データベースでパフォーマンスと互換性のバランスが取れた、広く推奨されるデフォルトです。
なぜ100行なのか?
100という数値は実用的なスイートスポットです:
- 制限内に十分収まる: SQLiteのデフォルト999変数制限でも、カラム数9以下なら100行を収容可能
- 良好なパフォーマンス: 個別INSERTと比較してラウンドトリップを100倍削減
- エラー管理が容易: バッチが失敗しても、数千行ではなく100行だけリトライすればよい
- メモリに優しい: ほとんどのデータセットで生成されるSQLが1MB以内
出力例
350行のデータセットの場合:
-- バッチ 1(行 1-100)
INSERT INTO orders ("id", "customer", "total", "status")
VALUES
(1, 'Alice', 150.00, 'shipped'),
(2, 'Bob', 89.50, 'pending'),
-- ... 行 3-99 ...
(100, 'Zara', 210.00, 'delivered');
-- バッチ 2(行 101-200)
INSERT INTO orders ("id", "customer", "total", "status")
VALUES
(101, 'Alex', 45.00, 'shipped'),
-- ... 行 102-200 ...
-- バッチ 3(行 201-300)
-- ...
-- バッチ 4(行 301-350)
INSERT INTO orders ("id", "customer", "total", "status")
VALUES
(301, 'Mike', 99.00, 'pending'),
-- ... 残り49行 ...
(350, 'Nina', 175.00, 'shipped');
100を選ぶべきとき
以下の場合にバッチサイズ100を使用してください:
- データベースの制限が不明な場合
- 行のカラム数が多い場合(10以上)
- エラーの分離が必要な場合(バッチ単位のデバッグが容易)
- 複数のデータベースエンジンを対象とする場合
ユースケース
開発環境(SQLite)、ステージング(PostgreSQL)、本番(MySQL)で動作する必要があるデータ移行スクリプトを構築する場合。バッチサイズ100は3つすべてのデータベースで安全です。