mrkeyoor.com_
Sun 18 Oct 23:25 UTC
Dataevaluationupdated 15 Oct 2026

tidb review

TiDB is a database that spreads SQL transactions across machines while accepting connections from MySQL clients. It lets teams grow database capacity and add analytical queries without putting all their data on one server, though adopting it means operating a cluster.

+7stars / 7d
Verdict

Our TiDB build succeeded in 374 seconds, but tests timed out at 900 seconds with 4 passed and 2 failed out of 6 reported, so this commit built without earning a clean test result. Shortlist it when distributed SQL and separate compute and storage scaling solve an existing capacity problem. Keep MySQL if stored procedures, triggers, or native replication are requirements you can't change.

We ran it

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

Answers from our run

Does tidb build from source?

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

Do tidb's tests pass?

No. The project's own test command finished in 900 seconds and reported 4 passed, 2 failed (go test).

Who should not use tidb?

Applications dependent on stored procedures or triggers: the compatibility guide linked from the README lists both as unsupported.

What are the alternatives to tidb?

MySQL, Vitess. Our TiDB build succeeded in 374 seconds, but tests timed out at 900 seconds with 4 passed and 2 failed out of 6 reported, so this commit built without earning a clean test result.

Setup2/5177-second install; production needs several coordinated services
Docs5/5English guides explain architecture, deployment, and compatibility gaps
Community5/5October 14 push and current issue discussion alongside 40,642 stars
Maturity4/5Established cluster tooling; our test run timed out with failures

Discussed on

  1. hnTiDB – A distributed NewSQL database compatible with MySQL protocol130 points
  2. hntiDB – Scalable RDBMS Inspired by Google F1 with Support for MySQL Protocol88 points
  3. hnTiDB – cloud-native, distributed SQL database written in Go72 points
  4. hnTiDB, a MySQL drop-in replacement written in Go, able to run Wordpress19 points
  5. hnTiDB Binlog is open sourced10 points

Who it’s for

Teams whose MySQL applications need distributed transactions and capacity that can grow across machines.
Database operators who want to scale SQL processing independently of transactional storage.
Teams evaluating TiFlash for analytical queries alongside transactional data and willing to operate another storage service.
Go contributors prepared to work in the 7,735-file repository and investigate an unfinished test run.

Who it’s NOT for

Applications dependent on stored procedures or triggers: the compatibility guide linked from the README lists both as unsupported.
Teams that must retain native MySQL replication tooling: TiDB doesn't implement that protocol and documents Data Migration and TiCDC instead.
Small deployments seeking a single database process: the documented architecture separates SQL servers, PD metadata management, and TiKV storage.

Setup reality

Our sandbox installed commit d09ecd3 in 177 seconds, adding 964 packages, and built it in 374 seconds. Tests timed out at 900 seconds, with 4 passed and 2 failed out of 6 reported. The tail names br/pkg/utils as failed, without showing the assertion. This October 9, 2026 run used 3 CPUs, 8 GB of RAM, and golang:1.24-bookworm in an unprivileged Debian container with no secrets.

The README's local trial uses TiUP Playground rather than a source build. A self-managed cluster needs TiDB SQL servers, PD, and TiKV; TiFlash adds analytical storage. Production TiUP deployment needs a topology file, SSH access, and environment checks. Configure database accounts, security, and monitoring. A TiDB Cloud account belongs to the separate hosted route.

Playground listens on localhost and cleans up data unless you use a persistent tag. A working MySQL driver doesn't establish full compatibility: stored procedures, triggers, and native MySQL replication are unsupported. Our successful build establishes no runtime sizing or query-performance result.

Stored procedures and triggers block a direct MySQL migration

Before pointing a MySQL application at TiDB, check whether it uses triggers. PingCAP's MySQL compatibility guide lists triggers and stored procedures as unsupported. TiDB suits teams that need SQL transactions across machines and want to keep their MySQL drivers. I'd leave a comfortably sized MySQL deployment alone until there's a specific capacity or availability problem to solve.

The source gives you some sense of the commitment: our checkout contained 7,735 files, roughly 1,753,932 lines of source, and occupied 156.6 MB. TiDB is written primarily in Go, with an English README and English documentation. Apache-2.0 licensing is a useful reason to consider it when you need source access and permission to modify the database. The license doesn't reduce the work of understanding a distributed system.

What happened when we ran it

Our run installed 964 packages in 177 seconds and built TiDB successfully in 374 seconds. We cloned commit d09ecd3 on October 9, 2026, using an unprivileged Debian container with 3 CPUs, 8 GB of RAM, the golang:1.24-bookworm image, and no secrets. These measurements describe working with the repository. They provide no database throughput, query-latency, or failover result, so they can't tell you how a production cluster will handle your traffic.

