# CockroachDB in Comparison

This page shows you how the key features of CockroachDB stack up against other databases. Hover over the features for their intended meanings, and click CockroachDB answers to view related documentation.

|  |  | CockroachDB
--- | --- | --- | ---
Database horizontal scale | Manual Sharding Add on configuration Node based, automated read scale, limited write Node based, automated for both reads and writes | Manual Sharding Add on configuration Node based, automated read scale, limited write Node based, automated for both reads and writes | Node based, automated for both reads and writes
Database load balancing (internal) | Manual - not part of database None and full copies across regions Even distribution to optimize storage | Manual - not part of database None and full copies across regions Even distribution to optimize storage | Detailed options to optimize storage, compute and latency
Failover | Manual - not part of database Automated for reads, limited for writes to one region Automated for reads, limited guarantees for writes Fully automated for both reads and writes | Manual - not part of database Automated for reads, limited for writes to one region Automated for reads, limited guarantees for writes Fully automated for both reads and writes | Fully automated for both reads and writes
Automated repair and RPO(Recovery Point Objective) | Manual repair RPO ~1-60 mins Automated RPO ~1 -5 mins Manual & automated repair RPO <1 min "Automated repair RPO <10 sec" | Manual repair RPO ~1-60 mins Automated RPO ~1 -5 mins Manual & automated repair RPO <1 min "Automated repair RPO <10 sec" | Automated repair RPO = 0 sec
Distributed reads | Manual - asynchronous Yes | Manual - asynchronous Yes | Yes
Distributed transactions | No Lightweight transactions only Yes | No Lightweight transactions only Yes | Yes
Database isolation levels | Single region consistent default - Snapshot highest - Serializable Eventual consistent default - Read uncommitted highest - Snapshot read Eventual consistent - No transaction isolation guarantees Default - Snapshot highest - Serializable | Single region consistent default - Snapshot highest - Serializable Eventual consistent default - Read uncommitted highest - Snapshot read Eventual consistent - No transaction isolation guarantees Default - Snapshot highest - Serializable | Guaranteed consistent default - Serializable highest - Serializable
Potential data issues (default) | Phantom reads, non-repeatable reads, write skew Dirty reads, phantom reads, non-repeatable reads, write skew Dirty reads, phantom reads, non-repeatable reads, write conflicts None Phantom reads, non-repeatable reads | Phantom reads, non-repeatable reads, write skew Dirty reads, phantom reads, non-repeatable reads, write skew Dirty reads, phantom reads, non-repeatable reads, write conflicts None Phantom reads, non-repeatable reads | None
SQL | Yes No Yes - with limitations | Yes No Yes - with limitations | Yes - wire compatible with PostgreSQL
Database schema change | Yes Offline Online, Active and Dynamic | Yes Offline Online, Active and Dynamic | Online, Active and Dynamic
Cost based optimization | Yes No ? No | Yes No ? No | Yes
Data Geo-partitioning | No Yes, object level Yes No | No Yes, object level Yes No | Yes, row level
Upgrade method | Offline Online, rolling | Offline Online, rolling | Online, rolling
Multi-region | Yes - manual Yes, but not for writes Yes, for both reads and writes | Yes - manual Yes, but not for writes Yes, for both reads and writes | Yes for both reads and writes
Multi-cloud | No Yes | No Yes | Yes

* In DynamoDB, distributed transactions and ACID semantics across all data in the database, not just per row, requires an additional transaction library.