ETL/ELT PatternsFull Refresh vs Incremental LoadsMedium⏱️ ~3 min

Production Reality: Scale, Cost, and Latency Numbers

What Happens at Real Scale: When you move from prototypes to production at companies processing terabytes daily, the numbers tell the story about why refresh strategy matters. Consider an e commerce orders table with 5 billion historical rows. Each day brings 50 million new or updated events. A full refresh pipeline reads all 5 billion rows from storage and writes all 5 billion to the target warehouse. At roughly 1 GB per 10 million rows, that is 500 GB read and 500 GB written per night. On cloud warehouses where compute and storage are billed separately, this pattern costs thousands of dollars monthly. Worse, it takes 4 to 6 hours of runtime on a large cluster. During those hours, the target table is either unavailable or shows stale data, breaking Service Level Agreements (SLAs) for dashboards that business teams expect live at 9 a.m.
Daily Pipeline Comparison
500 GB
FULL REFRESH
5 GB
INCREMENTAL
Switching to incremental loads transforms these economics. The same pipeline now reads and writes only the 50 million daily changes: about 5 GB read and 5 GB written. Runtime drops from 4 hours to 30 minutes. Latency improves dramatically: analysts get data with p50 lag of 20 minutes from event time to dashboard availability, and p99 under 45 minutes, compared to the 4 to 6 hour full refresh window. Hybrid Strategies in Practice: Many companies combine both patterns strategically. Hot partitions covering the last 7 to 30 days use incremental updates with sub hour freshness. Older cold partitions are compacted or fully refreshed weekly during low traffic windows. This bounds potential drift while keeping operational complexity manageable. Spotify runs weekly full refreshes for their Discover Weekly training datasets because volume is moderate (tens of millions of users) and correctness of the complete snapshot matters more than sub hour freshness. Meanwhile, their real time metrics and experimentation monitoring rely on incremental pipelines updating every few minutes.
Uber's financial pipelines use incremental ingestion with table formats supporting record level updates, allowing late arriving tips to be corrected days later without reprocessing months of ride history.
The Growth Problem: A pipeline processing 20 GB might finish in 30 minutes with full refresh. As data grows to 2 TB over two years, that same job balloons to 5 hours. Incremental loads scale better: if daily change volume stays roughly constant at 5 GB, latency and cost remain stable as total history grows 100x. This is the fundamental property that makes incremental patterns necessary beyond a certain scale threshold.
💡 Key Takeaways
Full refresh of 5 billion row table processes 500 GB daily and takes 4 to 6 hours, breaking SLAs and costing thousands monthly in cloud compute
Incremental loads reduce the same workload to 5 GB and 30 minutes, delivering p50 latency of 20 minutes versus 4 hour batch windows
Hybrid strategies maintain hot partitions (last 7 to 30 days) via incremental updates while periodically refreshing cold partitions to bound drift
Incremental patterns scale predictably: if daily changes stay constant, cost and latency remain stable as total dataset grows 10x or 100x
📌 Examples
1E-commerce orders: 5 billion historical rows with 50 million daily changes means full refresh processes 100x more data than incremental (500 GB vs 5 GB)
2Spotify uses weekly full refresh for training data (moderate volume, correctness priority) but incremental loads for real time metrics (freshness priority)
3Financial pipelines at Uber support late tips arriving weeks later by reprocessing affected partitions incrementally without full dataset reloads
← Back to Full Refresh vs Incremental Loads Overview