The test step timed out at 900 seconds. The captured go test summary reported 4 passed and 2 failed out of 6, a partial result rather than a census of TiDB's entire suite. The log tail names github.com/pingcap/tidb/br/pkg/utils as failed after 54.533 seconds. Nearby utility subpackages passed, while other packages had no test files. A successful compiler run therefore came with an unfinished, failing test run.

Immediately before FAIL, the log shows backup-task counters increasing and decreasing, followed by warnings about TiKV's garbage-collection ratio and RocksDB background jobs. It doesn't show the failing assertion or explain either reported failure. Blaming a missing Debian package, insufficient memory, or a database defect would exceed that evidence. Our scan also found 7 CI workflow files, a Dockerfile, and a tests directory. Those files establish that checks exist, without changing the outcome we captured.

SQL servers, PD, and TiKV have separate jobs

TiDB's SQL servers accept client connections and plan queries; TiKV stores transactional data. Placement Driver, usually shortened to PD, manages cluster metadata and scheduling. That separation lets you expand SQL capacity independently of storage. It also gives your operations team several services to understand when a query stalls. The architecture guide makes those responsibilities clear, which matters more to an adopter than the README's broad performance claims.

The 156.6 MB checkout we measured isn't the footprint of a deployed database cluster. The README also describes TiFlash, a column-oriented store that receives replicas from TiKV for analytical queries. This is TiDB's strongest reason to look beyond straightforward transactional scaling: reporting can use a different storage layout while transactions keep their row-oriented store. TiFlash adds another component to operate. Whether that arrangement improves your own reports still needs a workload evaluation.

TiUP Playground discards data unless you ask it to persist

PingCAP's local playground guide warns that its default trial cleans up cluster data. Use a persistent tag if you want to keep your work between sessions. Playground binds to localhost by default, and the documented SQL connection uses the root account. It's a sensible way to explore SQL behavior before choosing a deployment route. Our 374-second source build measures a different path from this downloaded-binary playground.

For a lasting deployment, TiUP manages a topology describing the services and their hosts. Its production deployment guide covers SSH access and environment checks. You'll need database accounts and a security configuration, plus decisions about storage, backups, and monitoring. Self-managed deployment doesn't require a TiDB Cloud account. Cloud is a separate route recommended by the README; choose it if you'd rather have PingCAP operate the infrastructure, then assess its service terms separately.

MySQL replication tooling needs a separate migration decision

TiDB doesn't implement MySQL's native replication protocol. PingCAP documents Data Migration for moving MySQL data into TiDB and TiCDC for outgoing changes, including a MySQL destination. Existing replication automation therefore needs its own review. Search deployment scripts as well as application SQL for dependencies on the current database. Keeping a driver doesn't mean keeping every operational tool.

Our 964-package install is a contributor's cost, separate from the adoption decision. If your database still fits comfortably on a conventional server, MySQL is my first alternative. If you've committed to scaling existing MySQL servers through sharding, compare Vitess, whose project centers on clustering MySQL. TiDB earns the extra evaluation when its distributed transactions and independently scalable services address a problem you can name. Choosing it merely to prepare for hypothetical growth buys work immediately.

October pushes and issue activity show ongoing maintenance

The repository's last push was October 14, 2026. GitHub listed 40,642 stars and 7,319 open issues and PRs, and its latest-release endpoint returned v7.5.8, published September 17. The issue queue was active too: issue 71966, opened October 14, reports a panic during statement rollback after cancellation. A linked pull request proposes a fix. That is a reported defect under active discussion, with no established connection to our sandbox failure.

I'd shortlist TiDB for a team already facing distributed SQL requirements and able to own its cluster. The 900-second timeout leaves contributors with a concrete follow-up: isolate the BR utility failure and capture the missing assertion before trusting this commit's checks. Application adopters should start with their stored procedures, replication dependencies, and hardest queries. If those reveal more migration work than the scaling problem justifies, stay with MySQL.

Alternatives

ProjectWhat it isPick it when
MySQLThe conventional MySQL server TiDB aims to accommodate at the client connection.pick this instead when your workload fits a conventional server or depends on MySQL stored procedures, triggers, or replication tooling.
Vitess gh↗A clustering system for horizontally scaling MySQL databases.pick this instead when retaining MySQL servers and adopting explicit sharding matches your scaling strategy.

What people are saying

  1. [github-trending] pingcap/tidb

Sources

  1. TiDB repository and README
  2. TiDB architecture
  3. MySQL compatibility
  4. Self-managed quick start
  5. Production deployment using TiUP
  6. TiDB v7.5.8 release
  7. Statement rollback cleanup panic report
  8. Proposed statement cleanup fix

More data reviews

nuvex-services · wine-quality-svc-tuning · dhis2-immunisation-audit · OpenTerminal · The-Quant-Trading-Vault · multimodal-product-discovery · the whole board →