TiDB 8.5.3 Release Notes
Release date: August 14, 2025
TiDB version: 8.5.3
Quick access: Quick start | Production deployment
Compatibility changes
- Add the following system variables for internal use by the Cost Model. It is NOT recommended to modify these variables:
tidb_opt_hash_agg_cost_factor
,tidb_opt_hash_join_cost_factor
,tidb_opt_index_join_cost_factor
,tidb_opt_index_lookup_cost_factor
,tidb_opt_index_merge_cost_factor
,tidb_opt_index_reader_cost_factor
,tidb_opt_index_scan_cost_factor
,tidb_opt_limit_cost_factor
,tidb_opt_merge_join_cost_factor
,tidb_opt_sort_cost_factor
,tidb_opt_stream_agg_cost_factor
,tidb_opt_table_full_scan_cost_factor
,tidb_opt_table_range_scan_cost_factor
,tidb_opt_table_reader_cost_factor
,tidb_opt_table_rowid_cost_factor
,tidb_opt_table_tiflash_scan_cost_factor
, andtidb_opt_topn_cost_factor
#60357 @terry1purcell - Reintroduce the telemetry feature. However, it only logs telemetry-related information locally and no longer sends data to PingCAP over the network #61766 @Defined2014
Improvements
TiDB
- Adjust estimation results from 0 to 1 for equality conditions that do not hit TopN when statistics are entirely composed of TopN and the modified row count in the corresponding table statistics is non-zero #47400 @terry1purcell
- Improve the performance of adding unique indexes using global sort, and refine the error message when adding duplicate unique indexes #61689 @CbcWestwolf
- Disable TiKV switching to import mode when
IMPORT INTO
enables global sort #60361 @D3Hunter - Add a monitoring metric to observe the write speed to TiKV during index addition #60925 @CbcWestwolf
- Optimize the scheduling logic of
merge sort
sub-tasks to improve sorting performance #60375 @tangenta - Accelerate table creation when creating a large number of tables with foreign keys, and optimize memory usage efficiency #61126 @GMHDBJD
- Improve the read performance of the
information_schema.tables
table #62020 @tangenta - Add flow control interfaces for Region splitting and data ingestion during data import #61553 @tangenta
- Optimize the plan construction process for IndexScan by reducing
fmt.Sprintf()
calls #56649 @crazycs520 - Add monitoring metrics for the merge sort stage when using Global Sort with indexes #61025 @fzzf678
- Remove redundant log entries when the
IndexLookup
operator encounters acontext canceled
error #61072 @yibin87 - Improve the performance when
tidb_replica_read
is set toclosest-adaptive
#61745 @you06 - Reduce operational costs by decreasing the amount of monitoring metrics data in large-scale clusters #59990 @zimulala
TiKV
- Support ingesting SST files without blocking foreground writes, reducing the impact of latency #18081 @hhwyt
- Reduce performance jitter caused by the flow controller #18625 @hhwyt
- Optimize tail latency during
ADD INDEX
operations in TiDB #18081 @overvenus - Optimize the handling of
CompactedEvent
in Raftstore by moving it to thesplit-check
worker, reducing blocking on the main Raftstore thread #18532 @LykxSassinator - Log only
SST ingest is experiencing slowdowns
when SST ingest is too slow, and skip callingget_sst_key_ranges
to avoid performance jitter #18549 @LykxSassinator - Optimize the detection mechanism for I/O jitter on KvDB disks when KvDB and RaftDB use separate mount paths #18463 @LykxSassinator
- Optimize the performance of
fetch_entries_to
in Raft Engine to reduce contention and improve performance under mixed workloads #18605 @LykxSassinator - Optimize the cleanup mechanism of residual data to mitigate the impact on request latency #18107 @LykxSassinator
PD
- Add GO runtime-related monitoring metrics in Prometheus #8931 @bufferflies
- Extend the recovery time after triggering slow node leader eviction from 600 seconds to 900 seconds (15 minutes) #9329 @rleungx
TiFlash
- Increase the maximum retry count when acquiring storage snapshots to improve query stability for large tables #10300 @JaySon-Huang
- Enhance the observability for TiFlash OOM risks in wide table scenarios #10272 @JaySon-Huang
Tools
Backup & Restore (BR)
- Improve the index restore speed during PITR by repairing indexes concurrently #59158 @Leavrth
- The Download API of TiKV supports filtering out data within a certain time range when downloading backup files, which avoids importing outdated or future data versions during restore #18399 @3pointer
- Support filtering log backup metadata files by timestamp to reduce the time spent on reading metadata during PITR #61318 @3pointer
Bug fixes
TiDB
- Fix the issue of incorrect key range in
ALTER RANGE meta SET PLACEMENT POLICY
#60888 @nolouch - Fix the issue that decreasing the number of workers during index creation might cause the task to hang #59267 @D3Hunter
- Fix the issue that the
ADMIN SHOW DDL JOBS
statement does not display the row count correctly #59897 @tangenta - Fix the issue that data race might occur when dynamically adjusting the number of workers during index creation #59016 @D3Hunter
- Fix the issue that the data in the Stats Healthy Distribution panel of Grafana might be incorrect #57176 @hawkingrei
- Fix the issue that an error might occur when using
IMPORT INTO ... FROM SELECT
to import data into TiFlash #58443 @D3Hunter - Fix the issue that enabling
tidb_enable_dist_task
causes TiDB upgrade to fail #54061 @tangenta - Fix the issue that improper exception handling for statistics causes in-memory statistics to be mistakenly deleted when background tasks time out #57901 @hawkingrei
- Fix the issue that the row count is not updated correctly when adding indexes in the TiDB Distributed eXecution Framework (DXF) #58573 @D3Hunter
- Fix the issue that TiFlash query results are inconsistent after executing a lossy DDL statement #61455 @Lloyd-Pottiger
- Fix the issue that TiDB fails to retry when encountering EOF errors with GCS #59754 @D3Hunter
- Fix the issue of invalid KV ranges when using Global Sort #59841 @GMHDBJD
- Fix the issue that an empty index name is generated when executing the
CREATE INDEX IF NOT EXISTS
statement #61265 @CbcWestwolf - Fix the issue that after disabling metadata locking (MDL), DDL operations get stuck after failing to update the schema version #61210 @wjhuang2016
- Fix the issue that non-public indexes are shown in the statistics system table #60430 @tangenta
- Fix the issue that incorrect memory tracking in the HashAgg operator causes a large number of error logs #58822 @xzhangxian1008
- Fix the issue that a
nil
buffer inbasePartialResult4GroupConcat
causes a panic during disk spilling in the HashAgg operator #61749 @xzhangxian1008 - Fix the issue that incorrect return values in the encoding logic of aggregate expressions cause a panic during query execution #61735 @YangKeao
- Fix the issue that the HashJoin operator causes Goroutine leaks due to memory overuse #60926 @xzhangxian1008
- Fix the issue that shared KV requests in
IndexMerge
andIndexLookUp
operators cause data races when pushing down queries #60175 @you06 - Fix the issue that SQL statements containing
_charset(xxx), _charset(xxx2), ...
generate different digests #58447 @xhebox - Fix the issue that TiDB might panic when handling invalid UTF-8 characters #47521 @Defined2014
- Fix the issue that inserting an invalid daylight saving time (DST) timestamp results in
0000-00-00
#61334 @mjonss - Fix the issue that using
INSERT IGNORE
to insert an invalid daylight saving time timestamp in strict SQL mode results in a timestamp inconsistent with MySQL #61439 @mjonss - Fix the issue that frequent Region merges prevent TTL jobs from starting #61512 @YangKeao
- Fix the issue that the column length returned by TiDB in the network protocol might be
0
. If it is0
, TiDB returns the default length of each field type #60503 @xhebox - Fix the issue that the returned type of
blob
in the network protocol is inconsistent with MySQL #60195 @dveeden - Fix the issue that the length returned by
CAST()
is incompatible with MySQL #61350 @YangKeao - Fix the issue that the comparison behavior of
latin1_bin
differs from that ofutf8mb4_bin
andutf8_bin
#60701 @hawkingrei - Fix the issue that pessimistic locks might remain when a query is terminated #61454 @zyguan
- Fix the issue that an error occurs when TiDB executes large queries due to loading too many Regions from PD in a single request #1704 @you06
- Fix the issue of incorrect key range in
TiKV
- Fix the issue that TiKV fails to terminate ongoing manual compaction tasks during graceful shutdown #18396 @LykxSassinator
- Fix the issue that the default Region size is unexpectedly changed after a cluster upgrade #18503 @LykxSassinator
- Fix the issue that TiKV might use a compression algorithm that the client cannot decode #18079 @ekexium
- Fix the issue that blob indexes might cause apply snapshot failures after Titan is disabled #18434 @v01dstar
- Fix misleading descriptions in
StoreMsg
log entries in slow logs #18561 @LykxSassinator - Fix the issue that TiKV allows excessive SST ingest requests under high concurrency #18452 @hbisheng
- Fix the issue that TiKV might panic due to duplicate results during lock scanning #16818 @cfzjywxk
PD
- Fix the issue that
recovery-duration
does not take effect in the slow node detection mechanism #9384 @rleungx - Fix the issue that the Evict Leader scheduler might be incorrectly paused after a cluster upgrade #9416 @rleungx
- Fix the issue that improperly closing TiDB Dashboard TCP connections could lead to PD goroutine leaks #9402 @baurine
- Fix the issue that newly added TiKV nodes might fail to be scheduled #9145 @bufferflies
- Fix the issue that
TiFlash
- Fix the issue that creating an expression index in the form of
((NULL))
causes TiFlash to panic #9891 @JaySon-Huang - Fix the issue that misaligned mutex in the Join operator causes TiFlash to crash in certain environments #10163 @windtalker
- Fix the issue that missing resource control low token signals lead to query throttling #10137 @guo-shaoge
- Fix the issue that creating an expression index in the form of
Tools
Backup & Restore (BR)
- Fix the issue that available space on storage nodes is unnecessarily rechecked during breakpoint recovery #54316 @Leavrth
- Fix the issue that data imports from external storage do not automatically retry when the HTTP/2 GOAWAY error occurs #60143 @joechenrh
- Fix the
keepalive watchdog timedout
error that occurs during restore due to import mode switching #18541 @Leavrth - Fix the issue that log backup uploads to Azure Blob Storage are slow when transferring large volumes of data #18410 @YuJuncen
- Fix the issue that BR does not check whether the corresponding table exists in the cluster when filtering tables with
-f
#61592 @RidRisR - Fix the issue that PITR fails to restore indexes larger than 3072 bytes #58430 @YuJuncen
- Fix the issue that RangeTree results consume memory inefficiently during full backup #58587 @3pointer
TiCDC
- Fix the issue that evaluating event filter expressions on tables containing virtual columns might cause a panic #12206 @lidezhu
- Fix the issue that the resolved ts lag keeps increasing after scaling in or out TiKV nodes on the same IP address because of outdated store IDs #12162 @3AceShowHand
- Fix the issue of case-sensitive matching for column and index names in the dispatcher configuration #12103 @wk989898
- Fix the issue that configuring
column-selector
with the Debezium protocol might cause a panic #12208 @wk989898
TiDB Lightning