バッチサイズ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とトランザクションを使用することで、インポート時間を数時間から数分に短縮できます。

試してみる — JSON to Bulk INSERT

フルツールを開く