mrkeyoor.com_
Thu 03 Sept 14:34 UTC
Dataevaluationupdated 03 Sept 2026

tidb review

TiDB is a distributed SQL database that speaks the MySQL protocol while splitting query processing, metadata, and storage across separate services. It is built for applications that need transactions, horizontal growth, and failover beyond one database server. TiFlash adds columnar storage for analytical queries, while TiKV holds transactional rows.

trackingstars / 7d
Verdict

Our TiDB build took 385 seconds, and go test reached the 900-second cap with 4 passed and 2 failed out of 6, so this is a serious platform choice only for teams that already need distributed SQL. TiDB is a strong candidate for MySQL-oriented applications that need independent compute and storage growth plus mixed transactional and analytical work. Use a simpler database when one server is enough, or choose a managed TiDB service if the multi-component production topology would consume the team.

We ran it

Lab card: what happened when we ran tidbScreenshot of tidb (www.tidb.io)
Install✓ · 119s964 packages
Build✓ · 385s
Tests✗ timed out · 900s4 passed · 2 failed of 6 (go test)
Repo7638 files~1,699,559 lines of source · 151.1 MB · 7 CI workflows · Dockerfile · tests dir

Answers from our run

Does tidb build from source?

Dependencies installed in 119 seconds (964 packages), and the build succeeded in 385 seconds. We cloned commit 049e0e2 into a clean Debian container with 3 CPUs and no project-specific setup.

Do tidb's tests pass?

Not all of them: 4 of 6 passed and 2 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use tidb?

Small applications that fit comfortably on one database host: the production guide's minimum topology starts with 2 TiDB, 3 PD, and 3 TiKV instances before optional analytical components.

What are the alternatives to tidb?

CockroachDB, YugabyteDB, Vitess. Our TiDB build took 385 seconds, and go test reached the 900-second cap with 4 passed and 2 failed out of 6, so this is a serious platform choice only for teams that already need distributed SQL.

Setup2/5Playground is easy; production begins with several stateful services
Docs5/5Architecture, sizing, deployment, and MySQL gaps are explicit
Community5/540,483 stars with same-day code and issue activity
Maturity4/5v8.5.8 is maintained, though our limited test run had failures

Who it’s for

Teams whose MySQL-shaped workload has outgrown one primary server and manual sharding.
Platform groups able to operate TiDB, PD, TiKV, monitoring, and optional TiFlash nodes.
Applications that need distributed transactions and familiar MySQL drivers or ORMs.
Organizations combining transactional and analytical queries on the same current data.

Who it’s NOT for

Small applications that fit comfortably on one database host: the production guide's minimum topology starts with 2 TiDB, 3 PD, and 3 TiKV instances before optional analytical components.
MySQL applications that depend on stored procedures, triggers, events, user-defined functions, FULLTEXT indexes, or spatial types: the v8.5 compatibility guide lists them as unsupported.
Replication setups that require the MySQL replication protocol: TiDB instead uses Data Migration for MySQL sources and TiCDC for downstream replication.
Contributors needing a quick full test loop on a modest machine: our build took 385 seconds, and the test run timed out after 900 seconds with 2 failures.
Operators without SSD capacity, low-latency networking, Linux tuning, and multi-node monitoring for a production database.

Setup reality

Our sandbox install at commit 049e0e2 succeeded in 119 seconds and installed 964 packages. The build passed in 385 seconds. Tests hit the 900-second limit: go test reported 4 passed and 2 failed out of 6. The log tail named github.com/pingcap/tidb/br/pkg/utils as failed after 61.226 seconds, without showing the cause.

A local trial normally uses TiUP Playground, which downloads TiDB, TiKV, PD, TiFlash, and monitoring components. The recommended expanded playground needs at least 10 GiB of memory and 4 CPU cores. Production uses a topology file, SSH access to Linux machines, system checks, TLS and account configuration, storage planning, backup, and monitoring.

The production hardware guide starts at 2 TiDB, 3 PD, and 3 TiKV instances, with SSDs and 10-gigabit networking recommended for those services. MySQL clients can connect, but compatibility is incomplete and migration may require Data Migration or TiCDC. TiUP Playground listens only on localhost by default and discards data unless started with a persistent tag.

TiDB splits SQL, metadata, and storage into separate services

A TiDB cluster uses stateless TiDB servers for the MySQL-facing SQL layer, PD servers for metadata and scheduling, and TiKV nodes for transactional storage. TiFlash is an optional columnar store for analytical work on replicated data. This separation lets operators add compute or storage capacity independently. It also changes the unit of ownership: adopting TiDB means running a database system with several coordinated services, rather than replacing one MySQL process with one TiDB process.

The repository we measured contained 7,638 files and about 1,699,559 lines of source in a 151.1 MB checkout. It includes the SQL server plus backup, restore, import, planning, execution, and test code, while TiKV, PD, and TiFlash live in related projects. Seven CI workflow files, a Dockerfile, and a tests directory were present. That source footprint is consistent with TiDB's role as one major component in a larger distributed database platform.

TiUP Playground is a local trial, while production starts larger

