Sequin delivers industry‑leading change‑data‑capture (CDC) performance, sustaining 50k ops/s (or up to 40 MB/s) at a 55 ms average end‑to‑end latency. That makes Sequin the fastest Postgres CDC solution available today.

This performance is achieved with Sequin streaming changes from a single Postgres replication slot to Kafka. If configured with multiple replication slots, Sequin can stream low latency change-data-capture from very high throughput Postgres databases without falling behind.

In the sections below, we document how Sequin performs on different instance sizes. We also compare Sequin to different Debezium runtimes (Debezium has several runtimes.)

Sequin performance

Single‑slot peak throughput & latency

Sequin streams from a single Postgres replication slot to Kafka at:

  • 50k ops/s or 40 MB/s (whichever comes first), sustained
  • 55ms average latency
  • 253ms 99th‑percentile latency

If you need more headroom, you can enable additional slots; Sequin scales linearly without falling behind.

Sequin on different instance sizes

Here’s a sampling of throughput Sequin can handle on different instance types:

AWS Graviton EC2 vCPU / GiBAvg row sizeSustained throughputBandwidth
c8g.4xlarge16 / 32100B60k ops/s5.53 MB/s
c8g.4xlarge16 / 32200B58k ops/s10.64 MB/s
c8g.4xlarge16 / 32400B52k ops/s19.92 MB/s
c8g.4xlarge16 / 321.6kb23k ops/s36.06 MB/s
c8g.2xlarge8 / 16200B26k ops/s5.16 MB/s
c8g.xlarge4 / 8200B20k ops/s3.81 MB/s

Debezium on MSK Connect (AWS)

Best if: you already run Amazon MSK and want a managed Kafka Connect runtime.

The highest throughput we were able to consistently achieve with Debezium deployed on AWS MSK Connect was 6k ops/sec.

Metric8 MCUs (max available on AWS MSK Connect)
Sustained throughput6k ops/s
Average latency≈ 258ms
99th‑percentile latency≈ 499ms

At this throughput, Sequin in a comparable setup has a latency that is significantly lower:

Scaling limits

  • 8 MCUs (8 vCPU / 32 GiB RAM) is the hard ceiling MSK Connect exposes for a single connector.
  • The connector is single‑threaded for snapshotting and heavily synchronized during streaming, so adding more MCUs has diminishing returns past ~4 MCUs.

Debezium Server (stand‑alone)

Best if: you need a minimal footprint and do not want to run full Kafka Connect.

HardwareRow sizeDebezium ServerSequin
16 vCPU / 32 GiB200 B20k ops/s (4 MB/s)58k ops/s (10.64 MB/s)
16 vCPU / 32 GiB400 B20.3k ops/s (7.73 MB/s)52k ops/s (19.92 MB/s)
8 vCPU / 16 GiB100 B20k ops/s (2 MB/s)30k ops/s (3 MB/s)
4 vCPU / 8 GiB100 B20k ops/s (2 MB/s)29k ops/s (2.9 MB/s)

Debezium on Confluent Cloud

(Coming soon)

Comparative benchmarks coming soon. Upvote the issue if you want to see them.

Debezium on self‑hosted Kafka Connect

(Coming soon)

Comparative benchmarks coming soon. Upvote the issue if you want to see them.

Benchmark methodology

All of our benchmarks are open source and available on GitHub.

Our benchmarks are conducted in a production-like environment. Sequin and Debezium are compared head-to-head capturing changes from AWS RDS and delivering to AWS MSK Kafka.

Load is applied to a single Postgres table using workload_generator.py deployed to a dedicated EC2 instance.

Throughput and end-to-end latency are measured with a Kafka consumer deployed to a separate EC2 instance. The stats are calculated as:

  • Throughput: the number of records delivered to Kafka per second.
  • Latency: the time between a change occuring in Postgres (updated_at timestamp) and it’s delivery to AWS MSK Kafka (Kafka creation timestamp).

Workload

workload_generator.py applies a mixed workload of INSERT, UPDATE, and DELETE operations to the benchmark_records table.

The benchmark_records Postgres table has the following schema:

                                           Table "public.benchmark_records"
     Column      |            Type             | Collation | Nullable |                    Default
-----------------+-----------------------------+-----------+----------+-----------------------------------------------
 id              | integer                     |           | not null | nextval('benchmark_records_id_seq'::regclass)
 string_field    | text                        |           |          |
 numeric_field   | numeric                     |           |          |
 timestamp_field | timestamp with time zone    |           |          |
 json_field      | jsonb                       |           |          |
 inserted_at     | timestamp without time zone |           |          | now()
 updated_at      | timestamp without time zone |           |          | now()

Stats collection

Similarly, the cdc_stats.py script is deployed to a separate EC2 instance and reads from AWS MSK Kafka. Stats are bucketed and saved to a CSV file for analysis.

Infrastructure

Sequin, Debezium, and the rest of the infrastructure are deployed to AWS in the following configuration:

  • AWS RDS Postgres db.m5.8xlarge instance (32 vCPUs, 128GB RAM)
  • AWS MSK Kafka provisioned with 4 brokers
  • AWS EC2 instances with Sequin running in Docker.

Summary

Tool / DeploymentSustained throughputAvg latency99p latency
Sequin>50 k ops / s55 ms253 ms
Debezium · MSK6 k ops / s258 ms499 ms
Debezium · Server23 k ops / s210 ms 440 ms 
Fivetran5+ minutes---
Airbyte1+ hours---

Sequin sustains 6 × – 8 × more throughput than Debezium’s on MSK, and over 2x the throughput of Debezium Server.


Next steps

Ready to see Sequin’s performance for yourself?