title | summary | aliases | ||
---|---|---|---|---|
TiDB Features |
Learn about the feature overview of TiDB. |
|
This document lists the features supported in different TiDB versions, including Long-Term Support (LTS) versions and Development Milestone Release (DMR) versions after the latest LTS version.
You can try out TiDB features on TiDB Playground.
Note:
PingCAP does not provide patch releases for DMR versions. Any bugs will be fixed in future releases. For general purposes, it is recommended to use the latest LTS version.
The abbreviations in the table below have the following meanings:
- Y: the feature is generally available (GA) and can be used in production environments. Note that even if a feature is GA in a DMR version, it is recommended to use the feature in production environments in a later LTS version.
- N: the feature is not supported.
- E: the feature is not GA yet (experimental) and you need to be aware of the usage limitations. Experimental features are subject to change or removal without prior notice. The syntax and implementation might be modified before the general availability. If you encounter any problems, you can report an issue on GitHub.
Data types, functions, and operators | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Numeric types | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Date and time types | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
String types | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
JSON type | Y | Y | Y | Y | Y | E | E | E | E | E |
Vectort types | E | N | N | N | N | N | N | N | N | N |
Control flow functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
String functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Numeric functions and operators | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Date and time functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Bit functions and operators | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Cast functions and operators | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Encryption and compression functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Vector functions and operators | E | N | N | N | N | N | N | N | N | N |
Information functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
JSON functions | Y | Y | Y | Y | Y | E | E | E | E | E |
Aggregation functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Window functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Miscellaneous functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Operators | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Character sets and collations 1 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
User-level lock | Y | Y | Y | Y | Y | Y | N | N | N | N |
Indexing and constraints | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Expression indexes 2 | Y | Y | Y | Y | Y | E | E | E | E | E |
Columnar storage (TiFlash) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Use FastScan to accelerate queries in OLAP scenarios | Y | Y | Y | Y | E | N | N | N | N | N |
RocksDB engine | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Titan plugin | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Titan Level Merge | E | E | E | E | E | E | E | E | E | E |
Use buckets to improve scan concurrency | E | E | E | E | E | E | N | N | N | N |
Invisible indexes | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Composite PRIMARY KEY |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
CHECK constraints |
Y | Y | Y | N | N | N | N | N | N | N |
Unique indexes | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Clustered index on integer PRIMARY KEY |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Clustered index on composite or non-integer key | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Multi-valued indexes | Y | Y | Y | Y | N | N | N | N | N | N |
Foreign key | Y | E | E | E | N | N | N | N | N | N |
TiFlash late materialization | Y | Y | Y | Y | N | N | N | N | N | N |
Global index | Y | N | N | N | N | N | N | N | N | N |
Vector index | E | N | N | N | N | N | N | N | N | N |
SQL statements 3 | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Basic SELECT , INSERT , UPDATE , DELETE , REPLACE |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
INSERT ON DUPLICATE KEY UPDATE |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
LOAD DATA INFILE |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SELECT INTO OUTFILE |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
INNER JOIN , LEFT|RIGHT [OUTER] JOIN |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
UNION , UNION ALL |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXCEPT and INTERSECT operators |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
GROUP BY , ORDER BY |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
GROUP BY modifier |
Y | Y | Y | N | N | N | N | N | N | N |
Window Functions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Common Table Expressions (CTE) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
START TRANSACTION , COMMIT , ROLLBACK |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN ANALYZE |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
User-defined variables | E | E | E | E | E | E | E | E | E | E |
BATCH [ON COLUMN] LIMIT INTEGER DELETE |
Y | Y | Y | Y | Y | Y | N | N | N | N |
BATCH [ON COLUMN] LIMIT INTEGER INSERT/UPDATE/REPLACE |
Y | Y | Y | Y | Y | N | N | N | N | N |
ALTER TABLE ... COMPACT |
Y | Y | Y | Y | Y | E | N | N | N | N |
Table Lock | E | E | E | E | E | E | E | E | E | E |
TiFlash Query Result Materialization | Y | Y | Y | Y | E | N | N | N | N | N |
Advanced SQL features | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Vector search | E | N | N | N | N | N | N | N | N | N |
Prepared statement cache | Y | Y | Y | Y | Y | Y | Y | Y | E | E |
Non-prepared statement cache | Y | Y | Y | E | N | N | N | N | N | N |
Instance-level execution plan cache | E | N | N | N | N | N | N | N | N | N |
SQL binding | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Cross-database binding | Y | Y | N | N | N | N | N | N | N | N |
Create bindings according to historical execution plans | Y | Y | Y | Y | E | N | N | N | N | N |
Coprocessor cache | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Stale Read | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Follower reads | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Read historical data (tidb_snapshot) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Optimizer hints | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
MPP execution engine | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
MPP execution engine - compression exchange | Y | Y | Y | Y | N | N | N | N | N | N |
TiFlash Pipeline Model | Y | Y | Y | N | N | N | N | N | N | N |
TiFlash replica selection strategy | Y | Y | Y | N | N | N | N | N | N | N |
Index Merge | Y | Y | Y | Y | Y | Y | Y | E | E | E |
Placement Rules in SQL | Y | Y | Y | Y | Y | Y | E | E | N | N |
Cascades Planner | E | E | E | E | E | E | E | E | E | E |
Runtime Filter | Y | Y | Y | N | N | N | N | N | N | N |
Data definition language (DDL) | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Basic CREATE , DROP , ALTER , RENAME , TRUNCATE |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Generated columns | Y | Y | Y | Y | E | E | E | E | E | E |
Views | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Sequences | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Auto increment | Y | Y | Y | Y | Y4 | Y | Y | Y | Y | Y |
Auto random | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TTL (Time to Live) | Y | Y | Y | Y | E | N | N | N | N | N |
DDL algorithm assertions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Multi-schema change: add columns | Y | Y | Y | Y | Y | E | E | E | E | E |
Change column type | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Temporary tables | Y | Y | Y | Y | Y | Y | Y | Y | N | N |
Concurrent DDL statements | Y | Y | Y | Y | Y | N | N | N | N | N |
Acceleration of ADD INDEX and CREATE INDEX |
Y | Y | Y | Y | Y | N | N | N | N | N |
Metadata lock | Y | Y | Y | Y | Y | N | N | N | N | N |
FLASHBACK CLUSTER |
Y | Y | Y | Y | Y | N | N | N | N | N |
Pause/Resume DDL | Y | Y | Y | N | N | N | N | N | N | N |
TiDB Accelerated Table Creation | Y | E | N | N | N | N | N | N | N | N |
Configure BDR role to replicate DDL statements in BDR mode | Y | E | N | N | N | N | N | N | N | N |
Transactions | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Async commit | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
1PC | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Large transactions (1 TiB) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Pessimistic transactions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Optimistic transactions | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Repeatable-read isolation (snapshot isolation) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Read-committed isolation | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Automatically terminating long-running idle transactions | Y | Y | N | N | N | N | N | N | N | N |
Bulk DML execution mode (tidb_dml_type = "bulk" ) |
E | N | N | N | N | N | N | N | N |
Partitioning | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Range partitioning | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Hash partitioning | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Key partitioning | Y | Y | Y | Y | N | N | N | N | N | N |
List partitioning | Y | Y | Y | Y | Y | Y | E | E | E | E |
List COLUMNS partitioning | Y | Y | Y | Y | Y | Y | E | E | E | E |
Default partition for List and List COLUMNS partitioned tables | Y | Y | Y | N | N | N | N | N | N | N |
EXCHANGE PARTITION |
Y | Y | Y | Y | Y | E | E | E | E | E |
REORGANIZE PARTITION |
Y | Y | Y | Y | N | N | N | N | N | N |
COALESCE PARTITION |
Y | Y | Y | Y | N | N | N | N | N | N |
Dynamic pruning | Y | Y | Y | Y | Y | Y | E | E | E | E |
Range COLUMNS partitioning | Y | Y | Y | Y | Y | N | N | N | N | N |
Range INTERVAL partitioning | Y | Y | Y | Y | E | N | N | N | N | N |
Convert a partitioned table to a non-partitioned table | Y | Y | Y | N | N | N | N | N | N | N |
Partition an existing table | Y | Y | Y | N | N | N | N | N | N | N |
Statistics | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
CMSketch | Disabled by default | Disabled by default | Disabled by default | Disabled by default | Disabled by default | Disabled by default | Disabled by default | Disabled by default | Y | Y |
Histograms | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Extended statistics | E | E | E | E | E | E | E | E | E | E |
Statistics feedback | N | N | N | N | N | Deprecated | Deprecated | E | E | E |
Automatically update statistics | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Dynamic pruning | Y | Y | Y | Y | Y | Y | E | E | E | E |
Collect statistics for PREDICATE COLUMNS |
Y | E | E | E | E | E | E | N | N | N |
Control the memory quota for collecting statistics | E | E | E | E | E | E | N | N | N | N |
Randomly sample about 10000 rows of data to quickly build statistics | Deprecated | Deprecated | Deprecated | E | E | E | E | E | E | E |
Lock statistics | Y | Y | Y | E | E | N | N | N | N | N |
Lightweight statistics initialization | Y | Y | Y | E | N | N | N | N | N | N |
Show the progress of collecting statistics | Y | Y | Y | N | N | N | N | N | N | N |
Security | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Transparent layer security (TLS) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Encryption at rest (TDE) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Role-based authentication (RBAC) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Certificate-based authentication | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
caching_sha2_password authentication |
Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
tidb_sm3_password authentication |
Y | Y | Y | Y | Y | N | N | N | N | N |
tidb_auth_token authentication |
Y | Y | Y | Y | Y | N | N | N | N | N |
authentication_ldap_sasl authentication |
Y | Y | Y | N | N | N | N | N | N | N |
authentication_ldap_simple authentication |
Y | Y | Y | Y | N | N | N | N | N | N |
Password management | Y | Y | Y | Y | Y | N | N | N | N | N |
MySQL compatible GRANT system |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Dynamic Privileges | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Security Enhanced Mode | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Redacted Log Files | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Data import and export | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
Fast import using TiDB Lightning | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Fast import using the IMPORT INTO statement |
Y | Y | Y | N | N | N | N | N | N | N |
mydumper logical dumper | Deprecated | Deprecated | Deprecated | Deprecated | Deprecated | Deprecated | Deprecated | Deprecated | Deprecated | Deprecated |
Dumpling logical dumper | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Transactional LOAD DATA 5 |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Database migration toolkit (DM) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiDB Binlog 6 | Removed | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Change data capture (CDC) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Stream data to Amazon S3, GCS, Azure Blob Storage, and NFS through TiCDC | Y | Y | Y | Y | E | N | N | N | N | N |
TiCDC supports bidirectional replication between two TiDB clusters | Y | Y | Y | Y | Y | N | N | N | N | N |
TiCDC OpenAPI v2 | Y | Y | Y | Y | N | N | N | N | N | N |
DM supports migrating MySQL 8.0 | Y | Y | E | E | E | E | N | N | N | N |
Management, observability, and tools | 8.5 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|
TiDB Dashboard UI | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiDB Dashboard Continuous Profiling | Y | Y | Y | Y | Y | Y | E | E | N | N |
TiDB Dashboard Top SQL | Y | Y | Y | Y | Y | Y | E | N | N | N |
TiDB Dashboard SQL Diagnostics | Y | Y | Y | Y | Y | E | E | E | E | E |
TiDB Dashboard Cluster Diagnostics | Y | Y | Y | Y | Y | E | E | E | E | E |
TiKV-FastTune dashboard | E | E | E | E | E | E | E | E | E | E |
Information schema | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Metrics schema | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Statements summary tables | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Statements summary tables - summary persistence | E | E | E | E | N | N | N | N | N | N |
Slow query log | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiUP deployment | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Kubernetes operator | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Built-in physical backup | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Global Kill | Y | Y | Y | Y | Y | Y | E | E | E | E |
Lock View | Y | Y | Y | Y | Y | Y | Y | Y | Y | E |
SHOW CONFIG |
Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SET CONFIG |
Y | Y | Y | Y | Y | Y | E | E | E | E |
DM WebUI | E | E | E | E | E | E | N | N | N | N |
Foreground Quota Limiter | Y | Y | Y | Y | Y | E | N | N | N | N |
Background Quota Limiter | E | E | E | E | E | N | N | N | N | N |
EBS volume snapshot backup and restore | Y | Y | Y | Y | Y | N | N | N | N | N |
PITR | Y | Y | Y | Y | Y | N | N | N | N | N |
Global memory control | Y | Y | Y | Y | Y | N | N | N | N | N |
Cross-cluster RawKV replication | E | E | E | E | E | N | N | N | N | N |
Green GC | E | E | E | E | E | E | E | E | E | E |
Resource control | Y | Y | Y | Y | N | N | N | N | N | N |
Runaway Queries management | Y | Y | E | N | N | N | N | N | N | N |
Background tasks management | E | E | E | N | N | N | N | N | N | N |
TiFlash Disaggregated Storage and Compute Architecture and S3 Support | Y | Y | Y | E | N | N | N | N | N | N |
Selecting TiDB nodes for the Distributed eXecution Framework (DXF) tasks | Y | Y | N | N | N | N | N | N | N | |
PD Follower Proxy (controlled by tidb_enable_tso_follower_proxy ) |
Y | Y | Y | Y | Y | Y | Y | Y | N | N |
Active PD Follower (controlled by pd_enable_follower_handle_region ) |
Y | E | N | N | N | N | N | N | N | N |
PD microservices | E | E | N | N | N | N | N | N | N | N |
TiDB Distributed eXecution Framework (DXF) | Y | Y | Y | E | N | N | N | N | N | N |
Global Sort | Y | Y | E | N | N | N | N | N | N | N |
TiProxy | Y | Y | N | N | N | N | N | N | N | N |
Schema cache | Y | N | N | N | N | N | N | N | N | N |
Footnotes
-
TiDB incorrectly treats latin1 as a subset of utf8. See TiDB #18955 for more details. ↩
-
Starting from v6.5.0, the expression indexes created on the functions listed by the
tidb_allow_function_for_expression_index
system variable have been tested and can be used in production environments, and more functions will be supported in the future releases. For functions not listed by this variable, the corresponding expression indexes are not recommended for use in production environments. See expression indexes for details. ↩ -
See Statement Reference for a full list of SQL statements supported. ↩
-
Starting from v6.4.0, TiDB supports high-performance and globally monotonic
AUTO_INCREMENT
columns ↩ -
Starting from TiDB v7.0.0, the new parameter
FIELDS DEFINED NULL BY
and support for importing data from S3 and GCS are experimental features. Starting from v7.6.0, TiDB processesLOAD DATA
in transactions in the same way as MySQL. TheLOAD DATA
statement in a transaction no longer automatically commits the current transaction or starts a new transaction. Moreover, you can explicitly commit or roll back theLOAD DATA
statement in a transaction. Additionally, theLOAD DATA
statement is affected by the TiDB transaction mode setting (optimistic or pessimistic transaction). ↩ -
Starting from v7.5.0, TiDB Binlog replication is deprecated. Starting from v8.3.0, TiDB Binlog is fully deprecated. Starting from v8.4.0, TiDB Binlog is removed. For incremental data replication, use TiCDC instead. For point-in-time recovery (PITR), use PITR. Before you upgrade your TiDB cluster to v8.4.0 or later versions, be sure to switch to TiCDC and PITR. ↩