DevOpsMar 28, 2026
Deep EVM #28:高スループットデータパイプライン — バッチインサート、COPY、コンフリクト解決
OS
Open Soft Team
Engineering Team
インサートスループット問題
個別INSERTは約5,000行/秒。COPYプロトコルは250,000行/秒以上。40倍の差 — 9日のバックフィルと5時間のバックフィルの差。
INSERT vs COPYパフォーマンス
| メソッド | スループット | レイテンシ/行 |
|---|---|---|
| 個別INSERT | 5K行/秒 | 200us |
| バッチINSERT(1000) | 50K行/秒 | 20us |
| COPYテキスト | 150K行/秒 | 6.7us |
| COPYバイナリ | 250K行/秒 | 4us |
ON CONFLICT戦略
Upsert(コンフリクト時更新)、重複スキップ、バルクupsertパターン。
WALチューニング
synchronous_commit = offで約3倍の書き込みスループット向上(クラッシュ時に最後の200msのデータ損失リスクあり)。再取得可能なブロックチェーンデータには許容可能。
PgBouncerコネクションプーリング
transactionモードで各トランザクション後にコネクションを解放。1000クライアント接続を50のPostgreSQL接続にマルチプレックス。
まとめ
高スループットPostgreSQLパイプラインはバッチ思考が必要です。COPYプロトコルで最大取り込み速度、バッチINSERTでON CONFLICTサポート、WAL設定でチェックポイントオーバーヘッド削減。ナイーブなパイプラインと最適化されたパイプラインの差は40倍です。