Overview

Choosing a capture mode

Pick the capture mode for your source by host access, privileges, encryption and target, and compare every mode's lag and source load.

A capture mode is how SQL Flow reads changes from a source. Azure SQL Database, PostgreSQL, and MySQL or MariaDB offer one mode each, so the choice is made for you. SQL Server, Oracle and Sybase ASE offer several, which differ in lag, in the load they put on the database, and in what you set up on the database host. Follow the diagram for your engine, then check the mode's page for its requirements.

Decision tree

Start with the source engine.

Capture modes by source engine. Azure SQL Database or Hyperscale uses Native CDC, PostgreSQL uses logical replication, and MySQL or MariaDB uses the binlog. SQL Server, Oracle and Sybase ASE each have their own questions.

SQL Server

Choosing a SQL Server capture mode. With a log broker on the host and no TDE: DirectLog when CDC may be enabled and the tables marked by a db_owner login, otherwise Reconstruction. Without a broker, or with TDE: Native CDC when CDC may run its capture job, otherwise Polling.
  • Log broker: managed services such as Amazon RDS and Azure SQL Managed Instance don't allow one on the host.
  • TDE: DirectLog and Reconstruction read the raw log, which TDE encrypts on disk.
  • DirectLog reads every change from the log, with lag in milliseconds and no query work on the server to find changes.
  • Reconstruction needs no CDC and no database role, and the target converges to the source rather than replaying every intermediate version of a row. On SQL Server 2016 SP2 and 2017, a sysadmin installs a signed helper procedure once.
  • Native CDC reads the change tables that SQL Server's CDC capture job fills.
  • Polling needs a login with sysadmin or db_owner, plus a SELECT grant on sys.fn_dblog in master on SQL Server 2025, and every read costs the server query work.

Oracle

Choosing an Oracle capture mode. DirectLog when the redo and archived logs are on a file system rather than ASM, a log broker can run on the Oracle host, the database runs one redo thread, and no table uses TDE, encrypted columns or encrypted SecureFile LOBs. Otherwise LogMiner.
  • ASM: the log broker can't read Oracle ASM storage (+DATA/...).
  • RAC: DirectLog reads exactly one enabled redo thread. LogMiner reads the logs of every thread.
  • Encryption: DirectLog has no decryption step and refuses those tables by name. LogMiner runs inside the database, which decrypts.
  • DirectLog has the lowest lag and keeps the mining work off the database. LogMiner needs nothing on the database host, but mines inside the database, with lag in seconds.

Sybase ASE

Choosing a Sybase ASE capture mode. Both modes read the log through a log broker on the ASE host. DirectLog when the selected tables may be marked for replication, otherwise Reconstruction.
  • Log broker: both modes read the log through a broker on the ASE host, so the agent never opens database files.
  • DirectLog reads the changes of tables marked for replication (sp_setreptable), exactly and with the lowest lag.
  • Reconstruction needs nothing enabled on the database. It completes changes from data pages that the broker serves, and the target converges to the source rather than replaying every intermediate version of a row.

Compare the modes

Source and mode
Typical lag
Work on the source serverInstalled on the database hostLogin privilegesHolds the source log
SQL Server DirectLog
Milliseconds
The broker reads log bytes; metadata and off-row values over SQLLog brokerdb_owner and a server state permissionYes, until the target commits; released on pause
SQL Server Reconstruction
As the log is written
Log bytes, plus keyed reads of current rowsLog brokerSpecific grants, no database roleNo
SQL Server Polling
Seconds
sys.fn_dblog query work for every readNothingsysadmin or db_ownerNo
SQL Server Native CDC
CDC job's scan interval
The CDC capture job, plus reads of the change tablesNothingSELECT on the tables and the cdc schemaNo; the CDC capture job does
Azure SQL Native CDC
CDC scan interval
CDC capture and change tables, counted against the database's resource limitsNot possibleSELECT on the tables and the cdc schemaNo; CDC does
Oracle DirectLog
Milliseconds
The broker reads redo files; catalog queries over SQLLog brokerCatalog views in the root and the PDB, FLASHBACK on tables, and ALTER SYSTEM for table repairs and processing rulesNo; your archived log retention decides
Oracle LogMiner
Seconds
Mining sessions inside the databaseNothingLOGMINING, dictionary access, FLASHBACK on tablesNo; your archived log retention decides
PostgreSQL logical replication
At each commit
Logical decoding inside PostgreSQLNothingReplication rights (the REPLICATION attribute or a replication role such as rds_replication), ownership of the tablesYes: the replication slot keeps WAL, also while paused
MySQL binlog
As the binlog is written
The server streams the binlog as to a replicaNothingREPLICATION SLAVE, REPLICATION CLIENTNo; your binlog retention decides
Sybase ASE DirectLog
Milliseconds
The broker reads the log deviceLog brokerreplication_role (or sa_role)Yes, while the pipeline runs; released on pause
Sybase ASE Reconstruction
As the log is written; slower than DirectLog
The broker reads the log device and data pagesLog brokerreplication_role (or sa_role)Yes, while the pipeline runs; released on pause

Every mode except the two Reconstruction modes replays each committed change, including every intermediate version of a row. Every source captures TRUNCATE TABLE and applies it to the target in order, but SQL Server itself refuses a truncate on a table marked for DirectLog or enabled for Native CDC. See Supported changes: TRUNCATE TABLE. For encrypted sources, see Encrypted data support.

See also

If this was useful,
our newsletter will be too.

Get monthly insights on data engineering, AI, and building critical infrastructure - direct from the Spectral Core team and CEO Damir Bulic.