From 7b14cd1555409b83ddf84ee788300bdc0ceb742a Mon Sep 17 00:00:00 2001 From: Aolin Date: Thu, 17 Nov 2022 18:15:56 +0800 Subject: [PATCH] This is an automated cherry-pick of #12038 Signed-off-by: ti-chi-bot --- releases/release-6.1.0.md | 2 +- releases/release-6.2.0.md | 440 +++++++++++++++++++++++++++++++++++ releases/release-6.4.0.md | 472 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 913 insertions(+), 1 deletion(-) create mode 100644 releases/release-6.2.0.md create mode 100644 releases/release-6.4.0.md diff --git a/releases/release-6.1.0.md b/releases/release-6.1.0.md index ec8c2bdb1deb..c143370aaefa 100644 --- a/releases/release-6.1.0.md +++ b/releases/release-6.1.0.md @@ -2,7 +2,7 @@ title: TiDB 6.1.0 Release Notes --- -# TiDB v6.1.0 Release Notes +# TiDB 6.1.0 Release Notes 发版日期:2022 年 6 月 13 日 diff --git a/releases/release-6.2.0.md b/releases/release-6.2.0.md new file mode 100644 index 000000000000..82c94ea99901 --- /dev/null +++ b/releases/release-6.2.0.md @@ -0,0 +1,440 @@ +--- +title: TiDB 6.2.0 Release Notes +--- + +# TiDB 6.2.0 Release Notes + +发版日期:2022 年 8 月 23 日 + +TiDB 版本:6.2.0-DMR + +试用链接:[快速体验](https://docs.pingcap.com/zh/tidb/v6.2/quick-start-with-tidb) | [下载离线包](https://cn.pingcap.com/product-community/?version=v6.2.0-DMR#version-list) + +在 6.2.0-DMR 版本中,你可以获得以下关键特性: + +- TiDB Dashboard 支持[可视化执行计划](/dashboard/dashboard-slow-query.md#图形化执行计划介绍),查询计划展示更直观。 +- TiDB Dashboard 新增 [Monitoring 页面](/dashboard/dashboard-monitoring.md)用于性能分析和优化。 +- TiDB [锁视图支持乐观事务被阻塞的信息](/information-schema/information-schema-data-lock-waits.md),方便快速定位锁冲突。 +- TiFlash 引入[新的存储格式 PageStorage V3](/tiflash/tiflash-configuration.md#配置文件-tiflashtoml),提升稳定性和性能。 +- 实现[细粒度数据交换 (shuffle)](/system-variables.md#tiflash_fine_grained_shuffle_batch_size-从-v620-版本开始引入) 使窗口函数 (Window function) 可以利用多线程并行计算。 +- 引入[新的 DDL 并行执行框架](/system-variables.md#tidb_enable_concurrent_ddl-从-v620-版本开始引入),减少 DDL 阻塞,大幅提升执行效率。 +- TiKV 支持[自适应调整 CPU 使用率](/tikv-configuration-file.md#后台限流),确保数据库稳定高效运行。 +- 支持 [point-in-time recovery (PITR)](/br/backup-and-restore-overview.md),允许恢复备份集群的历史任意时间点的快照。 +- TiDB Lightning 使用 Physical Import Mode [导入时限制调度范围从集群降低到表级别](/tidb-lightning/tidb-lightning-physical-import-mode-usage.md#导入时限制调度范围从集群降低到表级别)。 +- Backup & Restore (BR) 支持[恢复用户和权限数据](/br/br-snapshot-guide.md#恢复-mysql-数据库下的表),备份恢复体验更平滑。 +- TiCDC 支持[过滤指定类型的 DDL 事件](/ticdc/manage-ticdc.md#event-filter-配置规则-从-v620-版本开始引入),解锁更多数据同步场景。 +- 事务中支持 [`SAVEPOINT` 机制](/sql-statements/sql-statement-savepoint.md),可以灵活地控制事务内的回退节点。 +- [单 `ALTER TABLE` 语句增删改多个列或索引](/sql-statements/sql-statement-alter-table.md),方便实现 SQL 功能,提升产品易用性。 +- 支持 [RawKV 跨集群复制](/tikv-configuration-file.md#api-version-从-v610-版本开始引入)。 + +## 新功能 + +### SQL + +* 正式支持通过 SQL 语句对 TiFlash 副本立即触发物理数据整理 (Compaction) + + TiFlash 后台会依据特定条件、自动对物理数据进行整理 (Compaction),减少无用数据的积压,并优化数据存储结构。在数据整理被自动触发前,TiFlash 数据表中往往存在一定量的无用数据。该特性支持用户自行选择合适的时机、手动执行 SQL 语句来对 TiFlash 中的物理数据立即进行整理,从而减少存储空间占用,并提升查询性能。此功能在 TiDB v6.1 作为一项实验功能引入,在 v6.2.0 版本正式发布。 + + [用户文档](/sql-statements/sql-statement-alter-table-compact.md#alter-table--compact) [#4145](https://github.com/pingcap/tiflash/issues/4145) @[breezewish](https://github.com/breezewish) + +### 可观测性 + +* TiDB Dashboard 从 PD 拆离 + + 将 TiDB Dashboard 拆分到 Monitoring 节点,减少监控组件对 PD 节点的影响,让 PD 节点更加稳定。 + + @[Hawkson-jee](https://github.com/Hawkson-jee) + +* TiDB Dashboard 新增 Monitoring 页面 + + TiDB Dashboard 新增 Monitoring 页面,展示在业务性能调优中所需的核心指标。用户可基于数据库时间的[系统优化方法](/performance-tuning-methods.md),利用该页面进行性能分析和优化。用户可以从全局、自顶向下的角度分析用户响应时间和数据库时间,确认用户响应时间的瓶颈是否在数据库中。如果瓶颈在数据库中,你可以通过数据库时间概览和 SQL 延迟的分解,定位数据库内部的瓶颈点,并进行针对性的优化。 + + [用户文档](/dashboard/dashboard-monitoring.md) [#1381](https://github.com/pingcap/tidb-dashboard/issues/1381) @[YiniXu9506](https://github.com/YiniXu9506) + +* TiDB Dashboard 支持可视化执行计划 + + 在 Statements 和 Slow Query 中提供可视化执行计划和基础问题诊断的能力。这是一种全新的查询计划的展示方式,目标是通过图形化的手段展示 Query 查询计划的每个步骤,从而使得用户能够更加直观方便地了解查询执行计划的细节。对于复杂的大型查询语句,可视化的展示方式对于深入理解其执行过程大有裨益。另外,系统会自动对每一个 Query 的执行计划进行分析,发现执行计划中潜在问题,提供优化方向。用户可以采用这些优化建议,降低特定 Query 的查询时长。 + + [用户文档](/dashboard/dashboard-slow-query.md#图形化执行计划介绍) [#1224](https://github.com/pingcap/tidb-dashboard/issues/1224) @[time-and-fate](https://github.com/time-and-fate) + +* 锁视图支持乐观事务被阻塞的信息 + + 大量锁冲突往往会造成严重的性能问题,而定位锁冲突是这类性能问题排查的必要手段之一。TiDB v6.2.0 之前,支持通过系统视图 `INFORMATION_SCHEMA.DATA_LOCK_WAITS` 查看锁冲突的关系,但是不支持乐观事务被悲观锁阻塞的情况。TiDB v6.2.0 扩展 [`DATA_LOCK_WAITS`](/information-schema/information-schema-data-lock-waits.md) 视图,提供乐观事务被悲观锁阻塞情况下的冲突关系,帮助用户快速定位锁冲突,同时为业务改进提供依据,从而减少这类锁冲突的发生频率,提升系统整体性能。 + + [用户文档](/information-schema/information-schema-data-lock-waits.md) [#34609](https://github.com/pingcap/tidb/issues/34609) @[longfangsong](https://github.com/longfangsong) + +### 性能 + +* 优化器增加对外连接顺序的提示 + + 在 v6.1.0 中引入的优化器提示 `LEADING` 可干预表的连接顺序,但是这个提示并不能应用在包含了外连接的查询中,见 [`LEADING` 文档](/optimizer-hints.md#leadingt1_name--tl_name-)。在 v6.2.0 中 TiDB 解除了这个限制,`LEADING` 提示对外连接同样生效。在包含外连接的查询中,你同样可以利用 `LEADING` 指定表的连接顺序,获得更好的 SQL 执行性能,并避免执行计划的突变。 + + [用户文档](/optimizer-hints.md#leadingt1_name--tl_name-) [#29932](https://github.com/pingcap/tidb/issues/29932) @[Reminiscent](https://github.com/Reminiscent) + +* 引入新的优化器提示 `SEMI_JOIN_REWRITE` 改善 `EXISTS` 查询性能 + + 在部分场景下,带有 `EXISTS` 的查询并不能选择最优的执行计划,导致查询运行时间过长。在 v6.2.0 版本中,优化器增加了新的改写规则,用于优化此类场景下执行计划的选择,并通过 `SEMI_JOIN_REWRITE` 提示强制优化器进行改写,从而得到更好的查询性能。 + + [用户文档](/optimizer-hints.md#semi_join_rewrite) [#35323](https://github.com/pingcap/tidb/issues/35323) @[winoros](https://github.com/winoros) + +* 引入一个优化器提示 `MERGE`,提升分析类查询性能 + + 公共表表达式 (CTE) 是简化查询逻辑的有效方法,广泛应用于复杂查询的编写。在 v6.2.0 前,CTE 在 TiFlash 环境中还不能自动展开,这在一定程度上限制了 MPP 的运行效率。在 v6.2.0 中,TiDB 引入一个 MySQL 兼容的优化器提示 `MERGE`。利用这个提示,优化器允许对 CTE 内联进行展开,使得 CTE 查询结果的消费者能够在 TiFlash 内并行执行,从而提升此类分析查询的性能。 + + [用户文档](/optimizer-hints.md#merge) [#36122](https://github.com/pingcap/tidb/issues/36122) @[dayicklp](https://github.com/dayicklp) + +* 优化了个别分析场景的聚合操作性能 + + 在使用 TiFlash 的 OLAP 场景下对列进行聚合操作时,如果被聚合列因分布不均而存在严重数据倾斜,并且被聚合列有大量不同的取值,那么该列的 `COUNT(DISTINCT)` 查询效率偏低。在 v6.2.0 版本中,引入了新的改写规则,针对单列的 `COUNT(DISTINCT)` 查询进行了优化,提升此类场景下的查询性能。 + + [用户文档](/system-variables.md#tidb_opt_skew_distinct_agg-从-v620-版本开始引入) [#36169](https://github.com/pingcap/tidb/issues/36169) @[fixdb](https://github.com/fixdb) + +* TiDB 支持 DDL 并发执行 + + TiDB v6.2.0 引入新的 DDL 并行执行框架,在不同表对象上的 DDL 可以并发执行,解决了之前不同表之间 DDL 相互阻塞的问题。同时在不同表对象的追加索引、列类型变更等场景下支持并行执行,大幅提升执行效率。 + + [用户文档](/system-variables.md#tidb_enable_concurrent_ddl-从-v620-版本开始引入) [#32031](https://github.com/pingcap/tidb/issues/32031) @[wjhuang2016](https://github.com/wjhuang2016) + +* 优化器增强了对字符串条件匹配的估算方式 + + 在字符串条件匹配场景下,行数估算偏差有可能影响最优执行计划的生成,例如条件 `like '%xyz'` 或者借助 `regex()` 的正则表达式匹配。为了提升此类场景下估算的准确度,TiDB v6.2.0 增强了这个场景下的估算方式。新的方法会结合统计信息的 TopN 信息以及系统变量,在提升估算准确率的同时,还引入了手动调整的方法,进而提升此场景下的 SQL 性能。 + + [用户文档](/system-variables.md#tidb_default_string_match_selectivity-从-v620-版本开始引入) [#36209](https://github.com/pingcap/tidb/issues/36209) @[time-and-fate](https://github.com/time-and-fate) + +* 支持窗口函数下推到 TiFlash 进行多线程并行计算 + + 通过实现执行过程中的细粒度的数据交换 (shuffle) 能力,窗口函数的计算由单线程变为多线程并行计算,成倍降低查询响应时间。此性能改进不改变用户使用行为。你可以通过控制变量 [`tiflash_fine_grained_shuffle_batch_size`](/system-variables.md#tiflash_fine_grained_shuffle_batch_size-从-v620-版本开始引入) 来控制 shuffle 的粒度。 + + [用户文档](/system-variables.md#tiflash_fine_grained_shuffle_batch_size-从-v620-版本开始引入) [#4631](https://github.com/pingcap/tiflash/issues/4631) @[guo-shaoge](https://github.com/guo-shaoge) + +* TiFlash 支持新版本的存储格式 + + TiFlash 通过改进存储格式,大幅减轻了在高并发、高负载场景下 GC 造成 CPU 占用高的问题,可以有效减少后台任务 IO 流量,提升高并发、高负载下的稳定性。同时新版本存储格式可以显著降低空间放大,减少磁盘空间浪费。 + + v6.2.0 默认以新版本存储格式保存数据。从更低版本升级到 6.2.0 版本后,不支持原地降级,否则更低版本的 TiFlash 无法识别新版本的数据格式。 + + 建议用户在升级前阅读 [TiFlash v6.2.0 升级帮助](/tiflash-620-upgrade-guide.md)。 + + [用户文档](/tiflash/tiflash-configuration.md#配置文件-tiflashtoml) [#3594](https://github.com/pingcap/tiflash/issues/3594) @[JaySon-Huang](https://github.com/JaySon-Huang) @[lidezhu](https://github.com/lidezhu) @[jiaqizho](https://github.com/jiaqizho) + +* TiFlash 优化提升多并发场景下的数据扫描性能(实验特性) + + 在 v6.2.0,TiFlash 通过合并相同数据的读取操作,减少对于相同数据的重复读取,优化了多并发任务情况下的资源开销,提升多并发下的数据扫描性能。避免了以往在多并发任务下,如果涉及相同数据,同一份数据需要在每个任务中分别进行读取的情况,以及可能出现在同一时间内对相同数据进行多次读取的情况。 + + [用户文档](/tiflash/tiflash-configuration.md#配置文件-tiflashtoml) [#5376](https://github.com/pingcap/tiflash/issues/5376) @[JinheLin](https://github.com/JinheLin) + +* TiFlash 新增 FastScan 功能,降低一致性保证,提高读写速度(实验特性) + + TiDB 从 v6.2.0 版本引入快速扫描功能 (FastScan),支持跳过一致性检测以大幅提高速度,适用于离线分析任务等对于数据的精度和一致性要求不高的场景。以往,为了保证数据一致性,TiFlash 在数据扫描过程中需要对数据进行一致性检查,从多个不同版本的数据中找到符合要求的数据。 + + 从更低的版本升级到 v6.2.0 版本时,所有的表默认不开启 FastScan 功能,而是保持一致性的数据扫描功能。你可以为每一张表独立开启 FastScan 功能。如果在 v6.2.0 版本设定表开启 FastScan 功能后,当降级到更低版本时 FastScan 功能设置将失效,但不影响数据的正常读取。这种情况等同于强一致性的数据扫描功能。 + + [用户文档](/develop/dev-guide-use-fastscan.md) [#5252](https://github.com/pingcap/tiflash/issues/5252) @[hongyunyan](https://github.com/hongyunyan) + +### 稳定性 + +* TiKV 支持自适应调整 CPU 使用率(实验特性) + + 数据库通常会使用后台进程来执行一些内部操作,通过采集各种统计信息,帮助用户定位性能问题,生成更优的执行计划,从而提升数据库的稳定性和性能。然而如何平衡后台操作和前台操作的资源开销,在不影响用户日常数据库使用的基础上如何更高效地采集信息,一直是数据库领域最为头疼的问题之一。 + + 从 v6.2.0 开始,TiDB 支持通过 TiKV 配置文件设置后台请求的 CPU 使用率,进而限制自动统计信息收集等后台操作在 TiKV 的 CPU 使用比例,避免极端情况下后台操作抢占对用户操作的资源,确保数据库稳定高效运行。 + + 同时,TiDB 还支持 CPU 使用率自动调节的功能,这时 TiKV 会根据实例的 CPU 占用情况,自适应地对后台请求占用的 CPU 资源进行动态调整。该功能默认关闭。 + + [用户文档](/tikv-configuration-file.md#后台限流) [#12503](https://github.com/tikv/tikv/issues/12503) @[BornChanger](https://github.com/BornChanger) + +### 易用性 + +* TiKV 支持通过命令行参数提供更详细的配置信息 + + TiKV 配置文件可以实现对 TiKV 实例的管理。但是对运行时间长且多人管理的 TiKV 实例,用户修改了哪些配置文件,配置的默认值是什么,难以进行方便地比对。这在集群升级、迁移时容易造成困扰。从 TiDB v6.2.0 开始,tikv-server 新增命令行参数 [`—-config-info`](/command-line-flags-for-tikv-configuration.md#--config-info-format),支持输出 TiKV 所有配置项的默认值和当前值,帮助用户快速验证 TiKV 进程的启动参数,提升易用性。 + + [用户文档](/command-line-flags-for-tikv-configuration.md#--config-info-format) [#12492](https://github.com/tikv/tikv/issues/12492) @[glorv](https://github.com/glorv) + +### MySQL 兼容性 + +* TiDB 支持使用一个 `ALTER TABLE` 语句增删改多个列或索引 + + 在 v6.2.0 之前,TiDB 仅支持单一 DDL 变更,导致用户在迁移异构数据库时经常会遇见 DDL 操作不兼容的情况,需要耗费额外的精力将复杂的 DDL 修改成 TiDB 支持的多个简单 DDL。同时还有一些用户依赖 ORM 框架,实现 SQL 组装,最终出现了 SQL 不兼容等问题。TiDB 从 v6.2.0 开始,支持使用 `ALTER TABLE` 语句修改一个表的多个模式对象,方便了用户 SQL 实现,也提升了产品易用性。 + + [用户文档](/sql-statements/sql-statement-alter-table.md) [#14766](https://github.com/pingcap/tidb/issues/14766) @[tangenta](https://github.com/tangenta) + +* 事务中支持 `SAVEPOINT` + + 事务是数据库保证 ACID 特性的一系列连续操作的逻辑集合。在一些复杂业务场景下,你可能需要管理一个事务的大量操作,有时候需要在事务内实现部分操作的回退能力。Savepoint 就是针对事务内部实现的可命名保存点机制,通过这个机制,你可以灵活地控制事务内的回退节点,从而实现更复杂的事务管理能力,实现更为多样的业务设计。 + + [用户文档](/sql-statements/sql-statement-savepoint.md) [#6840](https://github.com/pingcap/tidb/issues/6840) @[crazycs520](https://github.com/crazycs520) + +### 数据迁移 + +* BR 支持恢复用户和权限数据 + + BR 快照备份和恢复支持恢复用户和权限数据,用户不再需要额外的方案恢复用户和权限数据,只需要在使用 BR 恢复数据时指定参数 `--with-sys-table`。 + + [用户文档](/br/br-snapshot-guide.md#恢复-mysql-数据库下的表) [#35395](https://github.com/pingcap/tidb/issues/35395) @[D3Hunter](https://github.com/D3Hunter) + +* 支持基于变更日志的备份和恢复实现 Point-in-time recovery + + 基于变更日志和快照数据的备份恢复实现 PITR (point-in-time recovery) 功能,允许用户在新集群上恢复备份集群的历史任意时间点的快照。该功能可以满足以下的用户需求: + + - 降低灾备场景下的 RPO,如实现十几分钟的 RPO; + - 用于处理业务数据写错的案例,如回滚业务数据到出错事件前; + - 业务历史数据审计,满足司法审查的需求。 + - 该功能初版存在着一些使用限制,详细情况请参考功能使用文档。 + + [用户文档](/br/br-use-overview.md) [#29501](https://github.com/pingcap/tidb/issues/29501) @[joccau](https://github.com/joccau) + +* DM 支持增量持续数据校验(实验特性) + + 增量持续数据校验用于在数据同步过程中,持续对比上游 binlog 与下游实际写入记录是否存在异常,例如错误同步、记录缺失等。此特性用以解决常见的全量数据校验方案的滞后性,资源消耗过重等问题。 + + [用户文档](/dm/dm-continuous-data-validation.md) [#4426](https://github.com/pingcap/tiflow/issues/4426) @[D3Hunter](https://github.com/D3Hunter) @[buchuitoudegou](https://github.com/buchuitoudegou) + +* 自动识别 Amazon S3 bucket 所在的区域 + + 数据迁移任务可自动判断 S3 bucket 所在区域,不再需要显式传递区域参数。 + + [#34275](https://github.com/pingcap/tidb/issues/34275) @[WangLe1321](https://github.com/WangLe1321) + +* 支持为 TiDB Lightning 配置磁盘资源配额(实验特性) + + 当 TiDB Lightning 使用物理导入模式 (backend='local') 进行导入时,sorted-kv-dir 需要具备足以容纳数据源总量的空间,当空间不足时可能致使导入任务失败。新增的 `disk_quota` 配置项可以用于限定 TiDB Lightning 的磁盘空间使用总量,当 sorted-kv-dir 存储空间较少时也可以正常完成导入任务。 + + [用户文档](/tidb-lightning/tidb-lightning-physical-import-mode-usage.md#磁盘资源配额-从-v620-版本开始引入) [#446](https://github.com/pingcap/tidb-lightning/issues/446) @[buchuitoudegou](https://github.com/buchuitoudegou) + +* TiDB Lightning 支持使用 Physical Import Mode 导入数据到生产集群 + + TiDB Lightning 原有的物理导入模式 (backend='local') 对目标集群影响较大,例如导入过程将停止 PD 调度等,因此仅适用于目标集群初次导入数据。 + + TiDB Lightning 在现有基础上做了改进,导入时可以暂停对应表的调度,从而将影响范围由集群级别降低到表级别,即非导入的表仍可进行读写操作。 + + 此特性无需手动配置,目标 TiDB 集群版本在 v6.1.0 及以上且 TiDB Lightning 在 v6.2.0 及以上时自动生效。 + + [用户文档](/tidb-lightning/tidb-lightning-physical-import-mode-usage.md#导入时限制调度范围从集群降低到表级别) [#35148](https://github.com/pingcap/tidb/issues/35148) @[gozssky](https://github.com/gozssky) + +* 调整 [TiDB Lightning 在线文档](/tidb-lightning/tidb-lightning-overview.md),使其目录结构更加合理和清晰。同时对文档中关于“后端模式”的描述进行了修改,使用 Physical Import Mode 替代原有 local backend,使用 Logical Import Mode 替代原有 tidb backend ,以降低新用户的理解难度。 + +### 数据共享与订阅 + +* 支持 RawKV 跨集群复制(实验特性) + + 支持订阅 RawKV 的数据变更,并通过新的 TiKV-CDC 组件将变更实时同步到下游 TiKV 集群,从而实现 RawKV 的跨集群复制能力。 + + [用户文档](/tikv-configuration-file.md#api-version-从-v610-版本开始引入) [#11965](https://github.com/tikv/tikv/issues/11965) @[pingyu](https://github.com/pingyu) + +* 支持过滤 DDL 和 DML 事件 + + 在一些特殊的场景下,用户可能希望对 TiDB 增量数据变更日志进行一定规则的过滤,例如过滤 Drop Table 等高风险 DDL。自 v6.2.0 起,TiCDC 支持过滤指定类型的 DDL 事件,支持基于 SQL 表达式过滤 DML 事件,从而适应更多的数据同步场景。 + + [用户文档](/ticdc/manage-ticdc.md#event-filter-配置规则-从-v620-版本开始引入) [#6160](https://github.com/pingcap/tiflow/issues/6160) @[asddongmen](https://github.com/asddongmen) + +## 兼容性变更 + +### 系统变量 + +| 变量名 | 修改类型 | 描述 | +| ------ | ------ | ------ | +| [tidb_enable_new_cost_interface](/system-variables.md#tidb_enable_new_cost_interface-从-v620-版本开始引入) | 新增 | 控制是否使用重构后的代价模型 [Cost Model Version 2](/cost-model.md#cost-model-version-2)。 | +| [tidb_cost_model_version](/system-variables.md#tidb_cost_model_version-从-v620-版本开始引入) | 新增 | TiDB 在进行物理优化时会使用代价模型来进行索引选择和算子选择,该变量用于选择代价模型的版本。TiDB v6.2.0 引入了代价模型 Cost Model Version 2,在内部测试中比此前版本的代价模型更加准确。 | +| [tidb_enable_concurrent_ddl](/system-variables.md#tidb_enable_concurrent_ddl-从-v620-版本开始引入) | 新增 | 用于控制是否让 TiDB 使用并发 DDL 语句。不可修改该变量值关闭该功能,因为关闭后风险不确定,有可能导致集群元数据出错。 | +| [tiflash_fine_grained_shuffle_stream_count](/system-variables.md#tiflash_fine_grained_shuffle_stream_count-从-v620-版本开始引入) | 新增 | 当窗口函数下推到 TiFlash 执行时,可以通过该变量控制窗口函数执行的并行度。 | +| [tiflash_fine_grained_shuffle_batch_size](/system-variables.md#tiflash_fine_grained_shuffle_batch_size-从-v620-版本开始引入) | 新增 | 细粒度 shuffle 功能开启时,该变量控制发送端发送数据的攒批大小,即发送端累计行数超过该值就会进行一次数据发送。 | +| [tidb_default_string_match_selectivity](/system-variables.md#tidb_default_string_match_selectivity-从-v620-版本开始引入) | 新增 | 设置过滤条件中的 `like`、`rlike`、`regexp` 函数在行数估算时的默认选择率,以及是否对这些函数启用 TopN 辅助估算。 | +| [tidb_enable_analyze_snapshot](/system-variables.md#tidb_enable_analyze_snapshot-从-v620-版本开始引入) | 新增 | 控制 `ANALYZE` 读取历史时刻的数据还是读取最新的数据。 | +| [tidb_generate_binary_plan](/system-variables.md#tidb_generate_binary_plan-从-v620-版本开始引入) | 新增 | 用于指定是否在 slow log 和 statement summary 里包含以二进制格式编码的执行计划。 | +| [tidb_opt_skew_distinct_agg](/system-variables.md#tidb_opt_skew_distinct_agg-从-v620-版本开始引入) | 新增 | 用于设置优化器是否将带有 `DISTINCT` 的聚合函数(例如 `SELECT b, COUNT(DISTINCT a) FROM t GROUP BY b`)改写为两层聚合函数(例如 `SELECT b, COUNT(a) FROM (SELECT b, a FROM t GROUP BY b, a) t GROUP BY b`)。 | +| [tidb_enable_noop_variables](/system-variables.md#tidb_enable_noop_variables-从-v620-版本开始引入) | 新增 | 用于设置 `SHOW [GLOBAL] VARIABLES` 是否显示 noop 变量。 | +| [tidb_enable_concurrent_ddl](/system-variables.md#tidb_enable_concurrent_ddl-从-v620-版本开始引入) | 新增 | 用于控制是否让 TiDB 使用并发 DDL 语句。 | +| [tidb_min_paging_size](/system-variables.md#tidb_min_paging_size-从-v620-版本开始引入) | 新增 | 用来设置 coprocessor 协议中 paging size 的最小的行数。 | +| [tidb_txn_commit_batch_size](/system-variables.md#tidb_txn_commit_batch_size-从-v620-版本开始引入) | 新增 | 用于控制 TiDB 向 TiKV 发送的事务提交请求的批量大小。 | +| tidb_enable_change_multi_schema | 删除 | TiDB 支持使用一个 `ALTER TABLE` 语句增删改多个列或索引。 | +| [tidb_enable_outer_join_reorder](/system-variables.md#tidb_enable_outer_join_reorder-从-v610-版本开始引入) | 修改 | 用来控制 TiDB 的 join reorder 是否支持 outer join,在 v6.1.0 中为 `ON`,即默认开启。自 v6.2.0 起,该变量默认为 `OFF`,即默认关闭。 | + +### 配置文件参数 + +| 配置文件 | 配置项 | 修改类型 | 描述 | +| -------- | -------- | -------- | -------- | +| TiDB | feedback-probability | 删除 | 该配置不再生效,不推荐使用。 | +| TiDB | query-feedback-limit | 删除 | 该配置不再生效,不推荐使用。 | +| TiKV | [server.simplify-metrics](/tikv-configuration-file.md#simplify-metrics-从-v620-版本开始引入) | 新增 | 控制是否开启精简返回的 Metrics 数据。 | +| TiKV | [quota.background-cpu-time](/tikv-configuration-file.md#background-cpu-time-从-v620-版本开始引入) | 新增 | 限制处理 TiKV 后台读写请求所使用的 CPU 资源使用量。 | +| TiKV | [quota.background-write-bandwidth](/tikv-configuration-file.md#background-write-bandwidth-从-v620-版本开始引入) | 新增 | 限制后台事务写入的带宽(暂未生效)。| +| TiKV | [quota.background-read-bandwidth](/tikv-configuration-file.md#background-read-bandwidth-从-v620-版本开始引入) | 新增 | 限制后台事务读取数据和 Coprocessor 读取数据的带宽(暂未生效)。 | +| TiKV | [quota.enable-auto-tune](/tikv-configuration-file.md#enable-auto-tune-从-v620-版本开始引入) | 新增 | 是否支持 quota 动态调整。如果打开该配置项,TiKV 会根据 TiKV 实例的负载情况动态调整对后台请求的限制 quota。 | +| TiKV | rocksdb.enable-pipelined-commit | 删除 | 该配置不再生效。 | +| TiKV | gc-merge-rewrite | 删除 | 该配置不再生效。 | +| TiKV | [log-backup.enable](/tikv-configuration-file.md#enable-从-v620-版本开始引入) | 新增 | TiKV 是否开启日志备份功能。 | +| TiKV | [log-backup.file-size-limit](/tikv-configuration-file.md#file-size-limit-从-v620-版本开始引入) | 新增 | 日志备份任务备份的数据达到一定大小时,自动 flush 到外部存储中。 | +| TiKV | [log-backup.initial-scan-pending-memory-quota](/tikv-configuration-file.md#initial-scan-pending-memory-quota-从-v620-版本开始引入) | 新增 | 增量扫描数据时,用于存放扫描数据的缓存大小。 | +| TiKV | [log-backup.max-flush-interval](/tikv-configuration-file.md#max-flush-interval-从-v620-版本开始引入) | 新增 | 日志备份任务将备份数据写入到 External Storage 的最大间隔时间。 | +| TiKV | [log-backup.initial-scan-rate-limit](/tikv-configuration-file.md#initial-scan-rate-limit-从-v620-版本开始引入) | 新增 | 增量扫描数据时,用于扫描时吞吐限流参数。 | +| TiKV | [log-backup.num-threads](/tikv-configuration-file.md#num-threads-从-v620-版本开始引入) | 新增 | 日志备份功能使用的线程数。 | +| TiKV | [log-backup.temp-path](/tikv-configuration-file.md#temp-path-从-v620-版本开始引入) | 新增 | 临时目录路径,TiKV 备份日志预先先写入临时目录,然后 flush 到外部存储中。 | +| PD | replication-mode.dr-auto-sync.wait-async-timeout | 删除 | 废弃未生效的配置项。 | +| PD | replication-mode.dr-auto-sync.wait-sync-timeout | 删除 | 废弃未生效的配置项。| +| TiFlash | [`storage.format_version`](/tiflash/tiflash-configuration.md#tiflash-配置参数) | 修改 | `format_version` 默认值变更为 4,v6.2.0 及以后版本的默认文件格式,优化了写放大问题,同时减少了后台线程消耗。 | +| TiFlash | [profiles.default.dt_enable_read_thread](/tiflash/tiflash-configuration.md#配置文件-tiflashtoml) | 新增 | 控制存储引擎是否使用线程池读取数据。默认值为 false,不使用线程池读取数据。 | +| TiFlash | [profiles.default.dt_page_gc_threshold](/tiflash/tiflash-configuration.md#配置文件-tiflashtoml) | 新增 | 表示 PageStorage 单个数据文件中有效数据的最低比例。 | +| TiCDC | [--overwrite-checkpoint-ts](/ticdc/manage-ticdc.md#恢复同步任务) | 新增 | 在 cdc cli changefeed resume 子命令下新增的参数。 | +| TiCDC | [--no-confirm](/ticdc/manage-ticdc.md#恢复同步任务) | 新增 | 在 cdc cli changefeed resume 子命令下新增的参数。 | +| DM | [mode](/dm/task-configuration-file-full.md#完整配置文件示例) | 新增 | Validator 参数,取值可以是 full、fast,默认是 none,即不开启校验。 | +| DM | [worker-count](/dm/task-configuration-file-full.md#完整配置文件示例) | 新增 | Validator 参数,后台校验的 validation worker 数量,默认是 4 个。 | +| DM | [row-error-delay](/dm/task-configuration-file-full.md#完整配置文件示例) | 新增 | Validator 参数,某一行多久没有验证通过会报错,默认是 30 min。 | +| TiDB Lightning | [tikv-importer.store-write-bwlimit](/tidb-lightning/tidb-lightning-configuration.md#tidb-lightning-任务配置) | 新增 | 限制 TiDB Lightning 向每个 TiKV Store 写入带宽带宽大小,默认为 0,表示不限制。 | +| TiDB Lightning | [tikv-importer.disk-quota](/tidb-lightning/tidb-lightning-physical-import-mode-usage.md#磁盘资源配额-从-v620-版本开始引入) | 新增 | 用于设置 TiDB Lightning 可以使用的磁盘配额。 | + +### 其他 + +- TiFlash 的存储格式 (`format_version`) 不能直接从 4 降级到 3,详情请参考 [TiFlash v6.2.0 升级帮助](/tiflash-620-upgrade-guide.md)。 +- 在 v6.2.0 以及后续版本,**强烈建议**保留 `dt_enable_logical_split` 的默认值 `false`,不要将其修改为 `true`。具体请参考已知问题 [#5576](https://github.com/pingcap/tiflash/issues/5576)。 +- 如果备份集群包含 TiFlash,执行 PITR 后恢复集群的数据不包含 TiFlash 副本,需要手动恢复 TiFlash 副本;执行 exchange partition DDL 会导致 PITR restore 出错;上游数据库使用 TiDB Lightning Physical 方式导入的数据,无法作为数据日志备份下来,数据导入后需要执行一次全量备份。关于 PITR 功能使用的其他事项,请参考 [PITR 使用限制](/br/backup-and-restore-overview.md#使用须知)。 +- 从 v6.2.0 开始,BR 支持通过手动指定参数 `--with-sys-table=true` 来恢复 mysql schema 下的表。 +- 使用 `ALTER TABLE` 增删改多个列或索引时,TiDB 会根据执行前的 schema 结构来验证一致性,而不管同一 DDL 语句中的更改。同时,语句的执行顺序上 TiDB 和 MySQL 在某些场景不兼容。 +- 在集群中,如果 TiDB 组件的版本为 v6.2.0 及以上,则 TiKV 组件版本不得低于 v6.2.0。 +- TiKV 新增配置项 `split.region-cpu-overload-threshold-ratio` 支持在线修改。 +- 慢查询日志以及 `INFORMATION_SCHEMA` 中的系统表 `statements_summary` 和 `slow_query` 新增输出 `binary_plan`,即以二进制格式编码的执行计划。 +- `SHOW TABLE ... REGIONS` 返回的结果中新增两列:`SCHEDULING_CONSTRAINTS` 以及 `SCHEDULING_STATE`,表示对应 Region 在 Placement In SQL 中设置的调度规则以及当前的调度状态。 +- 从 v6.2.0 开始,你可以通过 [TiKV-CDC](https://github.com/tikv/migration/tree/main/cdc) 组件实现 RawKV 的 Change Data Capture (CDC)。 +- 使用 `ROLLBACK TO SAVEPOINT` 语句将事务回滚到指定保存点时,MySQL 会释放该保存点之后才持有的锁,但在 TiDB 悲观事务中,不会立即释放该保存点之后才持有的锁,而是等到事务提交或者回滚时,才释放全部持有的锁。 +- 从 v6.2.0 开始, 执行 `SELECT tidb_version()` 返回的信息中会包含 Store 类型(tikv 或者 unistore) +- TiDB 不再有隐藏的系统变量。 +- 新增两个系统表: + + - `INFORMATION_SCHEMA.VARIABLES_INFO`:用于查看 TiDB 系统变量相关的信息。 + - `PERFORMANCE_SCHEMA.SESSION_VARIABLES`:用于查看 TiDB session 系统变量相关的信息。 + +## 废弃功能 + +从 TiDB v6.2.0 起,使用 BR 备份和恢复 RawKV 的功能废弃。 + +## 改进提升 + ++ TiDB + + - 支持了 `SHOW COUNT(*) WARNINGS` 以及 `SHOW COUNT(*) ERRORS` [#25068](https://github.com/pingcap/tidb/issues/25068) @[likzn](https://github.com/likzn) + - 对某些系统变量增加一些合法性验证 [#35048](https://github.com/pingcap/tidb/issues/35048) @[morgo](https://github.com/morgo) + - 优化了一些类型转换的错误提示 [#32447](https://github.com/pingcap/tidb/issues/32744) @[fanrenhoo](https://github.com/fanrenhoo) + - `KILL` 命令增加了对 DDL 操作的支持 [#24144](https://github.com/pingcap/tidb/issues/24144) @[morgo](https://github.com/morgo) + - 提升了 `SHOW TABLES/DATABASES LIKE …` 命令的输出与 MySQL 的兼容性,输出的列名称中会包含 `LIKE` 的值 [#35116](https://github.com/pingcap/tidb/issues/35116) @[likzn](https://github.com/likzn) + - 提升了 JSON 相关函数的性能 [#35859](https://github.com/pingcap/tidb/issues/35859) @[wjhuang2016](https://github.com/wjhuang2016) + - 提升了使用 SHA-2 时登录密码的验证速度 [#35998](https://github.com/pingcap/tidb/issues/35998) @[virusdefender](https://github.com/virusdefender) + - 精简了一些日志的输出 [#36011](https://github.com/pingcap/tidb/issues/36011) @[dveeden](https://github.com/dveeden) + - 优化了 coprocessor 通信协议,大幅度降低读取数据时 TiDB 进程的内存消耗,进而可进一步缓解扫全表场景及 Dumpling 导出数据场景下的 OOM 问题。该通信协议是否开启由 `tidb_enable_paging` 系统变量控制(作用域为 SESSION 或 GLOBAL),当前默认关闭。可将该变量值设为 `true` 进行开启 [#35633](https://github.com/pingcap/tidb/issues/35633) @[tiancaiama](https://github.com/tiancaiamao) @[wshwsh12](https://github.com/wshwsh12) + - 进一步优化了部分算子(HashJoin、HashAgg、Update、Delete)内存追踪的准确度 ([#35634](https://github.com/pingcap/tidb/issues/35634), [#35631](https://github.com/pingcap/tidb/issues/35631), [#35635](https://github.com/pingcap/tidb/issues/35635), @[wshwsh12](https://github.com/wshwsh12)) ([#34096](https://github.com/pingcap/tidb/issues/34096), @[ekexium](https://github.com/ekexium)) + - 系统表 `INFORMATION_SCHEMA.DATA_LOCK_WAIT` 支持记录乐观事务的锁信息 [#34609](https://github.com/pingcap/tidb/issues/34609) @[longfangson](https://github.com/longfangsong) + - 新增部分事务相关的监控指标 [#34456](https://github.com/pingcap/tidb/issues/34456) @[longfangsong](https://github.com/longfangsong) + ++ TiKV + + - 支持通过 gzip 压缩 metrics 响应减少 HTTP body 大小 [#12355](https://github.com/tikv/tikv/issues/12355) @[glorv](https://github.com/glorv) + - 优化了 TiKV Grafana Dashboard 的可读性 [#12007](https://github.com/tikv/tikv/issues/12007) @[kevin-xianliu](https://github.com/kevin-xianliu) + - 优化 Apply 算子的写入性能 [#12898](https://github.com/tikv/tikv/issues/12898) @[ethercflow](https://github.com/ethercflow) + - 支持动态调整 RocksDB 进行 subcompaction 的并发个数 (`rocksdb.max-sub-compactions`) [#13145](https://github.com/tikv/tikv/issues/13145) @[ethercflow](https://github.com/ethercflow) + ++ PD + + - 支持 Region CPU 维度统计信息并增强 Load Base Split 的覆盖场景 [#12063](https://github.com/tikv/tikv/issues/12063) @[Jmpotato](https://github.com/JmPotato) + ++ TiFlash + + - 优化了 TiFlash MPP 的错误处理流程,增强了稳定性 [#5095](https://github.com/pingcap/tiflash/issues/5095) @[windtalker](https://github.com/windtalker) @[yibin87](https://github.com/yibin87) + - 优化了 UTF8_BIN/UTF8MB4_BIN Collation 的比较和排序操作 [#5294](https://github.com/pingcap/tiflash/issues/5294) @[solotzg](https://github.com/solotzg) + ++ Tools + + + Backup & Restore (BR) + + - 优化了全量备份数据组织形式,解决大规模集群备份时遇到的 S3 限流问题 [#30087](https://github.com/pingcap/tidb/issues/30087) @[MoCuishle28](https://github.com/MoCuishle28) + + + TiCDC + + - 优化了多 Region 场景下,runtime 上下文切换带来过多性能开销的问题 [#5610](https://github.com/pingcap/tiflow/issues/5610) @[hicqu](https://github.com/hicqu) + - 优化了 redo log 的性能、修复 meta 和数据不一致的问题 ([#6011](https://github.com/pingcap/tiflow/issues/6011) @[CharlesCheung96](https://github.com/CharlesCheung96)) ([#5924](https://github.com/pingcap/tiflow/issues/5924) @[zhaoxinyu](https://github.com/zhaoxinyu)) ([#6277](https://github.com/pingcap/tiflow/issues/6277) @[hicqu](https://github.com/hicqu)) + + + TiDB Lightning + + - 增加更多可重试错误,包括 EOF、Read index not ready、Coprocessor 超时等 [#36674](https://github.com/pingcap/tidb/issues/36674), [#36566](https://github.com/pingcap/tidb/issues/36566) @[D3Hunter](https://github.com/D3Hunter) + + + TiUP + + - 使用 TiUP 新部署集群时,Node-exporter 组件将使用 1.3.1 版本,Blackbox-exporter 组件将使用 0.21.1 版本,使用新版本组件可以确保在不同系统环境下成功部署 + +## 错误修复 + ++ TiDB + + - 修复了在查询分区表中如果查询条件中有分区键且两者使用了不同的 COLLATE 时会错误的进行分区裁剪的问题 [#32749](https://github.com/pingcap/tidb/issues/32749) @[mjonss](https://github.com/mjonss) + - 修复了 `SET ROLE` 中如果 host 中有大写字母无法匹配到已经 GRANT 的 ROLE 的问题 [#33061](https://github.com/pingcap/tidb/issues/33061) @[morgo](https://github.com/morgo) + - 修复了无法 DROP AUTO_INCREMENT 的列的问题 [#34891](https://github.com/pingcap/tidb/issues/34891) @[Defined2014](https://github.com/Defined2014) + - 修复了 `SHOW CONFIG` 会显示一些已经移除掉的配置项的问题 [#34867](https://github.com/pingcap/tidb/issues/34867) @[morgo](https://github.com/morgo) + - 修复了 `SHOW DATABASES LIKE …` 大小写敏感的问题 [#34766](https://github.com/pingcap/tidb/issues/34766) @[e1ijah1](https://github.com/e1ijah1) + - 修复了 `SHOW TABLE STATUS LIKE …` 大小写敏感的问题 [#7518](https://github.com/pingcap/tidb/issues/7518) @[likzn](https://github.com/likzn) + - 修复了 `max-index-length` 检查在非严格模式下仍然报错的问题 [#34931](https://github.com/pingcap/tidb/issues/34931) @[e1ijah1](https://github.com/e1ijah1) + - 修复了 `ALTER COLUMN ... DROP DEFAULT` 不起作用的问题 [#35018](https://github.com/pingcap/tidb/issues/35018) @[Defined2014](https://github.com/Defined2014) + - 修复了创建表时列的默认值和列类型不一致没有自动修正的问题 [#34881](https://github.com/pingcap/tidb/issues/34881) @[Lloyd-Pottiger](https://github.com/Lloyd-Pottiger) + - 修复了在 `DROP USER` 之后 `mysql.columns_priv` 表中相关的数据没有被同步删除的问题 [#35059](https://github.com/pingcap/tidb/issues/35059) @[lcwangchao](https://github.com/lcwangchao) + - 通过禁止在一些系统的 schema 内创建表,修复了由此导致的 DDL 卡住的问题 [#35205](https://github.com/pingcap/tidb/issues/35205) @[tangenta](https://github.com/tangenta) + - 修复了某些情况下查询分区表可能导致“index-out-of-range”和“non used index”的问题 [#35181](https://github.com/pingcap/tidb/issues/35181) @[mjonss](https://github.com/mjonss) + - 通过支持 `INTERVAL expr unit + expr` 形式的语法,修复了该语句会报错的问题 [#30253](https://github.com/pingcap/tidb/issues/30253) @[mjonss](https://github.com/mjonss) + - 修复了在事务中创建的本地临时表无法找到的问题 [#35644](https://github.com/pingcap/tidb/issues/35644) @[djshow832](https://github.com/djshow832) + - 修复了给 `ENUM` 列设置 COLLATE 导致 panic 的问题 [#31637](https://github.com/pingcap/tidb/issues/31637) @[wjhuang2016](https://github.com/wjhuang2016) + - 修复了当某台 PD 宕机时,由于没有重试其他 PD 节点,导致查询表 `INFORMATION_SCHEMA.TIKV_REGION_STATUS` 时请求失败的问题 [#35708](https://github.com/pingcap/tidb/issues/35708) @[tangenta](https://github.com/tangenta) + - 修复在 `SET character_set_results = GBK` 后 `SHOW CREATE TABLE …` 不能正确显示 `SET` 和 `ENUM` 列的问题 [#31338](https://github.com/pingcap/tidb/issues/31338) @[tangenta](https://github.com/tangenta) + - 修复了系统变量 `tidb_log_file_max_days` 和 `tidb_config` 的作用域不正确的问题 [#35190](https://github.com/pingcap/tidb/issues/35190) @[morgo](https://github.com/morgo) + - 修复了类型是 `ENUM` 或者 `SET` 的列在 `SHOW CREATE TABLE` 的输出与 MySQL 不兼容的问题 [#36317](https://github.com/pingcap/tidb/issues/36317) @[Defined2014](https://github.com/Defined2014) + - 修复了创建表时指定类型为 `LONG BYTE` 列的行为与 MySQL 不兼容的问题 [#36239](https://github.com/pingcap/tidb/issues/36239) @[Defined2014](https://github.com/Defined2014) + - 修复了设置 `auto_increment = x` 对临时表无效的问题 [#36224](https://github.com/pingcap/tidb/issues/36224) @[djshow832](https://github.com/djshow832) + - 修复了在并发修改列的情况下可能导致 DEFAULT VALUE 不正确的问题 [#35846](https://github.com/pingcap/tidb/issues/35846) @[wjhuang2016](https://github.com/wjhuang2016) + - 避免向非健康状态的 TiKV 节点发送请求,以提升可用性 [#34906](https://github.com/pingcap/tidb/issues/34906) @[sticnarf](https://github.com/sticnarf) + - 修复了 `LOAD DATA` 语句中列的列表不生效的问题 [#35198](https://github.com/pingcap/tidb/issues/35198) @[SpadeA-Tang](https://github.com/SpadeA-Tang) + - 修复部分场景非唯一二级索引被误加悲观锁的问题 [#36235](https://github.com/pingcap/tidb/issues/36235) @[ekexium](https://github.com/ekexium) + ++ TiKV + + - 避免在悲观事务中报出 `Write Conflict` 错误 [#11612](https://github.com/tikv/tikv/issues/11612) @[sticnarf](https://github.com/sticnarf) + - 修复了在悲观事务中使用 Async Commit 导致重复提交记录的问题 [#12615](https://github.com/tikv/tikv/issues/12615) @[sticnarf](https://github.com/sticnarf) + - 修复了 TiKV API 从 `storage.api-version = 1` 升级为 `storage.api-version = 2` 时 panic 的问题 [#12600](https://github.com/tikv/tikv/issues/12600) @[pingyu](https://github.com/pingyu) + - 修复了 TiKV 和 PD 配置文件中 Region size 不一致的问题 [#12518](https://github.com/tikv/tikv/issues/12518) @[5kbpers](https://github.com/5kbpers) + - 修复了 TiKV 持续重连 PD 的问题 [#12506](https://github.com/tikv/tikv/issues/12506), [#12827](https://github.com/tikv/tikv/issues/12827) @[Connor1996](https://github.com/Connor1996) + - 修复了对空字符串进行类型转换导致 TiKV panic 的问题 [#12673](https://github.com/tikv/tikv/issues/12673) @[wshwsh12](https://github.com/wshwsh12) + - 修复了 `DATETIME` 类型的数据包含小数部分和 `Z` 后缀导致检查报错的问题 [#12739](https://github.com/tikv/tikv/issues/12739) @[gengliqi](https://github.com/gengliqi) + - 修复 Apply 写入 TiKV RocksDB 的 perf context 粒度过大的问题 [#11044](https://github.com/tikv/tikv/issues/11044) @[LykxSassinator](https://github.com/LykxSassinator) + - 修复当 [backup](/tikv-configuration-file.md#backup)/[import](/tikv-configuration-file.md#import)/[cdc](/tikv-configuration-file.md#cdc) 配置项设置错误时 TiKV 无法启动的问题 [#12771](https://github.com/tikv/tikv/issues/12771) @[3pointer](https://github.com/3pointer) + - 修复同时分裂和销毁一个 peer 时可能导致 panic 的问题 [#12825](https://github.com/tikv/tikv/issues/12825) @[BusyJay](https://github.com/BusyJay) + - 修复在 Region merge 时 source peer 通过 snapshot 追日志时可能导致 panic 的问题 [#12663](https://github.com/tikv/tikv/issues/12663) @[BusyJay](https://github.com/BusyJay) + - 修复 `max_sample_size` 为 `0` 时 ANALYZE 可能导致 panic 的问题 [#11192](https://github.com/tikv/tikv/issues/11192) @[LykxSassinator](https://github.com/LykxSassinator) + - 修复了启用 Raft Engine 时未清理加密密钥的问题 [#12890](https://github.com/tikv/tikv/issues/12890) @[tabokie](https://github.com/tabokie) + - 修复了 `get_valid_int_prefix` 函数与 TiDB 不兼容的问题,例如 `FLOAT` 类型被错误地转换成 `INT` [#13045](https://github.com/tikv/tikv/issues/13045) @[guo-shaoge](https://github.com/guo-shaoge) + - 修复了新创建的 Region Commit Log Duration 较高导致 QPS 下降的问题 [#13077](https://github.com/tikv/tikv/issues/13077) @[Connor1996](https://github.com/Connor1996) + - 修复 PD Region heartbeat 连接异常中断后未重新连接的问题 [#12934](https://github.com/tikv/tikv/issues/12934) @[bufferflies](https://github.com/bufferflies) + ++ Tools + + + Backup & Restore (BR) + + 修复了限速备份后,BR 没有重置速度限制的问题 [#31722](https://github.com/pingcap/tidb/issues/31722) @[MoCuishle28](https://github.com/MoCuishle28) + +## 贡献者 + +感谢来自 TiDB 社区的贡献者们: + +- [e1ijah1](https://github.com/e1ijah1) +- [PrajwalBorkar](https://github.com/PrajwalBorkar) +- [likzn](https://github.com/likzn) +- [rahulk789](https://github.com/rahulk789) +- [virusdefender](https://github.com/virusdefender) +- [joycse06](https://github.com/joycse06) +- [morgo](https://github.com/morgo) +- [ixuh12](https://github.com/ixuh12) +- [blacktear23](https://github.com/blacktear23) +- [johnhaxx7](https://github.com/johnhaxx7) +- [GoGim1](https://github.com/GoGim1) +- [renbaoshuo](https://github.com/renbaoshuo) +- [Zheaoli](https://github.com/Zheaoli) +- [fanrenhoo](https://github.com/fanrenhoo) +- [njuwelkin](https://github.com/njuwelkin) +- [wirybeaver](https://github.com/wirybeaver) +- [hey-kong](https://github.com/hey-kong) +- [fatelei](https://github.com/fatelei) +- [eastfisher](https://github.com/eastfisher):首次贡献者 +- [Juneezee](https://github.com/Juneezee):首次贡献者 diff --git a/releases/release-6.4.0.md b/releases/release-6.4.0.md new file mode 100644 index 000000000000..90cfba6fffb3 --- /dev/null +++ b/releases/release-6.4.0.md @@ -0,0 +1,472 @@ +--- +title: TiDB 6.4.0 Release Notes +--- + +# TiDB 6.4.0 Release Notes + +发版日期:2022 年 11 月 17 日 + +TiDB 版本:6.4.0-DMR + +试用链接:[快速体验](https://docs.pingcap.com/zh/tidb/v6.4/quick-start-with-tidb) | [下载离线包](https://cn.pingcap.com/product-community/) + +在 6.4.0-DMR 版本中,你可以获得以下关键特性: + +- 支持通过 [`FLASHBACK CLUSTER TO TIMESTAMP`](/sql-statements/sql-statement-flashback-to-timestamp.md) 命令将集群快速回退到特定的时间点 (实验特性)。 +- 支持对 TiDB 实例的[全局内存使用进行追踪](/configure-memory-usage.md)(实验特性)。 +- TiDB 分区表[兼容 LINEAR HASH 分区语法](/partitioned-table.md#tidb-对-linear-hash-分区的处理)。 +- 支持高性能、全局单调递增的 [`AUTO_INCREMENT`](/auto-increment.md#mysql-兼容模式) 列属性(实验特性)。 +- 支持对 [JSON 类型](/data-type-json.md)中的 Array 数据做范围选择。 +- 实现磁盘故障、I/O 无响应等极端情况下的故障恢复加速。 +- 新增[动态规划算法](/join-reorder.md#join-reorder-动态规划算法实例)来决定表的连接顺序。 +- 引入[新的优化器提示 `NO_DECORRELATE`](/optimizer-hints.md#no_decorrelate) 来控制关联优化的解除。 +- [集群诊断功能](/dashboard/dashboard-diagnostics-access.md) GA。 +- [TiFlash 静态加密](/encryption-at-rest.md#tiflash)支持国密算法 SM4。 +- 支持通过 SQL 语句立即对指定分区的 TiFlash 副本进行[物理数据整理 (Compaction)](/sql-statements/sql-statement-alter-table-compact.md)。 +- 支持[基于 AWS EBS snapshot 的集群备份和恢复](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.4/backup-to-aws-s3-by-snapshot)。 +- 支持在分库分表合并迁移场景中[标记下游表中的数据来自上游哪个分库、分表和数据源](/dm/dm-key-features.md#提取分库分表数据源信息写入合表)。 + +## 新功能 + +### SQL + +* 支持通过 SQL 语句立即对指定分区的 TiFlash 副本进行物理数据整理 (Compaction) [#5315](https://github.com/pingcap/tiflash/issues/5315) @[hehechen](https://github.com/hehechen) + + TiDB v6.2.0 发布了针对全表的 TiFlash 副本立即进行[物理数据整理 (Compaction)](/sql-statements/sql-statement-alter-table-compact.md#alter-table--compact) 的功能,支持用户自行选择合适的时机,手动执行 SQL 语句立即对 TiFlash 中的物理数据进行整理,从而减少存储空间占用,并提升查询性能。v6.4.0 细化了 TiFlash 副本数据整理的粒度,支持对表中指定分区的 TiFlash 副本立即进行数据整理。 + + 通过 SQL 语句 `ALTER TABLE table_name COMPACT [PARTITION PartitionNameList] [engine_type REPLICA]`,你可以立即对指定分区的 TiFlash 副本进行数据整理。 + + 更多信息,请参考[用户文档](/sql-statements/sql-statement-alter-table-compact.md#对分区表中指定分区的-tiflash-副本进行数据整理)。 + +* 支持通过 `FLASHBACK CLUSTER TO TIMESTAMP` 命令将集群快速回退到特定的时间点(实验特性)[#37197](https://github.com/pingcap/tidb/issues/37197) [#13303](https://github.com/tikv/tikv/issues/13303) @[Defined2014](https://github.com/Defined2014) @[bb7133](https://github.com/bb7133) @[JmPotato](https://github.com/JmPotato) @[Connor1996](https://github.com/Connor1996) @[HuSharp](https://github.com/HuSharp) @[CalvinNeo](https://github.com/CalvinNeo) + + `FLASHBACK CLUSTER TO TIMESTAMP` 支持在 Garbage Collection (GC) life time 内快速回退整个集群到指定的时间点。使用该特性可以快速撤消 DML 误操作。例如,在误执行了没有 `WHERE` 子句的 `DELETE` 后,使用 `FLASHBACK CLUSTER TO TIMESTAMP` 能够在几分钟内将集群数据恢复到指定的时间点。该特性不依赖于数据库备份,并支持在时间线上多次回退以确定特定数据更改发生的时间。需要注意的是,`FLASHBACK CLUSTER TO TIMESTAMP` 不能替代数据库备份。 + + 在执行 `FLASHBACK CLUSTER TO TIMESTAMP` 之前,需要暂停 PITR 和 TiCDC 等工具上运行的同步任务,待 `FLASHBACK` 执行完成后再启动,否则会造成同步失败等问题。 + + 更多信息,请参考[用户文档](/sql-statements/sql-statement-flashback-to-timestamp.md)。 + +* 支持通过 `FLASHBACK DATABASE` 命令来恢复被删除的数据库 [#20463](https://github.com/pingcap/tidb/issues/20463) @[erwadba](https://github.com/erwadba) + + `FLASHBACK DATABASE` 支持在 Garbage Collection (GC) life time 时间内恢复被 `DROP` 删除的数据库以及数据。该特性不依赖任何外部工具,可以轻松快速地通过 SQL 语句进行数据和元信息的恢复。 + + 更多信息,请参考[用户文档](/sql-statements/sql-statement-flashback-database.md)。 + +### 安全 + +* TiFlash 静态加密支持国密算法 SM4 [#5953](https://github.com/pingcap/tiflash/issues/5953) @[lidezhu](https://github.com/lidezhu) + + TiFlash 的静态加密新增 SM4 算法,你可以将配置文件 `tiflash-learner.toml` 中的 `data-encryption-method` 参数的值设置为 `sm4-ctr`,以启用基于国密算法 SM4 的静态加密能力。 + + 更多信息,请参考[用户文档](/encryption-at-rest.md#tiflash)。 + +### 可观测性 + +* 集群诊断功能 GA [#1438](https://github.com/pingcap/tidb-dashboard/issues/1438) @[Hawkson-jee](https://github.com/Hawkson-jee) + + [集群诊断功能](/dashboard/dashboard-diagnostics-access.md)是在指定的时间范围内,对集群可能存在的问题进行诊断,并将诊断结果和一些集群相关的负载监控信息汇总成一个[诊断报告](/dashboard/dashboard-diagnostics-report.md)。诊断报告是网页形式,通过浏览器保存后可离线浏览和传阅。 + + 你可以通过该报告快速了解集群内的基本诊断信息,包括负载、组件、耗时和配置信息。若集群存在一些常见问题,在[诊断信息](/dashboard/dashboard-diagnostics-report.md#诊断信息)部分可以了解 TiDB 内置自动诊断的结果。 + +### 性能 + +* 引入 Coprocessor Task 并发度自适应机制 [#37724](https://github.com/pingcap/tidb/issues/37724) @[you06](https://github.com/you06) + + 随着 Coprocessor Task 任务数增加,TiDB 将结合 TiKV 处理速度自动增加任务并发度(调整 [`tidb_distsql_scan_concurrency`](/system-variables.md#tidb_distsql_scan_concurrency)),减少 Coprocessor Task 任务排队,降低延迟。 + +* 新增动态规划算法来决定表的连接顺序 [#18969](https://github.com/pingcap/tidb/issues/18969) @[winoros](https://github.com/winoros) + + 在之前的版本中,TiDB 采用贪心算法来决定表的连接顺序。在 v6.4.0 中,优化器引入了[动态规划算法](/join-reorder.md#join-reorder-动态规划算法实例)。相比贪心算法,动态规划算法会枚举更多可能的连接顺序,进而有机会发现更好的执行计划,提升部分场景下 SQL 执行效率。 + + 由于动态规划算法的枚举过程可能消耗更多的时间,目前 Join Reorder 算法由变量 [`tidb_opt_join_reorder_threshold`](/system-variables.md#tidb_opt_join_reorder_threshold) 控制,当参与 Join Reorder 的节点个数大于该阈值时选择贪心算法,反之选择动态规划算法。 + + 更多信息,请参考[用户文档](/join-reorder.md)。 + +* 前缀索引支持对空值进行过滤 [#21145](https://github.com/pingcap/tidb/issues/21145) @[xuyifangreeneyes](https://github.com/xuyifangreeneyes) + + 该特性是对前缀索引使用上的优化。当表中某列存在前缀索引,那么 SQL 语句中对该列的 `IS NULL` 或 `IS NOT NULL` 条件可以直接利用前缀进行过滤,避免了这种情况下的回表,提升了 SQL 语句的执行性能。 + + 更多信息,请参考[用户文档](/system-variables.md#tidb_opt_prefix_index_single_scan-从-v640-版本开始引入)。 + +* 增强 TiDB Chunk 复用机制 [#38606](https://github.com/pingcap/tidb/issues/38606) @[keeplearning20221](https://github.com/keeplearning20221) + + 在之前的版本中,TiDB 只在 `writechunk` 函数中复用 Chunk。TiDB v6.4.0 扩展 Chunk 复用机制到 Executor 的算子中,通过复用 Chunk 减少 TiDB 申请释放内存频率,进而提升部分场景下的 SQL 查询执行效率。你可以通过系统变量 [`tidb_enable_reuse_chunk`](/system-variables.md#tidb_enable_reuse_chunk-从-v640-版本开始引入) 来控制是否启用 Chunk 对象复用,默认为开启。 + +* 引入新的优化器提示 `NO_DECORRELATE` 来控制关联优化的解除 [#37789](https://github.com/pingcap/tidb/issues/37789) @[time-and-fate](https://github.com/time-and-fate) + + 默认情况下,TiDB 总是会尝试重写关联子查询以解除关联,这通常会提高执行效率。但是在一部分场景下,解除关联反而会降低执行效率。TiDB 在 v6.4.0 版本中引入了 hint `NO_DECORRELATE`,用来提示优化器不要对指定的查询块解除关联,以提升部分场景下的查询性能。 + + 更多信息,请参考[用户文档](/optimizer-hints.md#no_decorrelate)。 + +* 提升了分区表统计信息收集的性能 [#37977](https://github.com/pingcap/tidb/issues/37977) @[Yisaer](https://github.com/Yisaer) + + 在 v6.4.0 版本中,TiDB 优化了分区表统计信息的收集策略。你可以通过系统变量 [`tidb_auto_analyze_partition_batch_size`](/system-variables.md#tidb_auto_analyze_partition_batch_size-从-v640-版本开始引入) 定义并发度,用并行的方式同时收集多个分区的统计信息,从而加快统计信息收集的速度,减少 analyze 所需的时间。 + +### 稳定性 + +* 磁盘故障、I/O 无响应等极端情况下的故障恢复加速 [#13648](https://github.com/tikv/tikv/issues/13648) @[LykxSassinator](https://github.com/LykxSassinator) + + 数据库的可用性是企业用户最为关注的指标之一,但是在复杂的硬件环境下,如何快速检测故障并恢复一直是数据库面临的挑战之一。TiDB v6.4.0 全面优化了 TiKV 节点的状态检测机制。即使在磁盘故障或 I/O 无响应等极端情况下,TiDB 依然可以快速上报节点状态,同时搭配主动唤醒机制,提前发起 Leader 选举,加速集群自愈。通过这次优化,TiDB 在磁盘故障场景下,集群恢复时间可以缩短 50% 左右。 + +* TiDB 全局内存控制(实验特性)[#37816](https://github.com/pingcap/tidb/issues/37816) @[wshwsh12](https://github.com/wshwsh12) + + v6.4.0 引入了全局内存控制,对 TiDB 实例的全局内存使用进行追踪。你可以通过系统变量 [`tidb_server_memory_limit`](/system-variables.md#tidb_server_memory_limit-从-v640-版本开始引入) 设置全局内存的使用上限。当内存使用量接近预设的上限时,TiDB 会尝试对内存进行回收,释放更多的可用内存;当内存使用量超出预设的上限时,TiDB 会识别出当前内存使用量最大的 SQL 操作,并取消这个操作,避免因为内存使用过度而产生的系统性问题。 + + 当 TiDB 实例的内存消耗存在潜在风险时,TiDB 会预先收集诊断信息并写入指定目录,方便对问题的诊断。同时,TiDB 提供了系统表视图 [`INFORMATION_SCHEMA.MEMORY_USAGE`](/information-schema/information-schema-memory-usage.md) 和 [`INFORMATION_SCHEMA.MEMORY_USAGE_OPS_HISTORY`](/information-schema/information-schema-memory-usage-ops-history.md) 用来展示内存使用情况及历史操作,帮助用户清晰了解内存使用状况。 + + 全局内存控制是 TiDB 内存管理的重要一步,对实例采用全局视角,引入系统性方法对内存用量进行管理,这可以极大提升数据库的稳定性,提高服务的可用性,支持 TiDB 在更多重要场景平稳运行。 + + 更多信息,请参考[用户文档](/configure-memory-usage.md)。 + +* 控制优化器在构造范围时的内存占用 [#37176](https://github.com/pingcap/tidb/issues/37176) @[xuyifangreeneyes](https://github.com/xuyifangreeneyes) + + v6.4.0 引入了系统变量 [`tidb_opt_range_max_size`](/system-variables.md#tidb_opt_range_max_size-从-v640-版本开始引入) 来限制优化器在构造范围时消耗的内存上限。当内存使用超出这个限制,则放弃构造精确的范围,转而构建更粗粒度的范围,以此降低内存消耗。当 SQL 语句中的 `IN` 条件较多时,这个优化可以显著降低编译时的内存使用量,保证系统的稳定性。 + + 更多信息,请参考[用户文档](/system-variables.md#tidb_opt_range_max_size-从-v640-版本开始引入)。 + +* 支持统计信息的同步加载(GA)[#37434](https://github.com/pingcap/tidb/issues/37434) @[chrysan](https://github.com/chrysan) + + TiDB v6.4.0 起,正式开启了统计信息同步加载的特性(默认开启),支持在执行当前 SQL 语句时将直方图、TopN、CMSketch 等占用空间较大的统计信息同步加载到内存,提高优化该 SQL 语句时统计信息的完整性。 + + 更多信息,请参考[用户文档](/system-variables.md#tidb_stats_load_sync_wait-从-v540-版本开始引入)。 + +### 易用性 + +* TiKV API V2 成为正式功能 [#11745](https://github.com/tikv/tikv/issues/11745) @[pingyu](https://github.com/pingyu) + + 在 v6.1.0 之前,TiKV 的 RawKV 接口仅存储客户端传入的原始数据,因此只提供基本的 Key-Value 读写能力。此外,由于编码方式不同、数据范围没有隔离等,同一个 TiKV 集群中,TiDB、事务 KV、RawKV 无法同时使用,因此对于不同使用方式并存的场景,必须部署多个集群,增加了机器和部署成本。 + + TiKV API V2 提供了新的存储格式,功能亮点如下: + + * RawKV 数据以 MVCC 方式存储,记录数据的变更时间戳,并在此基础上提供 Change Data Capture 能力(实验特性,见 [TiKV-CDC](https://github.com/tikv/migration/blob/main/cdc/README.md))。 + * 数据根据使用方式划分范围,支持单一集群 TiDB、事务 KV、RawKV 应用共存。 + * 预留 Key Space 字段,为多租户等特性提供支持。 + + 你可以通过在 TiKV 的 `[storage]` 配置中设置 `api-version = 2` 来启用 TiKV API V2。 + + 更多信息,请参考[用户文档](/tikv-configuration-file.md#api-version-从-v610-版本开始引入)。 + +* 优化 TiFlash 数据同步进度的准确性 [#4902](https://github.com/pingcap/tiflash/issues/4902) @[hehechen](https://github.com/hehechen) + + TiDB 的 `INFORMATION_SCHEMA.TIFLASH_REPLICA` 表中的 `PROGRESS` 字段表示 TiFlash 副本与 TiKV 中对应表数据的同步进度。在之前的版本中,`PROCESS` 字段只显示 TiFlash 副本创建过程中的数据同步进度。在 TiFlash 副本创建完后,当在 TiKV 相应的表中导入新的数据时,该值不会更新数据的同步进度。 + + v6.4.0 版本改进了 TiFlash 副本数据同步进度更新机制。在创建 TiFlash 副本后,进行数据导入等操作,TiFlash 副本需要和 TiKV 数据进行同步时,[`INFORMATION_SCHEMA.TIFLASH_REPLICA`](/information-schema/information-schema-tiflash-replica.md) 表中的 `PROGRESS` 值将会更新,显示实际的数据同步进度。通过此优化,你可以方便地查看 TiFlash 数据同步的实际进度。 + + 更多信息,请参考[用户文档](/information-schema/information-schema-tiflash-replica.md)。 + +### MySQL 兼容性 + +* TiDB 分区表兼容 Linear Hash 分区语法 [#38450](https://github.com/pingcap/tidb/issues/38450) @[mjonss](https://github.com/mjonss) + + TiDB 现有的分区方式支持 Hash、Range、List 分区。TiDB v6.4.0 增加了对 [MySQL LINEAR HASH](https://dev.mysql.com/doc/refman/5.7/en/partitioning-linear-hash.html) 分区语法的兼容。 + + 在 TiDB 上,你可以直接执行原有的 MySQL Linear Hash 分区的 DDL 语句,TiDB 将创建一个常规的非线性 Hash 分区表(注意 TiDB 内部实际不存在 LINEAR HASH 分区)。你也可以直接执行原有的 MySQL LINEAR HASH 分区的 DML 语句,TiDB 将正常返回对应的 TiDB Hash 分区的查询结果。此功能保证了 TiDB 对 MySQL LINEAR HASH 分区的语法兼容,方便基于 MySQL 的应用无缝迁移到 TiDB。 + + 当分区数是 2 的幂时,TiDB Hash 分区表中行的分布情况与 MySQL Linear Hash 分区表相同,但当分区数不是 2 的幂时,TiDB Hash 分区表中行的分布情况与 MySQL Linear Hash 分区表会有所区别。 + + 更多信息,请参考[用户文档](/partitioned-table.md#tidb-对-linear-hash-分区的处理)。 + +* 支持高性能、全局单调递增的 `AUTO_INCREMENT` 列属性(实验特性)[#38442](https://github.com/pingcap/tidb/issues/38442) @[tiancaiamao](https://github.com/tiancaiamao) + + TiDB v6.4.0 引入了 `AUTO_INCREMENT` 的 MySQL 兼容模式,通过中心化分配自增 ID,实现了自增 ID 在所有 TiDB 实例上单调递增。使用该特性能够更容易地实现查询结果按自增 ID 排序。要使用 MySQL 兼容模式,你需要在建表时将 `AUTO_ID_CACHE` 设置为 `1`。 + + ```sql + CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; + ``` + + 更多信息,请参考[用户文档](/auto-increment.md#mysql-兼容模式)。 + +* 支持对 JSON 类型中的 Array 数据做范围选择 [#13644](https://github.com/tikv/tikv/issues/13644) @[YangKeao](https://github.com/YangKeao) + + 从 v6.4.0 起,TiDB 支持 [MySQL 兼容的范围选择语法](https://dev.mysql.com/doc/refman/8.0/en/json.html#json-paths)。 + + - 通过关键字 `to`,你可以指定元素起始和结束的位置,并选择 Array 中连续范围的元素,起始位置记为 `0`。例如,使用 `$[0 to 2]` 可以选择 Array 中的前三个元素。 + - 通过关键字 `last`,你可以指定 Array 中最后一个元素的位置,实现从右到左的位置设定。例如,使用 `$[last-2 to last]` 可以选择 Array 中的最后三个元素。 + + 该特性简化了 SQL 的编写过程,进一步提升了 JSON 类型的兼容能力,降低了 MySQL 应用向 TiDB 迁移的难度。 + +* 支持对数据库用户增加额外说明 [#38172](https://github.com/pingcap/tidb/issues/38172) @[CbcWestwolf](https://github.com/CbcWestwolf) + + 在 TiDB v6.4.0 中,你可以通过 [`CREATE USER`](/sql-statements/sql-statement-create-user.md) 或 [`ALTER USER`](/sql-statements/sql-statement-alter-user.md) 语句为数据库用户添加额外的说明信息。TiDB 提供了两种说明格式,你可以通过 `COMMENT` 添加一段文本注释,也可以通过 `ATTRIBUTE` 添加一组 JSON 格式的结构化属性。 + + 此外,TiDB v6.4.0 新增了 [`USER_ATTRIBUTES`](/information-schema/information-schema-user-attributes.md) 表。你可以在该表中查看用户的注释和属性信息。 + + ```sql + CREATE USER 'newuser1'@'%' COMMENT 'This user is created only for test'; + CREATE USER 'newuser2'@'%' ATTRIBUTE '{"email": "user@pingcap.com"}'; + SELECT * FROM INFORMATION_SCHAME.USER_ATTRIBUTES; + ``` + + ```sql + +-----------+------+---------------------------------------------------+ + | USER | HOST | ATTRIBUTE | + +-----------+------+---------------------------------------------------+ + | newuser1 | % | {"comment": "This user is created only for test"} | + | newuser1 | % | {"email": "user@pingcap.com"} | + +-----------+------+---------------------------------------------------+ + 2 rows in set (0.00 sec) + ``` + + 这个特性提升了 TiDB 对 MySQL 的语法的兼容性,使得 TiDB 更容易融入 MySQL 生态的工具或平台。 + +### 备份和恢复 + +* 基于 AWS EBS snapshot 的集群备份和恢复 [#33849](https://github.com/pingcap/tidb/issues/33849) @[fengou1](https://github.com/fengou1) + + 如果你的 TiDB 集群部署在 EKS 上,使用了 AWS EBS 卷,并且对数据备份有以下要求,可考虑使用 TiDB Operator 将 TiDB 集群数据以卷快照以及元数据的方式备份至 Amazon S3: + + - 备份的影响降到最小,如备份对 QPS 和事务耗时影响小于 5%,不占用集群 CPU 以及内存。 + - 快速备份和恢复,比如 1 小时内完成备份,2 小时内完成恢复。 + + 更多信息,请参考[用户文档](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.4/backup-to-aws-s3-by-snapshot)。 + +### 数据迁移 + +* 支持将上游数据源信息以扩展列形式写入下游合表 [#37797](https://github.com/pingcap/tidb/issues/37797) @[lichunzhu](https://github.com/lichunzhu) + + 在上游分库分表合并到 TiDB 的场景,你可以在目标表中手动额外增加几个字段(扩展列),并在配置 DM 任务时,对这几个扩展列赋值。例如,当赋予上游分库分表的名称时,通过 DM 写入到下游的记录会包含上游分库分表的名称。在一些数据异常的场景,你可以通过该功能快速定位目标表的问题数据源信息,如该数据来自上游哪个分库,哪个分表。 + + 更多信息,请参考[提取分库分表数据源信息写入合表](/dm/dm-key-features.md#提取分库分表数据源信息写入合表)。 + +* 优化 DM 的前置检查项,将部分必须通过项改为非必须通过项 [#7333](https://github.com/pingcap/tiflow/issues/7333) @[lichunzhu](https://github.com/lichunzhu) + + 为了使数据迁移任务顺利进行,DM 在启动迁移任务时会自动触发[任务前置检查](/dm/dm-precheck.md),并返回检查结果。只有当前置检查通过后,DM 才开始执行迁移任务。 + + 在 v6.4.0,DM 将如下三个检查项由必须通过项改为非必须通过项,提升了前置检查通过率: + + - 检查字符集是否存在兼容性差异 + - 检查上游表中是否存在主键或唯一键约束 + - 数据库主从配置,上游数据库必须设置数据库 ID `server_id` + +* 增量迁移任务支持 binlog position 和 GTID 作为选配参数 [#7393](https://github.com/pingcap/tiflow/issues/7393) @[GMHDBJD](https://github.com/GMHDBJD) + + v6.4.0 之前,只配置增量迁移任务时,需要传入 binlog position 或者 GTID 才能启动任务,配置复杂,用户理解成本高。自 v6.4.0 起,如果只需要执行增量迁移任务,则可以不指定 binlog position 或者 GTID 的参数取值,DM 将默认按任务的启动时间从上游获取该时间之后的 binlog file,并将这些增量数据迁移到下游 ,降低了使用时的理解成本和配置复杂度。 + + 更多信息,请参考 [DM 任务完整配置文件介绍](/dm/task-configuration-file-full.md)。 + +* DM 任务增加一些状态信息的展示 [#7343](https://github.com/pingcap/tiflow/issues/7343) @[okJiang](https://github.com/okJiang) + + 在 v6.4.0,DM 数据迁移任务新增了一些性能指标和进度指标,方便用户更直观地了解迁移性能和进度,同时为问题排查提供参考信息: + + * 增加了 DM 任务当前数据导出、数据导入的性能指标,单位 bytes/s。 + * 将当前 DM 写入目标库的性能指标命名从 TPS 改为 RPS (rows/second)。 + * 新增了 DM 全量任务数据导出的进度展示。 + + 关于这些指标的详细介绍,请参考 [TiDB Data Migration 查询状态](/dm/dm-query-status.md)。 + +### 数据共享与订阅 + +- TiCDC 支持同步数据到 `3.2.0` 版本的 Kafka [#7191](https://github.com/pingcap/tiflow/issues/7191) @[3AceShowHand](https://github.com/3AceShowHand) + + TiCDC 下游支持的 Kafka 最高版本从 `3.1.0` 变为 `3.2.0`。你可以通过 TiCDC 将数据同步到不高于 `3.2.0` 版本的 Kafka。 + +## 兼容性变更 + +### 系统变量 + +| 变量名 | 修改类型 | 描述 | +|--------|------------------------------|------| +| [`tidb_constraint_check_in_place_pessimistic`](/system-variables.md#tidb_constraint_check_in_place_pessimistic-从-v630-版本开始引入) | 修改 | 该变量用于控制悲观事务中唯一约束检查的时间点。v6.4.0 去掉了它的 GLOBAL 作用域并支持通过配置项 [`pessimistic-txn.constraint-check-in-place-pessimistic`](/tidb-configuration-file.md#constraint-check-in-place-pessimistic-从-v640-版本开始引入) 控制它的默认值。 | +| [`tidb_ddl_flashback_concurrency`](/system-variables.md#tidb_ddl_flashback_concurrency-从-v630-版本开始引入) | 修改 | 该变量从 v6.4.0 开始生效,用来控制 [`FLASHBACK CLUSTER TO TIMESTAMP`](/sql-statements/sql-statement-flashback-to-timestamp.md) 的并发数。默认值为 `64`。 | +| [`tidb_enable_clustered_index`](/system-variables.md#tidb_enable_clustered_index-从-v50-版本开始引入) | 修改 | 该变量默认值从 `INT_ONLY` 修改为 `ON`,表示表的主键默认使用聚簇索引。 | +| [`tidb_enable_paging`](/system-variables.md#tidb_enable_paging-从-v540-版本开始引入) | 修改 | 该变量默认值 `OFF` 修改为 `ON`,表示默认使用分页 (paging) 方式发送 Coprocessor 请求。 | +| [`tidb_enable_prepared_plan_cache`](/system-variables.md#tidb_enable_prepared_plan_cache-从-v610-版本开始引入) | 修改 | 该变量用来控制是否开启 [Prepared Plan Cache](/sql-prepared-plan-cache.md)。v6.4.0 新增了 SESSION 作用域。 | +| [`tidb_memory_usage_alarm_ratio`](/system-variables.md#tidb_memory_usage_alarm_ratio) | 修改 | 该变量用于设置触发 tidb-server 内存告警的内存使用比率,默认值从 `0.8` 修改为 `0.7`。 | +| [`tidb_opt_agg_push_down`](/system-variables.md#tidb_opt_agg_push_down) | 修改 | 该变量用来设置优化器是否执行聚合函数下推到 Join,Projection 和 UnionAll 之前的优化操作。v6.4.0 新增了 GLOBAL 的作用域。 | +| [`tidb_prepared_plan_cache_size`](/system-variables.md#tidb_prepared_plan_cache_size-从-v610-版本开始引入) | 修改 | 该变量用来控制单个 session 的 Prepared Plan Cache 最多能够缓存的计划数量。v6.4.0 新增了 SESSION 作用域。| +| [`tidb_stats_load_sync_wait`](/system-variables.md#tidb_stats_load_sync_wait-从-v540-版本开始引入) | 修改 | 该变量默认值从 `0` 修改为 `100`,代表 SQL 执行同步加载完整统计信息默认等待 100 毫秒后会超时。 | +| [`tidb_stats_load_pseudo_timeout`](/system-variables.md#tidb_stats_load_pseudo_timeout-从-v540-版本开始引入) | 修改 | 该变量默认值从 `OFF` 修改为 `ON`,代表统计信息同步加载超时后,SQL 会退回使用 pseudo 的统计信息。| +| [`last_sql_use_alloc`](/system-variables.md#last_sql_use_alloc-从-v640-版本开始引入) | 新增 | 该变量是一个只读变量,用来显示上一个语句是否使用了缓存的 Chunk 对象 (Chunk allocation)。默认值为 `OFF`。 | +| [`tidb_auto_analyze_partition_batch_size`](/system-variables.md#tidb_auto_analyze_partition_batch_size-从-v640-版本开始引入) | 新增 | 该变量用于设置 TiDB [自动 analyze](/statistics.md#自动更新) 分区表(即自动收集分区表上的统计信息)时,每次同时 analyze 分区的个数。默认值为 `1`。 | +| [`tidb_enable_external_ts_read`](/system-variables.md#tidb_enable_external_ts_read-从-v640-版本开始引入) | 新增 | 该变量用于控制 TiDB 是否会读取 [`tidb_external_ts`](/system-variables.md#tidb_external_ts-从-v640-版本开始引入) 指定的时间戳前的历史数据。默认值为 `OFF`。 | +| [`tidb_enable_gogc_tuner`](/system-variables.md#tidb_enable_gogc_tuner-从-v640-版本开始引入) | 新增 | 该变量来用控制是否开启 GOGC Tuner,默认为 `ON`。 | +| [`tidb_enable_reuse_chunk`](/system-variables.md#tidb_enable_reuse_chunk-从-v640-版本开始引入) | 新增 | 该变量用于控制 TiDB 是否启用 Chunk 对象缓存,默认为 `ON`,代表 TiDB 优先使用缓存中的 Chunk 对象,缓存中找不到申请的对象时才会从系统内存中申请。如果为 `OFF`,则直接从系统内存中申请 Chunk 对象。 | +| [`tidb_enable_prepared_plan_cache_memory_monitor`](/system-variables.md#tidb_enable_prepared_plan_cache_memory_monitor-从-v640-版本开始引入) | 新增 | 该变量用来控制是否统计 Prepared Plan Cache 中所缓存的执行计划占用的内存,默认为 `ON`。| +| [`tidb_external_ts`](/system-variables.md#tidb_external_ts-从-v640-版本开始引入) | 新增 | 默认值为 `0`。当 [`tidb_enable_external_ts_read`](/system-variables.md#tidb_enable_external_ts_read-从-v640-版本开始引入) 设置为 `ON` 时,TiDB 会依据该变量指定的时间戳读取历史数据。 | +| [`tidb_gogc_tuner_threshold`](/system-variables.md#tidb_gogc_tuner_threshold-从-v640-版本开始引入) | 新增 | 该变量用来控制 GOGC Tuner 自动调节的最大内存阈值,超过阈值后 GOGC Tuner 会停止工作。默认值为 `0.6`。 | +| [`tidb_memory_usage_alarm_keep_record_num`](/system-variables.md#tidb_memory_usage_alarm_keep_record_num-从-v640-版本开始引入) | 新增 | 当 tidb-server 内存占用超过内存报警阈值并触发报警时,TiDB 默认只保留最近 5 次报警时所生成的状态文件。通过该变量可以调整该次数。 | +| [`tidb_opt_prefix_index_single_scan`](/system-variables.md#tidb_opt_prefix_index_single_scan-从-v640-版本开始引入) | 新增 | 该变量用于控制 TiDB 优化器是否将某些过滤条件下推到前缀索引,尽量避免不必要的回表,从而提高查询性能。默认为 `ON`。 | +| [`tidb_opt_range_max_size`](/system-variables.md#tidb_opt_range_max_size-从-v640-版本开始引入) | 新增 | 该变量用于指定优化器构造扫描范围的内存用量上限。默认值为 `67108864`(即 64 MiB)。 | +| [`tidb_server_memory_limit`](/system-variables.md#tidb_server_memory_limit-从-v640-版本开始引入) | 新增 | 该变量用于指定 TiDB 实例的内存限制(实验特性)。默认值为 `0`,表示不设内存限制。 | +| [`tidb_server_memory_limit_gc_trigger`](/system-variables.md#tidb_server_memory_limit_gc_trigger-从-v640-版本开始引入) | 新增 | 该变量用于控制 TiDB 尝试触发 GC 的阈值(实验特性)。默认值为 `70%`。| +| [`tidb_server_memory_limit_sess_min_size`](/system-variables.md#tidb_server_memory_limit_sess_min_size-从-v640-版本开始引入) | 新增 | 开启内存限制后,TiDB 会终止当前实例上内存用量最高的 SQL 语句。本变量指定此情况下 SQL 语句被终止的最小内存用量(实验特性),默认值为 `134217728`(即 128 MiB)。 | + +### 配置文件参数 + +| 配置文件 | 配置项 | 修改类型 | 描述 | +| -------- | -------- | -------- | -------- | +| TiDB | `tidb_memory_usage_alarm_ratio` | 废弃 | 该配置不再生效。| +| TiDB | `memory-usage-alarm-ratio` | 废弃 | 该配置项被系统变量 [`tidb_memory_usage_alarm_ratio`](/system-variables.md#tidb_memory_usage_alarm_ratio) 所取代。如果在升级前设置过该配置项,升级后原配置将不再生效。| +| TiDB | [`pessimistic-txn.constraint-check-in-place-pessimistic`](/tidb-configuration-file.md#constraint-check-in-place-pessimistic-从-v640-版本开始引入) | 新增 | 用于控制系统变量 [`tidb_constraint_check_in_place_pessimistic`](/system-variables.md#tidb_constraint_check_in_place_pessimistic-从-v630-版本开始引入) 的默认值,默认值为 `true`。| +| TiDB | [`tidb_max_reuse_chunk`](/tidb-configuration-file.md#tidb_max_reuse_chunk-从-v640-版本开始引入) | 新增 | 用于控制每个连接最多缓存的 Chunk 对象数,默认值为 `64`。 | +| TiDB | [`tidb_max_reuse_column`](/tidb-configuration-file.md#tidb_max_reuse_column-从-v640-版本开始引入) | 新增 | 用于控制每个连接最多缓存的 column 对象数,默认值为 `256`。 | +| TiKV | [`cdc.raw-min-ts-outlier-threshold`](/tikv-configuration-file.md#raw-min-ts-outlier-threshold-从-v620-版本开始引入) | 废弃 | 该配置不再生效。| +| TiKV | [`causal-ts.alloc-ahead-buffer`](/tikv-configuration-file.md#alloc-ahead-buffer-从-v640-版本开始引入) | 新增 | 预分配给 TSO 的缓存大小(以时长计算),默认值为 `3s`。| +| TiKV | [`causal-ts.renew-batch-max-size`](/tikv-configuration-file.md#renew-batch-max-size-从-v640-版本开始引入)| 新增 | 单次时间戳请求的最大数量,默认值为 `8192`。 | +| TiKV | [`raftstore.apply-yield-write-size`](/tikv-configuration-file.md#apply-yield-write-size-从-v640-版本开始引入) | 新增 | Apply 线程每一轮处理单个状态机写入的最大数据量,默认值为 `32KiB`。这是个软限制。| +| PD | [`tso-update-physical-interval`](/pd-configuration-file.md#tso-update-physical-interval) | 新增 | 这个配置项从 v6.4.0 开始生效,用来控制 TSO 物理时钟更新周期,默认值为 `50ms`。 | +| TiFlash | [`data-encryption-method`](/tiflash/tiflash-configuration.md#配置文件-tiflash-learnertoml) | 修改 | 扩展可选值范围:增加 `sm4-ctr`。设置为 `sm4-ctr` 时,数据将采用国密算法 SM4 加密后进行存储。 | +| DM | [`routes.route-rule-1.extract-table`](/dm/task-configuration-file-full.md#完整配置文件示例) | 新增 | 可选配置。用于提取分库分表场景中分表的源信息,提取的信息写入下游合表,用于标识数据来源。如果配置该项,需要提前在下游手动创建合表。 | +| DM | [`routes.route-rule-1.extract-schema`](/dm/task-configuration-file-full.md#完整配置文件示例) | 新增 | 可选配置。用于提取分库分表场景中分库的源信息,提取的信息写入下游合表,用于标识数据来源。如果配置该项,需要提前在下游手动创建合表。 | +| DM | [`routes.route-rule-1.extract-source`](/dm/task-configuration-file-full.md#完整配置文件示例) | 新增 | 可选配置。用于提取分库分表场景中的源信息,提取的信息写入下游合表,用于标识数据来源。如果配置该项,需要提前在下游手动创建合表。 | + +### 其他 + +- 从 v6.4.0 开始,`mysql.user` 表新增 `User_attributes` 和 `Token_issuer` 两个字段。如果从 v6.4.0 之前版本的备份数据[恢复 `mysql` schema 下的系统表](/br/br-snapshot-guide.md#恢复-mysql-数据库下的表) 到 v6.4.0 集群,BR 将返回 `mysql.user` 表的 `column count mismatch` 错误。如果你未选择恢复 `mysql` schema 下的系统表,则不会报错。 +- 针对命名规则符合 Dumpling [输出文件格式](/dumpling-overview.md#输出文件格式)但后缀名并非 gzip 压缩格式的文件(例如 `test-schema-create.sql.origin` 和 `test.table-schema.sql.origin`),Lightning 的处理方式发生了变化。在 v6.4.0 之前的版本中,如果待导入的文件中包含这类文件,Lightning 将跳过对这类文件的导入。从 v6.4.0 起,Lightning 将认为这些文件使用了不支持的压缩格式,导致导入失败。 +- 从 v6.4.0 开始,TiCDC 使用 Syncpoint 功能需要同步任务拥有下游集群的 `SYSTEM_VARIABLES_ADMIN` 或者 `SUPER` 权限。 + +## 改进提升 + ++ TiDB + + - 允许修改 noop 系统变量 `lc_messages` [#38231](https://github.com/pingcap/tidb/issues/38231) @[djshow832](https://github.com/djshow832) + - 允许 `AUTO_RANDOM` 列作为聚簇复合索引中的第一列 [#38572](https://github.com/pingcap/tidb/issues/38572) @[tangenta](https://github.com/tangenta) + - 内部事务重试使用悲观模式避免重试失败,降低耗时 [#38136](https://github.com/pingcap/tidb/issues/38136) @[jackysp](https://github.com/jackysp) + ++ TiKV + + - 新增 `apply-yield-write-size` 配置项,以限制 Apply 线程每一轮处理单个状态机写入的数据大小,缓解 Raftstore 线程在 Apply 写入过大时的阻塞现象 [#13313](https://github.com/tikv/tikv/issues/13313) @[glorv](https://github.com/glorv) + - 在 Region 的 Leader 迁移前增加缓存预热阶段,缓解 Leader 迁移时造成的 QPS 剧烈抖动 [#13060](https://github.com/tikv/tikv/issues/13060) @[cosven](https://github.com/cosven) + - 支持将 `json_contains` 算子下推至 Coprocessor [#13592](https://github.com/tikv/tikv/issues/13592) @[lizhenhuan](https://github.com/lizhenhuan) + - 新增 `CausalTsProvider` 的异步实现,提升某些场景下刷盘的性能 [#13428](https://github.com/tikv/tikv/issues/13428) @[zeminzhou](https://github.com/zeminzhou) + ++ PD + + - 热点均衡调度器 v2 版本算法成为正式功能,在特定场景下 v2 版本算法可以在配置的两个维度均取得更好的均衡效果,并减少无效调度 [#5021](https://github.com/tikv/pd/issues/5021) @[HundunDM](https://github.com/hundundm) + - 改进 Operator step 超时机制,防止过早超时 [#5596](https://github.com/tikv/pd/issues/5596) @[bufferflies](https://github.com/bufferflies) + - 优化调度器在大集群下的性能 [#5473](https://github.com/tikv/pd/issues/5473) @[bufferflies](https://github.com/bufferflies) + - 支持使用非 PD 提供的外部时间戳 [#5637](https://github.com/tikv/pd/issues/5637) @[lhy1024](https://github.com/lhy1024) + ++ TiFlash + + - 重构了 TiFlash MPP 的错误处理流程,进一步提升了 MPP 的稳定性 [#5095](https://github.com/pingcap/tiflash/issues/5095) @[windtalker](https://github.com/windtalker) + - 优化了 TiFlash 计算过程中的排序操作,以及对 Join 和 Aggregation 的 Key 的处理 [#5294](https://github.com/pingcap/tiflash/issues/5294) @[solotzg](https://github.com/solotzg) + - 优化了 TiFlash 编解码的内存使用,去除了冗余传输列以提升 Join 性能 [#6157](https://github.com/pingcap/tiflash/issues/6157) @[yibin87](https://github.com/yibin87) + ++ Tools + + + TiDB Dashboard + + - 支持在 Monitoring 页面展示 TiFlash 相关指标,并且优化了该页面指标的展示方式 [#1440](https://github.com/pingcap/tidb-dashboard/issues/1440) @[YiniXu9506](https://github.com/YiniXu9506) + - 支持在 Slow Queries 列表和 SQL Statements 列表展示结果行数 [#1443](https://github.com/pingcap/tidb-dashboard/issues/1443) @[baurine](https://github.com/baurine) + - 当集群没有 Alertmanager 时不显示报错信息 [#1444](https://github.com/pingcap/tidb-dashboard/issues/1444) @[baurine](https://github.com/baurine) + + + Backup & Restore (BR) + + - 改进加载元数据的机制,仅在需要时才将元数据加载到内存中,显著减少 PITR 过程中的内存压力 [#38404](https://github.com/pingcap/tidb/issues/38404) @[YuJuncen](https://github.com/YuJuncen) + + + TiCDC + + - 支持同步 Exchange Partition 的 DDL 语句 [#639](https://github.com/pingcap/tiflow/issues/639) @[asddongmen](https://github.com/asddongmen) + - 提升 MQ sink 模块非攒批发送的性能 [#7353](https://github.com/pingcap/tiflow/issues/7353) @[hi-rustin](https://github.com/hi-rustin) + - 提升单表大量 Region 场景下 TiCDC puller 的性能 [#7078](https://github.com/pingcap/tiflow/issues/7078) [#7281](https://github.com/pingcap/tiflow/issues/7281) @[sdojjy](https://github.com/sdojjy) + - 支持在 Syncpoint 功能开启时在下游 TiDB 集群使用 `tidb_enable_external_ts_read` 来读取历史数据 [#7419](https://github.com/pingcap/tiflow/issues/7419) @[asddongmen](https://github.com/asddongmen) + + + TiDB Data Migration (DM) + + - 移除 dmctl 中无用的 `operate-source update` 指令 [#7246](https://github.com/pingcap/tiflow/issues/7246) @[buchuitoudegou](https://github.com/buchuitoudegou) + - 解决了 TiDB 不兼容上游数据库的建表 SQL 导致 DM 全量迁移报错的问题,当上游的建表 SQL TiDB 不兼容时,用户可以提前在 TiDB 手动创建好目标表,让全量迁移任务继续运行 [#37984](https://github.com/pingcap/tidb/issues/37984) @[lance6716](https://github.com/lance6716) + + + TiDB Lightning + + - 优化文件扫描逻辑,提升 Schema 类型文件的扫描速度 [#38598](https://github.com/pingcap/tidb/issues/38598) @[dsdashun](https://github.com/dsdashun) + +## 错误修复 + ++ TiDB + + - 修复新建索引之后有可能导致数据索引不一致的问题 [#38165](https://github.com/pingcap/tidb/issues/38165) @[tangenta](https://github.com/tangenta) + - 修复 `INFORMATION_SCHEMA.TIKV_REGION_STATUS` 表的权限问题 [#38407](https://github.com/pingcap/tidb/issues/38407) @[CbcWestwolf](https://github.com/CbcWestwolf) + - 修复 `mysql.tables_priv` 表中 `grantor` 字段缺失的问题 [#38293](https://github.com/pingcap/tidb/issues/38293) @[CbcWestwolf](https://github.com/CbcWestwolf) + - 修复公共表表达式在 join 时可能得到错误结果的问题 [#38170](https://github.com/pingcap/tidb/issues/38170) @[wjhuang2016](https://github.com/wjhuang2016) + - 修复公共表表达式在 union 时可能得到错误结果的问题 [#37928](https://github.com/pingcap/tidb/issues/37928) @[YangKeao](https://github.com/YangKeao) + - 修复监控面板 **transaction region num** 信息不准确的问题 [#38139](https://github.com/pingcap/tidb/issues/38139) @[jackysp](https://github.com/jackysp) + - 修复 [`tidb_constraint_check_in_place_pessimistic`](/system-variables.md#tidb_constraint_check_in_place_pessimistic-从-v630-版本开始引入) 可能影响内部事务问题,修改该变量作用域为 SESSION [#38766](https://github.com/pingcap/tidb/issues/38766) @[ekexium](https://github.com/ekexium) + - 修复条件在某些场景下被错误下推至 projection 的问题 [#35623](https://github.com/pingcap/tidb/issues/35623) @[Reminiscent](https://github.com/Reminiscent) + - 修复 `AND` 和 `OR` 条件的 `isNullRejected` 检查错误导致查询结果错误的问题 [#38304]( https://github.com/pingcap/tidb/issues/38304) @[Yisaer](https://github.com/Yisaer) + - 修复外连接消除时没有考虑 `GROUP_CONCAT` 内部的 `ORDER BY` 导致查询出错的问题 [#18216](https://github.com/pingcap/tidb/issues/18216) @[winoros](https://github.com/winoros) + - 修复错误下推的条件被 Join Reorder 丢弃后导致查询结果错误的问题 [#38736](https://github.com/pingcap/tidb/issues/38736) @[winoros](https://github.com/winoros) + ++ TiKV + + - 修 Gitpod 环境中存在多个 `cgroup` 和 `mountinfo` 时 TiDB 启动异常的问题 [#13660](https://github.com/tikv/tikv/issues/13660) @[tabokie](https://github.com/tabokie) + - 修复 TiKV 监控 `tikv_gc_compaction_filtered` 表达式错误的问题 [#13537](https://github.com/tikv/tikv/issues/13537) @[Defined2014](https://github.com/Defined2014) + - 修复 `delete_files_in_range` 存在异常导致的性能问题 [#13534](https://github.com/tikv/tikv/issues/13534) @[tabokie](https://github.com/tabokie) + - 修复获取 Snapshot 时 Lease 过期引发的异常竞争问题 [#13553](https://github.com/tikv/tikv/issues/13553) @[SpadeA-Tang](https://github.com/SpadeA-Tang) + - 修复第一次 `FLASHBACK` 失败时存在异常的问题 [#13672](https://github.com/tikv/tikv/issues/13672) [#13704](https://github.com/tikv/tikv/issues/13704) [#13723](https://github.com/tikv/tikv/issues/13723) @[HuSharp](https://github.com/HuSharp) + ++ PD + + - 修复 Stream 超时问题,提高 Leader 切换的速度 [#5207](https://github.com/tikv/pd/issues/5207) @[CabinfeverB](https://github.com/CabinfeverB) + ++ TiFlash + + - 修复由于 PageStorage GC 未能正确清除 Page 删除标记导致 WAL 文件过大从而导致 TiFlash OOM 的问题 [#6163](https://github.com/pingcap/tiflash/issues/6163) @[JaySon-Huang](https://github.com/JaySon-Huang) + ++ Tools + + + TiDB Dashboard + + - 修复查询某些复杂 SQL 语句的执行计划时 TiDB OOM 的问题 [#1386](https://github.com/pingcap/tidb-dashboard/issues/1386) @[baurine](https://github.com/baurine) + - 修复 NgMonitoring 丢失对 PD 节点的连接时可能导致 Top SQL 开关无效的问题 [#164](https://github.com/pingcap/ng-monitoring/issues/164) @[zhongzc](https://github.com/zhongzc) + + + Backup & Restore (BR) + + - 修复恢复过程中由于 PD leader 切换导致恢复失败的问题 [#36910](https://github.com/pingcap/tidb/issues/36910) @[MoCuishle28](https://github.com/MoCuishle28) + - 修复了无法暂停日志备份任务的问题 [#38250](https://github.com/pingcap/tidb/issues/38250) @[joccau](https://github.com/joccau) + - 修复 BR 删除日志备份数据时,会删除不应被删除的数据的问题 [#38939](https://github.com/pingcap/tidb/issues/38939) @[Leavrth](https://github.com/leavrth) + - 修复 BR 首次删除存储在 Azure Blob Storage 或 Google Cloud Storage 的日志备份数据时执行失败的问题 [#38229](https://github.com/pingcap/tidb/issues/38229) @[Leavrth](https://github.com/leavrth) + + + TiCDC + + - 修复 `changefeed query` 的输出中 `sasl-password` 显示为明文的问题 [#7182](https://github.com/pingcap/tiflow/issues/7182) @[dveeden](https://github.com/dveeden) + - 修复在一个 etcd 事务中提交太多数据导致 TiCDC 服务不可用问题 [#7131](https://github.com/pingcap/tiflow/issues/7131) @[asddongmen](https://github.com/asddongmen) + - 修复 redo log 文件可能被错误删除的问题 [#6413](https://github.com/pingcap/tiflow/issues/6413) @[asddongmen](https://github.com/asddongmen) + - 修复 Kafka Sink V2 协议在同步宽表时性能回退的问题 [#7344](https://github.com/pingcap/tiflow/issues/7344) @[hi-rustin](https://github.com/hi-rustin) + - 修复 checkpoint ts 可能被提前推进的问题 [#7274](https://github.com/pingcap/tiflow/issues/7274) @[hi-rustin](https://github.com/hi-rustin) + - 修复 mounter 模块的日志级别设置不当导致 log 打印太多的问题 [#7235](https://github.com/pingcap/tiflow/issues/7235) @[hi-rustin](https://github.com/hi-rustin) + - 修复一个 TiCDC 集群可能存在两个 owner 的问题 [#4051](https://github.com/pingcap/tiflow/issues/4051) @[asddongmen](https://github.com/asddongmen) + + + TiDB Data Migration (DM) + + - 修复 DM WebUI 产生错误 `allow-list` 参数的问题 [#7096](https://github.com/pingcap/tiflow/issues/7096) @[zoubingwu](https://github.com/zoubingwu) + - 修复 DM-worker 在启动、停止时有一定概率触发 data race 的问题 [#6401](https://github.com/pingcap/tiflow/issues/6401) @[liumengya94](https://github.com/liumengya94) + - 修复当同步 `UPDATE`、`DELETE` 语句且下游行数据不存在时,DM 静默忽略的问题 [#6383](https://github.com/pingcap/tiflow/issues/6383) @[GMHDBJD](https://github.com/GMHDBJD) + - 修复运行 `query-status` 命令后未显示 `secondsBehindMaster` 字段的问题 [#7189](https://github.com/pingcap/tiflow/issues/7189) @[GMHDBJD](https://github.com/GMHDBJD) + - 修复更新 Checkpoint 时可能触发大事务的问题 [#5010](https://github.com/pingcap/tiflow/issues/5010) @[lance6716](https://github.com/lance6716) + - 修复在全量任务模式下,任务进入 sync 阶段且立刻失败时,DM 可能丢失上游表结构信息的问题 [#7159](https://github.com/pingcap/tiflow/issues/7159) @[lance6716](https://github.com/lance6716) + - 修复开启一致性校验时可能触发死锁的问题 [#7241](https://github.com/pingcap/tiflow/issues/7241) @[buchuitoudegou](https://github.com/buchuitoudegou) + - 修复任务预检查对 `INFORMATION_SCHEMA` 表需要 `SELECT` 权限的问题 [#7317](https://github.com/pingcap/tiflow/issues/7317) @[lance6716](https://github.com/lance6716) + - 修复空的 TLS 配置导致报错的问题 [#7384](https://github.com/pingcap/tiflow/issues/7384) @[liumengya94](https://github.com/liumengya94) + + + TiDB Lightning + + - 修复当导入 Apache Parquet 格式的数据时,如果目标表存在 binary 编码格式的字符串类型列,导入性能下降的问题 [#38351](https://github.com/pingcap/tidb/issues/38351) @[dsdashun](https://github.com/dsdashun) + + + TiDB Dumpling + + - 修复导出大量表时可能导致超时的问题 [#36549](https://github.com/pingcap/tidb/issues/36549) @[lance6716](https://github.com/lance6716) + - 修复加锁模式下,上游不存在对应表时导致加锁报错的问题 [#38683](https://github.com/pingcap/tidb/issues/38683) @[lance6716](https://github.com/lance6716) + +## 贡献者 + +感谢来自 TiDB 社区的贡献者们: + +- [645775992](https://github.com/645775992) +- [An-DJ](https://github.com/An-DJ) +- [AndrewDi](https://github.com/AndrewDi) +- [erwadba](https://github.com/erwadba) +- [fuzhe1989](https://github.com/fuzhe1989) +- [goldwind-ting](https://github.com/goldwind-ting)(首次贡献者) +- [h3n4l](https://github.com/h3n4l) +- [igxlin](https://github.com/igxlin)(首次贡献者) +- [ihcsim](https://github.com/ihcsim) +- [JigaoLuo](https://github.com/JigaoLuo) +- [morgo](https://github.com/morgo) +- [Ranxy](https://github.com/Ranxy) +- [shenqidebaozi](https://github.com/shenqidebaozi)(首次贡献者) +- [taofengliu](https://github.com/taofengliu)(首次贡献者) +- [TszKitLo40](https://github.com/TszKitLo40) +- [wxbty](https://github.com/wxbty)(首次贡献者) +- [zgcbj](https://github.com/zgcbj)