From a1fefdc6655682a32de1be603ca464b993a6a1ec Mon Sep 17 00:00:00 2001 From: Aolin Date: Thu, 5 Jun 2025 11:01:58 +0800 Subject: [PATCH 01/15] v9.0.0 release notes: add new features (v9.0-beta.2) --- releases/release-9.0.0.md | 108 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 8eff5f59aa88a..3a289b59c94e4 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -73,6 +73,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Scalability +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * PD supports the microservice mode (GA) [#5766](https://github.com/tikv/pd/issues/5766) @[binshi-bing](https://github.com/binshi-bing) tw@hfxsd In v8.0.0, the PD microservice mode is released as an experimental feature. Starting from v9.0.0, the PD microservice mode is generally available (GA). This mode splits the timestamp allocation and cluster scheduling functions of PD into separate microservices that can be deployed independently, thereby enhancing performance scalability for PD and addressing performance bottlenecks of PD in large-scale clusters. @@ -86,6 +98,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Performance +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * In scenarios with hundreds of thousands to millions of users, the performance of creating and modifying users has improved by 77 times [#55563](https://github.com/pingcap/tidb/issues/55563) @[tiancaiamao](https://github.com/tiancaiamao) tw@hfxsd In previous versions, when the number of users in a cluster exceeded 200,000, the QPS for creating and modifying users drops to 1. In certain SaaS environments, if there is a need to create millions of users and periodically update user passwords in bulk, it can take up to 2 days or more, which is unacceptable for some SaaS businesses. @@ -141,6 +165,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Availability +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * TiProxy officially supports the traffic replay feature (GA) [#642](https://github.com/pingcap/tiproxy/issues/642) @[djshow832](https://github.com/djshow832) tw@hfxsd In TiProxy v1.3.0, the traffic replay feature is released as an experimental feature. In TiProxy v1.4.0, the traffic replay feature becomes generally available (GA). TiProxy provides specialized SQL commands for traffic capture and replay. This feature lets you easily capture access traffic from TiDB production clusters and replay it at a specified rate in test clusters, facilitating business validation. @@ -149,6 +185,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Reliability +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * Introduce a new system variable `max_user_connections` to limit the number of connections that different users can establish [#59203](https://github.com/pingcap/tidb/issues/59203) @[joccau](https://github.com/joccau) tw@hfxsd Starting from v9.0.0, you can use the `max_user_connections` system variable to limit the number of connections that a single user can establish to a single TiDB node. This helps prevent issues where excessive [token](/tidb-configuration-file.md#token-limit) consumption by one user causes delays in responding to requests from other users. @@ -157,6 +205,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### SQL +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * Support creating global indexes on non-unique columns of partitioned tables [#58650](https://github.com/pingcap/tidb/issues/58650) @[Defined2014](https://github.com/Defined2014) @[mjonss](https://github.com/mjonss) **tw@qiancai** Starting from v8.3.0, you can create global indexes on unique columns of partitioned tables in TiDB to improve query performance. However, creating global indexes on non-unique columns was not supported. Starting from v9.0.0, TiDB removes this restriction, enabling you to create global indexes on non-unique columns of partitioned tables, enhancing the usability of global indexes. @@ -165,6 +225,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### DB operations +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * TiDB Index Advisor [#12303](https://github.com/pingcap/tidb/issues/12303) @[qw4990](https://github.com/qw4990) **tw@Oreoxmt** Index design is essential for database performance optimization. Starting from v8.5.0, TiDB introduces the Index Advisor feature and continues to improve and enhance it. This feature analyzes high-frequency query patterns, recommends optimal indexing strategies, helps you tune performance more efficiently, and lowers the barrier to index design. @@ -181,6 +253,18 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Observability +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * Add the TiDB Workload Repository feature to support persisting historical workload data into TiKV [#58247](https://github.com/pingcap/tidb/issues/58247) @[xhebox](https://github.com/xhebox) @[henrybw](https://github.com/henrybw) @[wddevries](https://github.com/wddevries) **tw@lilin90** Many frequently updated workload metrics and status information are maintained in the memory of the instance. Such historical workload data can be persisted as part of the database for the following purposes: @@ -230,8 +314,32 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Security +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + ### Data migration +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + +* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + + Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + + For more information, see [Documentation](link). + * TiCDC introduces a new architecture for improved performance, scalability, and stability (experimental) [#442](https://github.com/pingcap/ticdc/issues/442) @[CharlesCheung96](https://github.com/CharlesCheung96) **tw@qiancai** In v9.0.0, TiCDC introduces a new architecture (experimental) that improves real-time data replication performance, scalability, and stability while reducing resource costs. This new architecture redesigns TiCDC core components and optimizes its data processing workflows. From 666738d1cf605dc5424e3a1d14e1411e32f2b078 Mon Sep 17 00:00:00 2001 From: Test User Date: Mon, 23 Jun 2025 15:23:23 +0800 Subject: [PATCH 02/15] add #8986 --- releases/release-9.0.0.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 3a289b59c94e4..9d78338c48730 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -251,6 +251,16 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- For more information, see [documentation](/br/br-pitr-manual.md#compatibility-between-ongoing-log-backup-and-snapshot-restore). +* Support redistribute data of a specific table (experimental) [#8986](https://github.com/tikv/pd/issues/8986) @[bufferflies](https://github.com/bufferflies) **tw@qiancai** + + PD automatically schedules data to distribute it as evenly as possible across all TiKV nodes in a cluster. However, this automatic scheduling is based on the overall cluster. In some cases, even if the cluster-wide data distribution is balanced, the data of a specific table might still be unevenly distributed across TiKV nodes. + + Starting from v9.0.0, you can use the [`SHOW TABLE DISTRIBUTION`](/sql-statements/sql-statement-show-distribution-jobs.md) statement to check how the data of a specific table is distributed across all TiKV nodes. If the data distribution is unbalanced, you can use the [`DISTRIBUTE TABLE`](/sql-statements/sql-statement-distribute-table.md) statement to redistribute the table's data (experimental) to improve load balancing. + + Note that redistributing the data of a specific table is a one-time task with a timeout limit. If the distribution task is not completed before the timeout, it will automatically exit. + + For more information, see [documentation](/sql-statements/sql-statement-distribute-table.md). + ### Observability * Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** From daa2231e62d3d31f42ae1b220b55cce08e242091 Mon Sep 17 00:00:00 2001 From: Test User Date: Mon, 23 Jun 2025 15:33:11 +0800 Subject: [PATCH 03/15] Update release-9.0.0.md --- releases/release-9.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 9d78338c48730..64e58b269f20e 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -251,7 +251,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- For more information, see [documentation](/br/br-pitr-manual.md#compatibility-between-ongoing-log-backup-and-snapshot-restore). -* Support redistribute data of a specific table (experimental) [#8986](https://github.com/tikv/pd/issues/8986) @[bufferflies](https://github.com/bufferflies) **tw@qiancai** +* Support redistributing data of a specific table (experimental) [#8986](https://github.com/tikv/pd/issues/8986) @[bufferflies](https://github.com/bufferflies) **tw@qiancai** PD automatically schedules data to distribute it as evenly as possible across all TiKV nodes in a cluster. However, this automatic scheduling is based on the overall cluster. In some cases, even if the cluster-wide data distribution is balanced, the data of a specific table might still be unevenly distributed across TiKV nodes. From e2be607b0f398268a8cbdbc3de1cab6af330fc9d Mon Sep 17 00:00:00 2001 From: Aolin Date: Thu, 26 Jun 2025 10:17:47 +0800 Subject: [PATCH 04/15] update Statement Summary Tables and slow queries --- releases/release-9.0.0.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 64e58b269f20e..071a3d4caf38d 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -322,6 +322,24 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- For more information, see [documentation](/sql-statements/sql-statement-explain-analyze.md). +* Add storage engine identifiers to statement summary tables and slow query logs [#61736](https://github.com/pingcap/tidb/issues/61736) @[henrybw](https://github.com/henrybw) **tw@Oreoxmt** + + During database diagnostics and performance optimization, users often need to filter SQL statements by storage engine. For example, if TiFlash has a high load, users need to identify queries running on TiFlash to locate potential causes. To meet this need, starting from v9.0.0, TiDB adds storage engine identifier fields to major SQL observability components. + + New fields in [statement summary tables](/statement-summary-tables.md): + + * `STORAGE_KV`: `1` indicates that the SQL statement accesses TiKV. + * `STORAGE_MPP`: `1` indicates that the SQL statement accesses TiFlash. + + New fields in [slow query logs](/identify-slow-queries.md): + + * `Storage_from_kv`: `true` indicates that the SQL statement accesses TiKV. + * `Storage_from_mpp`: `true` indicates that the SQL statement accesses TiFlash. + + This feature simplifies workflows in certain diagnostics and performance optimization scenarios and improves issue identification efficiency. + + For more information, see [Statement Summary Tables](/statement-summary-tables.md) and [Identify Slow Queries](/identify-slow-queries.md). + ### Security * Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** From bd95ad645ee37159f125da859475e3b14c2a9ed8 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 26 Jun 2025 10:31:36 +0800 Subject: [PATCH 05/15] Apply suggestions from code review --- releases/release-9.0.0.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 071a3d4caf38d..8bb59fc78ffa8 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -98,15 +98,11 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Performance -* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** - - Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. +* Optimize performance for creating databases, tables, and adding columns in scenarios with foreign keys [#61126](https://github.com/pingcap/tidb/issues/61126) @[GMHDBJD](https://github.com/GMHDBJD) @[River2000i](https://github.com/River2000i) **tw@hfxsd** - For more information, see [Documentation](link). + In earlier versions, TiDB encounters significant performance bottlenecks when creating tables with foreign keys in certain SaaS scenarios, especially when the number of tables in a cluster reaches tens of millions. A large number of foreign key relationships further slows down the execution of DDL operations such as `CREATE TABLE` and `ADD COLUMN`. -* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** - - Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + Starting from v9.0.0, TiDB optimizes the handling of related metadata, significantly improving DDL performance in scenarios with extremely large table counts. According to internal tests, under idle cluster workload and with a connection to the DDL owner node, the table creation speed can reach up to 126 tables per second, and the average execution speed of the `ADD COLUMN` operation is approximately 45.5 tables per second. For more information, see [Documentation](link). @@ -185,15 +181,15 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Reliability -* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** +* Introduce a mechanism for detecting connection interruption to automatically terminate running SQL statements on the server side once the client is disconnected [#60685](https://github.com/pingcap/tidb/pull/60685) @[Defined2014](https://github.com/Defined2014) **tw@hfxsd** - Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + To improve resource utilization and system stability, TiDB v9.0.0 introduces a mechanism for detecting connection interruption. When a client connection is unexpectedly closed, TiDB terminates SQL statements that are still running on that connection, promptly releasing resources and preventing long-running invalid statements from impacting system performance. For more information, see [Documentation](link). -* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** +* Introduce Table Mode to restrict read and write operations during data restore, improving task stability and data consistency [#59008](https://github.com/pingcap/tidb/issues/59008) @[fishiu](https://github.com/fishiu) @[River2000i](https://github.com/River2000i) @[Tristan1900](https://github.com/Tristan1900) @[Leavrth](https://github.com/Leavrth) **tw@hfxsd** - Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + TiDB introduces Table Mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the Table Mode of the target table is set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the Table Mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. For more information, see [Documentation](link). From 72fb0b9aaff5f2a4f41e894e39fc0ce6904f7b38 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 26 Jun 2025 10:32:15 +0800 Subject: [PATCH 06/15] Update releases/release-9.0.0.md --- releases/release-9.0.0.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 8bb59fc78ffa8..07b12d1cec0ac 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -201,15 +201,14 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### SQL -* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** - - Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. +* Support the `gb18030` character set and `gb18030_bin` and `gb18030_chinese_ci` collations [#17470](https://github.com/tikv/tikv/issues/17470) [#55791](https://github.com/pingcap/tidb/issues/55791) @[cbcwestwolf](https://github.com/cbcwestwolf) *tw@hfxsd* - For more information, see [Documentation](link). + Starting from v9.0.0, TiDB supports the `gb18030` character set along with the `gb18030_bin` and `gb18030_chinese_ci` collations, enabling better handling of Chinese-language data storage and query requirements. -* Placeholder for feature summary [#Issue-number](issue-link) @[Contributor-GitHub-ID](id-link) **tw@xxx** + - The `gb18030` character set is a widely used standard for Chinese character encoding. + - The `gb18030_bin` collation provides precise binary-based sorting, while `gb18030_chinese_ci` supports case-insensitive general collation. These two collations offer more flexible and efficient sorting and comparison for text encoded in `gb18030`. - Provide a concise overview of what the feature is, the value it offers to users, and include a brief sentence on how to use it effectively. If there are any particularly important aspects of this feature, be sure to mention them as well. + By supporting the `gb18030` character set and its collations, TiDB v9.0.0 improves compatibility with Chinese-language applications. This enhancement simplifies character set selection and operations in multilingual and multi-encoding scenarios, improving the overall user experience. For more information, see [Documentation](link). From c7db2521a42880a0e0130168be30fb509d258794 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 26 Jun 2025 10:46:06 +0800 Subject: [PATCH 07/15] Update releases/release-9.0.0.md --- releases/release-9.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 07b12d1cec0ac..357b0950e3d51 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -210,7 +210,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- By supporting the `gb18030` character set and its collations, TiDB v9.0.0 improves compatibility with Chinese-language applications. This enhancement simplifies character set selection and operations in multilingual and multi-encoding scenarios, improving the overall user experience. - For more information, see [Documentation](link). + For more information, see [Documentation](/character-set-gb18030.md). * Support creating global indexes on non-unique columns of partitioned tables [#58650](https://github.com/pingcap/tidb/issues/58650) @[Defined2014](https://github.com/Defined2014) @[mjonss](https://github.com/mjonss) **tw@qiancai** From 4a642811b092c499efeedb4b213d23a2c646a06c Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 26 Jun 2025 14:18:54 +0800 Subject: [PATCH 08/15] Update releases/release-9.0.0.md --- releases/release-9.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 357b0950e3d51..0088fcb6fbc8f 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -191,7 +191,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- TiDB introduces Table Mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the Table Mode of the target table is set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the Table Mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. - For more information, see [Documentation](link). + For more information, see [Documentation](/br/br-pitr-guide.md). * Introduce a new system variable `max_user_connections` to limit the number of connections that different users can establish [#59203](https://github.com/pingcap/tidb/issues/59203) @[joccau](https://github.com/joccau) tw@hfxsd From 1ee1fd67e9b5a6975deabe3e198b26341d9bf249 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 27 Jun 2025 09:48:13 +0800 Subject: [PATCH 09/15] Update releases/release-9.0.0.md --- releases/release-9.0.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 0088fcb6fbc8f..539a9f70455a0 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -187,9 +187,9 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- For more information, see [Documentation](link). -* Introduce Table Mode to restrict read and write operations during data restore, improving task stability and data consistency [#59008](https://github.com/pingcap/tidb/issues/59008) @[fishiu](https://github.com/fishiu) @[River2000i](https://github.com/River2000i) @[Tristan1900](https://github.com/Tristan1900) @[Leavrth](https://github.com/Leavrth) **tw@hfxsd** +* Introduce the table mode to restrict read and write operations during data restore, improving task stability and data consistency [#59008](https://github.com/pingcap/tidb/issues/59008) @[fishiu](https://github.com/fishiu) @[River2000i](https://github.com/River2000i) @[Tristan1900](https://github.com/Tristan1900) @[Leavrth](https://github.com/Leavrth) **tw@hfxsd** - TiDB introduces Table Mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the Table Mode of the target table is set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the Table Mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. + TiDB introduces the table mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the table mode of the target table is automatically set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the table mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. For more information, see [Documentation](/br/br-pitr-guide.md). From 22f3ffcf63967e8717dcb3107b226f2643a98805 Mon Sep 17 00:00:00 2001 From: Aolin Date: Fri, 27 Jun 2025 11:46:56 +0800 Subject: [PATCH 10/15] update Statement Summary Tables and slow queries --- releases/release-9.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 539a9f70455a0..fa11980f5c931 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -319,7 +319,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- * Add storage engine identifiers to statement summary tables and slow query logs [#61736](https://github.com/pingcap/tidb/issues/61736) @[henrybw](https://github.com/henrybw) **tw@Oreoxmt** - During database diagnostics and performance optimization, users often need to filter SQL statements by storage engine. For example, if TiFlash has a high load, users need to identify queries running on TiFlash to locate potential causes. To meet this need, starting from v9.0.0, TiDB adds storage engine identifier fields to major SQL observability components. + When both TiKV and TiFlash are deployed in a cluster, users often need to filter SQL statements by storage engine during database diagnostics and performance optimization. For example, if TiFlash is under high load, users might need to identify SQL statements running on TiFlash to locate potential causes. To meet this need, starting from v9.0.0, TiDB adds storage engine identifier fields to statement summary tables and slow query logs. New fields in [statement summary tables](/statement-summary-tables.md): From 98a769447f1242bc613e322fcad4019c58b234fd Mon Sep 17 00:00:00 2001 From: lilin90 Date: Fri, 27 Jun 2025 18:10:40 +0800 Subject: [PATCH 11/15] releases: add BURSTABLE feature description --- releases/release-9.0.0.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index fa11980f5c931..5df1c41ed313c 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -176,7 +176,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- * TiProxy officially supports the traffic replay feature (GA) [#642](https://github.com/pingcap/tiproxy/issues/642) @[djshow832](https://github.com/djshow832) tw@hfxsd In TiProxy v1.3.0, the traffic replay feature is released as an experimental feature. In TiProxy v1.4.0, the traffic replay feature becomes generally available (GA). TiProxy provides specialized SQL commands for traffic capture and replay. This feature lets you easily capture access traffic from TiDB production clusters and replay it at a specified rate in test clusters, facilitating business validation. - + For more information, see [documentation](/tiproxy/tiproxy-traffic-replay.md). ### Reliability @@ -196,12 +196,22 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- * Introduce a new system variable `max_user_connections` to limit the number of connections that different users can establish [#59203](https://github.com/pingcap/tidb/issues/59203) @[joccau](https://github.com/joccau) tw@hfxsd Starting from v9.0.0, you can use the `max_user_connections` system variable to limit the number of connections that a single user can establish to a single TiDB node. This helps prevent issues where excessive [token](/tidb-configuration-file.md#token-limit) consumption by one user causes delays in responding to requests from other users. - + For more information, see [documentation](/system-variables.md#max_user_connections-new-in-v900). +* Restrict resource groups from overusing system resources [#9057](https://github.com/tikv/pd/issues/9057) [#59389](https://github.com/pingcap/tidb/issues/59389) @[lhy1024](https://github.com/lhy1024) **tw@lilin90** + + Before v9.0.0, when the `BURSTABLE` attribute is set for a resource group, TiDB allows the group’s applications to overuse system resources. However, such overuse could crowd out resources allocated to other resource groups, impacting their SLAs. Starting from v9.0.0, TiDB introduces support for different `BURSTABLE` modes. If you do not explicitly specify a value for `BURSTABLE`, the `MODERATED` mode is enabled by default. In this mode, TiDB dynamically adjusts the limit on excess resource usage, aiming to prioritize satisfying quotas across all resource groups. The previous unlimited mode remains available and you can explicitly configure it using `BURSTABLE=UNLIMITED`. + + Note that if you upgrade the TiDB cluster from an earlier version to v9.0.0, existing resource groups retain their original behavior (`UNLIMITED`). To switch to the `MODERATED` mode, you must modify the resource group configuration using [`ALTER RESOURCE GROUP`](/sql-statements/sql-statement-alter-resource-group.md). + + The `MODERATED` mode is well-suited for environments where multiple resource groups have similar priority. It allows some groups to safely overflow their quotas, improving resource utilization while maintaining quality of service. + + For more information, see [documentation](/sql-statements/sql-statement-create-resource-group.md). + ### SQL -* Support the `gb18030` character set and `gb18030_bin` and `gb18030_chinese_ci` collations [#17470](https://github.com/tikv/tikv/issues/17470) [#55791](https://github.com/pingcap/tidb/issues/55791) @[cbcwestwolf](https://github.com/cbcwestwolf) *tw@hfxsd* +* Support the `gb18030` character set and `gb18030_bin` and `gb18030_chinese_ci` collations [#17470](https://github.com/tikv/tikv/issues/17470) [#55791](https://github.com/pingcap/tidb/issues/55791) @[cbcwestwolf](https://github.com/cbcwestwolf) *tw@hfxsd* Starting from v9.0.0, TiDB supports the `gb18030` character set along with the `gb18030_bin` and `gb18030_chinese_ci` collations, enabling better handling of Chinese-language data storage and query requirements. From 083bd549ed0393eb54e0e90e64bbdf5e48efbc18 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Mon, 30 Jun 2025 11:40:17 +0800 Subject: [PATCH 12/15] Apply suggestions from code review --- releases/release-9.0.0.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 5df1c41ed313c..4096612798211 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -104,8 +104,6 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- Starting from v9.0.0, TiDB optimizes the handling of related metadata, significantly improving DDL performance in scenarios with extremely large table counts. According to internal tests, under idle cluster workload and with a connection to the DDL owner node, the table creation speed can reach up to 126 tables per second, and the average execution speed of the `ADD COLUMN` operation is approximately 45.5 tables per second. - For more information, see [Documentation](link). - * In scenarios with hundreds of thousands to millions of users, the performance of creating and modifying users has improved by 77 times [#55563](https://github.com/pingcap/tidb/issues/55563) @[tiancaiamao](https://github.com/tiancaiamao) tw@hfxsd In previous versions, when the number of users in a cluster exceeded 200,000, the QPS for creating and modifying users drops to 1. In certain SaaS environments, if there is a need to create millions of users and periodically update user passwords in bulk, it can take up to 2 days or more, which is unacceptable for some SaaS businesses. @@ -185,8 +183,6 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- To improve resource utilization and system stability, TiDB v9.0.0 introduces a mechanism for detecting connection interruption. When a client connection is unexpectedly closed, TiDB terminates SQL statements that are still running on that connection, promptly releasing resources and preventing long-running invalid statements from impacting system performance. - For more information, see [Documentation](link). - * Introduce the table mode to restrict read and write operations during data restore, improving task stability and data consistency [#59008](https://github.com/pingcap/tidb/issues/59008) @[fishiu](https://github.com/fishiu) @[River2000i](https://github.com/River2000i) @[Tristan1900](https://github.com/Tristan1900) @[Leavrth](https://github.com/Leavrth) **tw@hfxsd** TiDB introduces the table mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the table mode of the target table is automatically set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the table mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. From de801454bff60cfda4416a66a33619b30ed60859 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Tue, 1 Jul 2025 08:54:39 +0800 Subject: [PATCH 13/15] Update releases/release-9.0.0.md --- releases/release-9.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 4096612798211..367839cc96d3a 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -100,7 +100,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- * Optimize performance for creating databases, tables, and adding columns in scenarios with foreign keys [#61126](https://github.com/pingcap/tidb/issues/61126) @[GMHDBJD](https://github.com/GMHDBJD) @[River2000i](https://github.com/River2000i) **tw@hfxsd** - In earlier versions, TiDB encounters significant performance bottlenecks when creating tables with foreign keys in certain SaaS scenarios, especially when the number of tables in a cluster reaches tens of millions. A large number of foreign key relationships further slows down the execution of DDL operations such as `CREATE TABLE` and `ADD COLUMN`. + Before v9.0.0, TiDB encounters significant performance bottlenecks when creating tables with foreign keys in certain SaaS scenarios, especially when the number of tables in a cluster reaches tens of millions. A large number of foreign key relationships further slows down the execution of DDL operations such as `CREATE TABLE` and `ADD COLUMN`. Starting from v9.0.0, TiDB optimizes the handling of related metadata, significantly improving DDL performance in scenarios with extremely large table counts. According to internal tests, under idle cluster workload and with a connection to the DDL owner node, the table creation speed can reach up to 126 tables per second, and the average execution speed of the `ADD COLUMN` operation is approximately 45.5 tables per second. From a7e0a0cf0e988b24fb694694d7dee8b38ddacee3 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Tue, 1 Jul 2025 08:57:01 +0800 Subject: [PATCH 14/15] Update releases/release-9.0.0.md --- releases/release-9.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index 367839cc96d3a..d43254ed72d7d 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -185,7 +185,7 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- * Introduce the table mode to restrict read and write operations during data restore, improving task stability and data consistency [#59008](https://github.com/pingcap/tidb/issues/59008) @[fishiu](https://github.com/fishiu) @[River2000i](https://github.com/River2000i) @[Tristan1900](https://github.com/Tristan1900) @[Leavrth](https://github.com/Leavrth) **tw@hfxsd** - TiDB introduces the table mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the table mode of the target table is automatically set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the table mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. + TiDB v9.0.0 introduces the table mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the table mode of the target table is automatically set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the table mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. For more information, see [Documentation](/br/br-pitr-guide.md). From ce3ff7f7e346999a0c4c675b5bae2794cc5305d0 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Mon, 7 Jul 2025 16:31:22 +0800 Subject: [PATCH 15/15] Update wording --- releases/release-9.0.0.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/releases/release-9.0.0.md b/releases/release-9.0.0.md index d43254ed72d7d..0f34f0a9f6875 100644 --- a/releases/release-9.0.0.md +++ b/releases/release-9.0.0.md @@ -98,11 +98,11 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### Performance -* Optimize performance for creating databases, tables, and adding columns in scenarios with foreign keys [#61126](https://github.com/pingcap/tidb/issues/61126) @[GMHDBJD](https://github.com/GMHDBJD) @[River2000i](https://github.com/River2000i) **tw@hfxsd** +* Optimize performance for creating databases, tables, and adding columns in scenarios involving tables with foreign keys [#61126](https://github.com/pingcap/tidb/issues/61126) @[GMHDBJD](https://github.com/GMHDBJD) @[River2000i](https://github.com/River2000i) **tw@hfxsd** Before v9.0.0, TiDB encounters significant performance bottlenecks when creating tables with foreign keys in certain SaaS scenarios, especially when the number of tables in a cluster reaches tens of millions. A large number of foreign key relationships further slows down the execution of DDL operations such as `CREATE TABLE` and `ADD COLUMN`. - Starting from v9.0.0, TiDB optimizes the handling of related metadata, significantly improving DDL performance in scenarios with extremely large table counts. According to internal tests, under idle cluster workload and with a connection to the DDL owner node, the table creation speed can reach up to 126 tables per second, and the average execution speed of the `ADD COLUMN` operation is approximately 45.5 tables per second. + Starting from v9.0.0, TiDB optimizes the handling logic of related metadata, significantly improving DDL performance in scenarios with extremely large tables. According to internal tests, under idle cluster workload and with a connection to the DDL owner node, the table creation speed can reach up to 126 tables per second, and the average execution speed of the `ADD COLUMN` operation is approximately 45.5 tables per second. * In scenarios with hundreds of thousands to millions of users, the performance of creating and modifying users has improved by 77 times [#55563](https://github.com/pingcap/tidb/issues/55563) @[tiancaiamao](https://github.com/tiancaiamao) tw@hfxsd @@ -181,11 +181,11 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- * Introduce a mechanism for detecting connection interruption to automatically terminate running SQL statements on the server side once the client is disconnected [#60685](https://github.com/pingcap/tidb/pull/60685) @[Defined2014](https://github.com/Defined2014) **tw@hfxsd** - To improve resource utilization and system stability, TiDB v9.0.0 introduces a mechanism for detecting connection interruption. When a client connection is unexpectedly closed, TiDB terminates SQL statements that are still running on that connection, promptly releasing resources and preventing long-running invalid statements from impacting system performance. + To improve resource utilization and system stability, TiDB v9.0.0 introduces a mechanism for detecting connection interruption. When a client disconnects unexpectedly, TiDB proactively terminates SQL statements that are still running on that connection, promptly releasing resources and preventing long-running invalid statements from impacting system performance. * Introduce the table mode to restrict read and write operations during data restore, improving task stability and data consistency [#59008](https://github.com/pingcap/tidb/issues/59008) @[fishiu](https://github.com/fishiu) @[River2000i](https://github.com/River2000i) @[Tristan1900](https://github.com/Tristan1900) @[Leavrth](https://github.com/Leavrth) **tw@hfxsd** - TiDB v9.0.0 introduces the table mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the table mode of the target table is automatically set to `restore`. In this mode, all user read and write operations on the table are blocked. Once the restore process completes, the table mode automatically switches back to `normal`, allowing regular access to the table. This mechanism ensures greater stability and consistency during data recovery. + TiDB v9.0.0 introduces the table mode to enhance the stability and consistency of backup and restore tasks. When performing snapshot restore or PITR (Point-in-Time Recovery), the table mode of the target table is automatically set to `restore`. In this mode, all read and write operations on the table are disallowed. Once the restore process completes, the table mode automatically switches back to `normal`, allowing regular read and write operations. This mechanism ensures greater stability and consistency during data recovery. For more information, see [Documentation](/br/br-pitr-guide.md). @@ -207,9 +207,9 @@ Quick access: [Quick start](https://docs.pingcap.com/tidb/v9.0/quick-start-with- ### SQL -* Support the `gb18030` character set and `gb18030_bin` and `gb18030_chinese_ci` collations [#17470](https://github.com/tikv/tikv/issues/17470) [#55791](https://github.com/pingcap/tidb/issues/55791) @[cbcwestwolf](https://github.com/cbcwestwolf) *tw@hfxsd* +* Support the `gb18030` character set, and `gb18030_bin` and `gb18030_chinese_ci` collations [#17470](https://github.com/tikv/tikv/issues/17470) [#55791](https://github.com/pingcap/tidb/issues/55791) @[cbcwestwolf](https://github.com/cbcwestwolf) *tw@hfxsd* - Starting from v9.0.0, TiDB supports the `gb18030` character set along with the `gb18030_bin` and `gb18030_chinese_ci` collations, enabling better handling of Chinese-language data storage and query requirements. + Starting from v9.0.0, TiDB supports the `gb18030` character set along with the `gb18030_bin` and `gb18030_chinese_ci` collations, improving TiDB's ability to store and query data in Chinese. - The `gb18030` character set is a widely used standard for Chinese character encoding. - The `gb18030_bin` collation provides precise binary-based sorting, while `gb18030_chinese_ci` supports case-insensitive general collation. These two collations offer more flexible and efficient sorting and comparison for text encoded in `gb18030`.