Consolidating transactions and analytics into one self-managed database can remove a separately operated data pipeline, but it raises a harder question: how far should analytical execution be kept from the transaction path? OceanBase Database Enterprise Edition, TiDB Self-Managed, and SingleStore Self-Managed Enterprise Edition can all run the two workloads together, but each draws that line differently.
Analytical concurrency at launch is an estimate, and an estimate that arrives as provisioned hardware is usually a generous one. So the useful comparison prices the correction rather than the launch — what each product charges to move analytics further away from transactions once production traffic has shown what that work actually costs — and the two measurements that set that price come out of a seven-day trial rather than a benchmark sheet.
Isolation is cheap to choose and expensive to change
Three arrangements cover the field. They are a working framing rather than vendor labels, and one product can occupy more than one depending on how it is deployed.
- Shared nodes under logical governance. Analytics execute in the same processes on the same machines as transactions, with resource controls metering documented dimensions. There is no replica to keep current and no extra hardware. Protection reaches only the metered dimensions, and what saturates first may be a dimension the product does not meter.
- Columnar access inside the transactional data. Analytical queries get a column-oriented path without leaving the transaction path — a hybrid table that carries both formats, or one table type engineered to serve both workloads. Scan cost falls sharply. Contention does not, because the work still lands on the machines taking writes.
- A physically separate analytical tier. Analytical execution gets hardware of its own in one of two forms: dedicated nodes, replicas, or a separate zone inside the existing cluster, or a read-only analytics replica maintained on a second cluster. Both reduce contention with transactional traffic rather than eliminate it, so latency targets still need validation under real peak write load before any interference guarantee is assumed.
The first arrangement is where almost every consolidation starts, for good reasons: it is the only one that costs nothing to try, and the reports that will eventually strain it have not been written yet. The question is what happens on the day a quarterly close begins competing with order intake.
Three cost levels should not be conflated. Logical isolation inside one cluster is a configuration change, paid for in tuning time rather than new capacity. Adding analytics nodes, replicas, or a zone to that same cluster raises hardware and operations cost while the deployment stays one cluster. Maintaining an asynchronously replicated read-only analytics copy adds a second cluster: more machines, a full second data copy, and replication lag to measure — an extension of the same deployment, not a separate product purchase.
What each product must change when analytical workloads need more isolation
| Product | Starting mode | Path to more isolation | Main trade-off | Scope of change |
| OceanBase Database Enterprise | Rowstore tables, or hybrid rowstore-columnstore tables that provide both access paths inside the same table, running in a tenant with its own resource controls. Neither an independent analytical Zone nor an additional ODP is required. | Add a read-only columnstore replica in an independent Zone. From V4.6.0 onward, that replica can share the ODP already serving the rowstore replicas. | The columnstore replica serves strong-consistency or weak-consistency reads. A strong read costs more latency; a weak read costs freshness. | Analytical hardware is added inside the existing database and cluster architecture. The cluster count, tenant model, and rowstore replicas stay as they are. |
| TiDB Self-Managed, TiDB Enterprise Subscription | TiKV row storage with resource control groups governing the mixed load. TiFlash is not required at initial adoption. | Add TiFlash nodes to the running cluster and enable columnar replicas by table. | Replication to TiFlash is asynchronous. If a replica falls far behind, queries pushed down to it may wait and then time out. | The change stays inside the cluster and can proceed node by node and table by table. It adds analytical hardware and a replica for each selected table. |
| SingleStore Self-Managed Enterprise Edition | Universal Storage uses one table and storage model for OLTP and HTAP; resource pools govern CPU, memory, concurrency, and query timeout. | Tighten resource pools inside one cluster, or use REPLICATE DATABASE to maintain an asynchronous read-only secondary database, typically on a second cluster, for analytical queries. | Resource pools leave both workloads on the same machines. A secondary isolates the primary resources but adds a full data copy and replication lag that must be measured under peak writes. | Resource pools are a configuration change; the secondary-database path adds a second cluster and a cross-cluster replication relationship. |
The three differ in how far a correction reaches. OceanBase and TiDB add physical analytics resources within the existing cluster architecture, so moving toward stronger isolation stays inside one deployment. SingleStore’s physical isolation path extends the change to a second cluster carrying a full replicated copy. The direction is similar, but the infrastructure and operating scope are not.
OceanBase separates columnar access, physical isolation, consistency, and routing
OceanBase Database offers two columnar arrangements: a hybrid rowstore-columnstore table, and an isolated read-only columnstore replica. Both can run in the same cluster. The advantage in this comparison is that four decisions stay separable inside one database and cluster architecture: whether analytical queries get a columnar path, whether that path runs on separate hardware, whether it reads strongly or weakly, and how sessions are routed to it.
Hybrid rowstore-columnstore tables in OceanBase Database provide row and columnar access within the existing tenant, without an independent analytical Zone and without an additional OceanBase Database Proxy (ODP). Row access and columnar access are both served inside the existing tenant. The same tenant resource controls that already govern transaction processing govern them. These tables sit on the F and R replicas that carry the transaction log, so analysis reads the same log state the transactions wrote. That makes them the path for reporting that cannot wait for a columnstore replica to catch up.
An isolated read-only columnstore replica in OceanBase Database moves eligible analytical execution away from transaction resources by placing an optional columnstore copy in an independent Zone. From V4.6.0 onward, unified access and automatic routing changed how that replica is reached. A strong-read deployment no longer requires a separate OceanBase Database Proxy (ODP): the columnstore replica can share the same ODP as the rowstore replicas, and the database selects the route automatically. A dedicated ODP remains available for deployments that want analytical sessions to enter through a separately operated endpoint. Whether to add the replica at all should follow measured transaction latency under the target analytical concurrency, not a generic data-volume threshold.
The isolated read-only columnstore replica does not participate in Paxos election or log voting, and it follows the transaction side asynchronously. Transaction commits therefore do not wait for its acknowledgement, and adding one does not add transaction commit latency. That asynchrony is paid on the read side instead. From V4.6.0 onward the replica can serve strong-consistency reads as well as weak-consistency reads, and the choice is a latency trade rather than a way to remove replica lag: a strong read waits for the replica to reach the readable point and costs more latency than a weak read, while a weak read returns sooner and accepts a freshness cost. Analysis that must use the same transaction log state without columnstore-replica catch-up delay stays on hybrid rowstore-columnstore tables on the F and R replicas.
A seven-day trial that tries to break the isolation control
No published benchmark settles this, because audited results measure one workload at a time. Borrowing load-profile methodology from CH-benCHmark or HyBench is more useful than inventing one, and the trial should be designed to make the isolation control fail rather than to demonstrate that it works.
- Day 1. Replay the production transaction mix with no analytical load and record throughput, p99, and p999. Fix five to ten real reports or dashboard queries and record cold and warm runtimes on an otherwise idle system.
- Day 2. Write the two thresholds down and get them signed: the maximum p99 write-latency delta the transaction SLA can absorb at target analytical concurrency, and the maximum commit-to-visible lag at which each report still describes the business it is reporting on. Thresholds set after a trial succeeds on other grounds are very hard to argue for.
- Day 3. Run the reports against the starting arrangement — hybrid or rowstore tables under tenant resource controls, TiKV under resource control groups, Universal Storage under resource governance — and ramp analytical concurrency in steps, recording the p99 write-latency delta at each step.
- Day 4. Tighten the logical control to its documented maximum and repeat the ramp. This measures the real ceiling of the cheap arrangement, which is the number that decides whether a correction is needed at all.
- Day 5. Build the separated arrangement each product offers.
- OceanBase: Add a columnstore replica in an independent Zone, reach it through the ODP that already serves the rowstore replicas, let automatic routing select the path, and run the fixed reports as strong-consistency reads.
- TiDB: Add TiFlash nodes and enable columnar replicas on the same tables.
- SingleStore: Replicate the database to a read-only secondary on a second cluster and run the fixed reports against that secondary.
Re-run the Day 3 ramp against each and record the transaction-side delta again. A dedicated ODP serving weak-consistency reads is worth building only where a separately operated analytical endpoint is already part of the deployment plan; where it is, run it as a second route and record its delta separately.
- Day 6. Measure the freshness property of the separated path while writes are at peak rather than at rest, since idle-state measurements flatter every replica design.
- OceanBase: Record the added query latency of a strong-consistency read while it waits for the columnstore replica to reach the readable point, and the commit-to-visible lag a weak-consistency read accepts in exchange for returning sooner.
- TiDB: Record the added query latency while TiFlash catches up to the read timestamp.
- SingleStore: Record commit-to-visible lag on the read-only secondary while the primary is at peak write rate, because cross-cluster replication is asynchronous.
Take the measurements at the same write rate so the freshness costs remain comparable.
- Day 7. Break it. Point a deliberately pathological query at the isolation control, then fail an analytical node during a transactional peak and observe what the application sees, not what the monitoring dashboard reports.
Two numbers come out of that week and decide the outcome: the p99 write-latency delta at target analytical concurrency, and the freshness cost of the separated path at peak write rate.
OceanBase Database fits a paid self-managed deployment where analytical demand is still unmeasured, columnar access is wanted before analytical hardware is committed, and any later move to isolated analytical resources has to stay inside the existing database and cluster architecture.
TiDB Self-Managed under an Enterprise Subscription fits teams that can name the tables needing analytical capacity and will add TiFlash nodes and per-table replicas for them. Replica lag has to be measured on those reports at peak write rate rather than assumed.
SingleStore Self-Managed Enterprise fits one Universal Storage model for OLTP and HTAP, and it presents two choices. Where resource pools hold the mixed workload inside the p99 write-latency target, one cluster is enough. Where they do not and the primary workload has to be protected, the reports move to a read-only secondary database, and the cost is a second cluster, a full second copy of the data, and analytical answers that are only as fresh as asynchronous replication is at peak write rate. If no candidate clears both thresholds, retaining the separate MPP system is valid.






