ClickHouse is a columnar database optimized for batch processing. Each INSERT creates a new part on disk consisting of compressed column files, checksums, and index files. When you insert one row at a time, each row becomes its own part. The merge scheduler must then combine these tiny parts into larger ones, but with a default max_parts_count_to_merge_at_once of 150, it cannot keep up with thousands of single-row inserts per second. Within hours, the table accumulates tens of thousands of active parts, triggering the 'too many parts' error that rejects all subsequent inserts. Even before hitting the hard limit, thousands of parts cause massive read amplification because every SELECT must open and read from each active part. A payments_analytics pipeline inserting events individually at 500 events/second created 500 parts/second. Within 30 minutes, the table had 900,000 parts, queries took 45 seconds, and inserts were rejected. Switching to 50,000-row batches reduced part creation to 1 part every 100 seconds.