ETL/ELT Patterns • Full Refresh vs Incremental LoadsEasy⏱️ ~2 min
What are Full Refresh and Incremental Loads?
Definition
Data refresh patterns determine how you sync analytical systems with source databases as data grows. Full refresh reloads all data every run. Incremental loads transfer only what changed since the last run.
updated_at timestamps, monotonically increasing IDs, or Change Data Capture (CDC) that reads transaction logs. Then you apply only those deltas: inserts for new rows, updates for modified rows, and sometimes deletes.
Processing Volume Comparison
FULL REFRESH
50M rows
vs
INCREMENTAL
200K rows
💡 Key Takeaways
✓Full refresh reloads entire dataset every run, guaranteeing target matches source snapshot but processing 100 percent of volume regardless of actual changes
✓Incremental loads transfer only changed records using timestamps, IDs, or CDC, processing as little as 0.4 percent of volume for datasets where daily changes are small
✓Change detection mechanisms include <code>updated_at</code> timestamps, monotonically increasing sequence IDs, or transaction log based Change Data Capture
✓Full refresh optimizes for simplicity and correctness with no state tracking, while incremental optimizes for cost and latency at expense of complexity
📌 Examples
1A 50 million row customer table with 200,000 daily changes: full refresh processes all 50 million rows nightly, incremental processes only 200,000 changed rows
2E-commerce order events table with 5 billion historical rows and 50 million daily changes: full refresh reads/writes 500 GB daily, incremental reads/writes only 5 GB