FastSync
FastSync is a performance optimization that bypasses the
Singer Specification
for bulk data operations. Instead of piping JSON between tap and target processes,
FastSync uses native database tools (COPY, staged files) to transfer data
directly — typically 10–100x faster than the standard Singer path.
FastSync is available only for specific tap-target combinations (see the table below).
Warning
Important: FastSync is not a selectable replication method in the YAML Configuration. PipelineWise detects automatically when FastSync gives better performance than the Singer components and uses it whenever it’s possible.
Supported tap-target combinations
FullSync and PartialSync support different tap-target combinations:
Tap |
Target |
FullSync |
PartialSync |
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
No |
||
Yes |
No |
||
Yes |
No |
||
Yes |
No |
Note
During a normal run_tap run, PipelineWise uses the standard Singer-based sync when FullSync is not supported for the tap-target combination.
The explicit fast_sync command behaves differently: it requires a supported FullSync combination and fails if one is not available. It never falls back to Singer.
Components
FastSync has two components that share the same underlying infrastructure:
FullSync
Exports the entire source table, stages the data, and replaces the target table. This is the component used during initial syncs and when you explicitly run the fast_sync command.
PartialSync
Exports a filtered range of rows from the source table, stages the data, and merges it with the existing target table (updating existing rows and inserting new ones). This is the component used when you run the partial_sync_table command. See Different cases of partial resync for details on how different scenarios are handled.
When does PipelineWise use FastSync?
PipelineWise automatically selects the FastSync component for a table when one of the following conditions are met:
The replication method is
FULL_TABLE(always treated as initial sync), orThe replication method is
INCREMENTALbut no replication key value has been recorded yet, orThe replication method is
LOG_BASEDbut no LSN, binlog position, GTID, or change stream token has been recorded yet.
For INCREMENTAL and LOG_BASED tables, FastSync handles only the initial load.
Once the initial sync completes, PipelineWise switches to the standard Singer path
for ongoing incremental or log-based replication.
When you run fast_sync explicitly, FullSync is used unconditionally for all
supported tap-target combinations, regardless of bookmark state — unless a table has
sync_start_from defined in its tap configuration (see Defined PartialSync (sync_start_from) below).
The PartialSync component is also used when you run partial_sync_table explicitly.
Defined PartialSync (sync_start_from)
You can configure individual tables to always use PartialSync instead of FullSync
when fast_sync is run. This is done by adding a sync_start_from block
to the table entry in your tap YAML configuration:
tables:
- table_name: "my_table"
replication_method: "LOG_BASED"
sync_start_from:
column: "updated_at"
static_value: "2024-01-01" # or use dynamic_value instead
drop_target_table: false
When fast_sync encounters a table with sync_start_from, it routes that table
through PartialSync automatically — applying a WHERE column >= value filter during
export and merging the result into the target rather than replacing it.
Configuration keys:
column(required)The column to use for the range filter (
WHERE column >= value).static_value(one of static/dynamic required)A fixed literal value that the sync always starts from.
dynamic_value(one of static/dynamic required)A
SELECTquery that returns a single row with a single column. The query is evaluated at sync time against the source database, allowing the start value to be computed dynamically (e.g.SELECT MAX(updated_at) - INTERVAL '7 days' FROM my_table).drop_target_table(optional, default: false)When
true, the target table is dropped and recreated before merging. This effectively converts the partial sync into a filtered full replacement.
Note
Exactly one of static_value or dynamic_value must be provided, not both.
Warning
Defined PartialSync via sync_start_from is currently supported only for
Tap MySQL and Tap PostgreSQL to Target Snowflake.
See the Tap MySQL and Tap PostgreSQL connector pages for full YAML examples.