The self-managed quick start labels TiUP Playground as a non-production path. Its default starts 1 TiDB, 1 TiKV, 1 PD, and 1 TiFlash instance, with Dashboard and Grafana endpoints. A more representative local topology uses 2 TiDB, 3 TiKV, and 3 PD instances; PingCAP recommends at least 10 GiB of memory and 4 CPU cores for that command. Data disappears on cleanup unless the playground starts with a persistent tag.

Building the checked-out source was a heavier exercise. Our install succeeded in 119 seconds and pulled 964 packages. The build then completed successfully in 385 seconds on 3 CPUs and 8 GB of RAM. Those numbers describe repository development, rather than a TiUP binary installation or a running cluster. They still matter for contributors: a clean build consumed more than 6 minutes before tests began, so iteration speed and CI capacity need planning.

What happened when we ran it

Our unprivileged Go 1.24 Debian sandbox cloned commit 049e0e2 with no secrets. Installing 964 packages took 119 seconds, and the build passed in 385 seconds. The test command then ran for the full 900-second allowance and timed out. Its summary at that point reported 4 passed and 2 failed out of 6. A timed-out partial run cannot establish the state of the full TiDB test suite, but it does establish that our bounded run did not pass.

The log tail identified github.com/pingcap/tidb/br/pkg/utils as failed after 61.226 seconds. It showed informational messages about log backup task counts and warnings about TiKV configuration, then a plain FAIL; it did not expose the failing assertion or cause. Other lines showed passing utility subpackages and packages with no test files. We cannot explain the 2 failures from that tail. The useful decision point is that this commit built, while the measured test slice needed more than 900 seconds and ended non-green.

MySQL compatibility excludes procedures, triggers, and native replication

TiDB accepts MySQL clients and supports common MySQL 5.7 and 8.0 syntax, which reduces application migration work. The compatibility guide also lists firm gaps: stored procedures, functions, triggers, events, user-defined functions, FULLTEXT indexes in self-managed TiDB, spatial data types, and several other features are unsupported. TiDB does not implement the MySQL replication protocol. PingCAP supplies Data Migration for inbound MySQL replication and TiCDC for outbound change streams instead.

That compatibility audit belongs before the 119-second install or 385-second build. Search schemas, migrations, and application SQL for unsupported features, then exercise transaction semantics and query plans with production-shaped data. The README's claim that many applications need little or no code change is plausible for ordinary driver usage. It is not a blanket promise for every MySQL workload. TiDB also defaults to snapshot isolation, so teams relying on a particular isolation behavior should test it explicitly.

Production high availability starts with 2 TiDB and 3 TiKV nodes

PingCAP's v8.5 hardware guide lists minimum production counts of 2 TiDB, 3 PD, and 3 TiKV instances. Its reference configuration assigns TiDB servers 16 or more CPU cores and 48 GB of memory, TiKV nodes 16 or more cores and 64 GB, plus SSD storage and 10-gigabit networking. TiFlash adds another 2 instances at a much higher reference size. Actual sizing still depends on workload, capacity, and availability targets.

Our 151.1 MB checkout and 964 installed packages cover only the code environment we tested. A production rollout also needs topology management, network ports, certificates, user accounts, backups, restore drills, alerting, and failure-domain placement. TiUP automates deployment and routine cluster actions, while operators remain responsible for those choices. Small teams should compare that burden with TiDB Cloud or a simpler managed MySQL service before buying servers for a topology whose capacity they do not need.

v8.5.8 and September activity show current maintenance

TiDB v8.5.8 was released on August 27, 2026, and the repository was pushed on September 3. GitHub showed 40,483 stars and 6,898 combined issues and pull requests when fetched; that combined count is not a bug count. Issue activity was current on September 3: a monitored flaky-test report was closed after it had not reproduced recently, and a new moderate server-admission report was opened. The release notes include fixes across TiDB, TiKV, PD, TiFlash, backup, and change-data capture.

TiDB deserves a trial when horizontal SQL scaling and mixed transaction and analytics work solve an existing problem. Our 385-second build passed, but the 900-second test run stopped with 4 passed and 2 failed out of 6, so contributors should reproduce the BR utility failure with a longer diagnostic run. Application teams should start with TiUP Playground, complete the MySQL compatibility audit, and model the full production topology. If that sounds disproportionate, the workload is probably still better served by one conventional database.

Alternatives

ProjectWhat it isPick it when
CockroachDBA distributed SQL database with PostgreSQL-oriented clients and automatic replication.pick this instead when PostgreSQL compatibility and data-placement controls fit the application better than TiDB's MySQL protocol.
YugabyteDBA distributed database with PostgreSQL-compatible SQL and a separate Cassandra-style API.pick this instead when PostgreSQL application compatibility or the additional wide-column API is required.
Vitess gh↗A clustering system that scales MySQL through managed sharding and routing.pick this instead when keeping MySQL itself and adding a sharding control plane is preferable to adopting a new distributed database.

What people are saying

  1. [velocity-scout] pingcap/tidb

Sources

  1. TiDB repository and README
  2. TiDB architecture
  3. TiDB self-managed quick start
  4. TiDB MySQL compatibility
  5. TiDB hardware and software requirements
  6. TiDB production deployment with TiUP
  7. TiDB v8.5.8 release
  8. TiDB flaky test report 69665

More data reviews

anki · Summer2027-Internships · postgres · VictoriaMetrics · awesome-quant · sequelize · the whole board →