TiDB 7.x 源码编译之 TiDB Server 篇,及新特性解析

2023年 10月 18日 70.7k 0

TL;DR

本文将延续本系列文章,介绍如何编译 TiDB Server 源码。以及,阐释 TiDB Server 7.x 的部分新特性。

News !!!
TiDB v7.5.0 LTS 计划于 2023-11-23 正式 Release[1],目前代码虽未冻结,但已经可以看到 alpha 版本的 code 了,本文代码将以 v7.5.0-alpha 为基准。

前情提要

本文是该系列文章的第 5 篇,前四篇文章分别是:

  • TiDB 7.x 源码编译之 PD/TiDB Dashboard 篇
  • TiDB 7.x 源码编译之 TiUP 篇,及新特性解析
  • TiDB 7.x 源码编译之 TiFlash 篇
  • TiDB 7.x 源码编译之 TiProxy 篇,及尝鲜体验

编译环境

与前几篇文章有所区别的是,本文使用 CentOS 7.9 和 Rocky Linux 9.2 两个版本的操作系统,分别进行编译测试。
不过,官档[2]中并未明确支持 Rocky Linux 系统,所以如需在生产环境使用需慎重考虑。

查看版本信息:

cat /etc/redhat-release
uname -a

输出日志:

  • CentOS 7

[shawnyan@centos7 ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[shawnyan@centos7 ~]$ uname -a
Linux centos7.shawnyan.cn 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

在 TiDB v7.5.0-alpha 的代码中,Go 版本升级到 1.21.1 (released 2023-08-08)[3][4]。本文所使用的 Go 版本为 1.21.3 (released 2023-10-10)[5]。

go install golang.org/dl/go1.21.3@latest
go1.21.3 download
go1.21.3 version

go version go1.21.3 linux/amd64

Update: 2023-10-17

TiDB 源码仓库新建了 release-7.5 分支,并且 Go 版本升级到了 1.21.3。[6]

编译步骤

克隆下载源码到本地,这里指定 v7.5.0-alpha 分支。

$ git clone https://gitee.com/mirrors/tidb.git --depth=1 -b v7.5.0-alpha tidb7
$ cd tidb7
$ git lg
* 8cfe7f3 - (grafted, HEAD -> v7.5.0-alpha, tag: v7.5.0-alpha) executor, tests: move some test cases from `admin_test.go` and `foreign_key_test.go` to `integrationtest` (#47333) (12 days ago)

编译 TiDB Server 仅需一条命令搞定。

make

输出日志:

[shawnyan@centos7 tidb7]$ time make
CGO_ENABLED=1 GO111MODULE=on go build -tags codes -ldflags '-X "github.com/pingcap/tidb/parser/mysql.TiDBReleaseVersion=v7.5.0-alpha" -X "github.com/pingcap/tidb/util/versioninfo.TiDBBuildTS=2023-10-11 06:08:32" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitHash=8cfe7f329b56899a96422596da2b67d4e2bd1e94" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitBranch=HEAD" -X "github.com/pingcap/tidb/util/versioninfo.TiDBEdition=Community" ' -o bin/tidb-server ./tidb-server
Build TiDB Server successfully!

查看二进制文件的版本:

[shawnyan@centos7 bin]$ ./tidb-server -V
Release Version: v7.5.0-alpha
Edition: Community
Git Commit Hash: 8cfe7f329b56899a96422596da2b67d4e2bd1e94
Git Branch: HEAD
UTC Build Time: 2023-10-11 06:08:32
GoVersion: go1.21.3
Race Enabled: false
Check Table Before Drop: false
Store: unistore

Update: 2023-10-16

TiDB 代码结构发生了大调整,TiDB Server 核心文件移动到了新目录 pkg [7],这一变更影响到近 4500 个文件。随之而来的好处是,TiDB 源码根目录更加清晰。

[shawnyan@centos7 tidb7]$ tree . -L 1
.
├── br --> BR
├── build
...
├── cmd
...
├── docs
├── dumpling --> Dumpling
...
├── pkg --> TiDB core
...
├── tests
├── tools
...

10 directories, 24 files

启动 TiDB Server

TiDB Server 其实可以不依赖于 TiKV 而单独启动,这里选择单机存储引擎 UniStore 并启动 TiDB Server,启动命令如下。

./tidb-server -store unistore

启动后,连接 TiDB,并查看版本信息。

mysql> select tidb_version()G
*************************** 1. row ***************************
tidb_version(): Release Version: v7.5.0-alpha
Edition: Community
Git Commit Hash: 8cfe7f329b56899a96422596da2b67d4e2bd1e94
Git Branch: HEAD
UTC Build Time: 2023-10-11 06:08:32
GoVersion: go1.21.3
Race Enabled: false
Check Table Before Drop: false
Store: unistore
1 row in set (0.00 sec)

需要注意的是,TiDB Server 的参数分为命令行参数(直接启动 Server 时传递的参数)[8],配置文件参数(比命令行参数更丰富)[9],以及系统变量(连接 TiDB 后可修改)[10],所以在查看官方文档的时候,这三类参数的页面都可能用到,概念上的变量和参数非常容易混淆,如果接触 TiDB 时间不长,需要多加区分、辨别。

BTW, 关于这部分的内容,欢迎学习、复习 PingCAP 相关课程:
TiDB 系统管理基础 [TiDB v5.x] (301) ,第十课: TiDB 的配置

到此,我们可以看到 TiDB Server 已经编译成功,并成功启动运行,TiDB Server 的版本为 v7.5.0-alpha

TiDB Server v7.x 新特性

依据现行 TiDB 发版规则,TiDB 7.5.0 LTS 版本将包含 7.2.0-DMR (Released: 2023-06-29),7.3.0-DMR (Released: 2023-08-14) 和 7.4.0-DMR (Released: 2023-10-12) 中已发布的新特性。下面的篇幅将介绍若干 TiDB 7.x 的新特性。

TiDB 相关 SQL 再扩展

之前的文章 《 TiDB 7.1.0 LTS 特性解读 | 资源管控 (Resource Control) 应该知道的 6 件事 》 中,增加了“资源管控”相关 SQL,这里再次进行扩展,也是本文的第一个彩蛋。

TiDB 7.2.0,对 DDL 任务进行暂停和恢复

TiDB 7.2 引入了新的实验特性,DDL 任务支持暂停(PAUSE)[11]和恢复(RESUME)操作,比如对正在创建索引的任务进行暂停和恢复。相关命令如下:

ADMIN PAUSE DDL JOBS job_id [, job_id]
ADMIN RESUME DDL JOBS job_id [, job_id]

TiDB 7.4.0,新增支持 TIDB_PARSE_TSO_LOGICAL() 语法

对于 TSO,如果想查看逻辑计数器,之前的版本需要通过 pd 命令进行解析,从 7.4 开始支持直接从 TiDB 进行查询。

TSO 指 Time Stamp Oracle,是 PD (Placement Driver) 为每个事务提供的单调递增的时间戳。TSO 是一串数字,包含以下两部分:一个物理时间戳; 一个逻辑计数器[12]

示例:获取物理时间戳和逻辑计数器的值。

mysql> select @@tidb_current_ts;
+--------------------+
| @@tidb_current_ts |
+--------------------+
| 444995429049565185 |
+--------------------+
1 row in set (0.00 sec)

mysql> SELECT TIDB_PARSE_TSO(@@tidb_current_ts);
+-----------------------------------+
| TIDB_PARSE_TSO(@@tidb_current_ts) |
+-----------------------------------+
| 2023-10-17 15:07:26.411000 |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> SELECT TIDB_PARSE_TSO_LOGICAL(@@tidb_current_ts);
+-------------------------------------------+
| TIDB_PARSE_TSO_LOGICAL(@@tidb_current_ts) |
+-------------------------------------------+
| 1 |
+-------------------------------------------+
1 row in set (0.00 sec)

与 pd 命令解析的结果一致。

mysql> ! tiup ctl:v7.4.0 pd tso 444995429049565185
The component `ctl` version v7.4.0 is not installed; downloading from repository.
Starting component `ctl`: /home/shawnyan/.tiup/components/ctl/v7.4.0/ctl pd tso 444995429049565185
system: 2023-10-17 15:07:26.411 +0800 CST
logic: 1
mysql>

TiDB 7.4.0,新增支持分区类型管理功能

TiDB 7.4 的分区表管理功能更加完备,期待已久的普通表转分区表功能终于上线。[13]

-- 将非分区表转为分区表、修改分区表的分区类型
ALTER TABLE PARTITION BY

-- 将分区表转为非分区表
ALTER TABLE REMOVE PARTITIONING

举个栗子,将既存表按年龄划定分区,分区类型使用 RANGE,然后将分区类型变更为 LIST,最后移除分区。

tidb> show create table t_ageG
*************************** 1. row ***************************
Table: t_age
Create Table: CREATE TABLE `t_age` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

-- 转为分区表
tidb> alter table t_age partition by range (a) (PARTITION p0 VALUES LESS THAN (18), PARTITION p1 VALUES LESS THAN (35), PARTITION p2 VALUES LESS THAN (MAXVALUE));
Query OK, 0 rows affected, 1 warning (0.11 sec)

tidb> show create table t_ageG
*************************** 1. row ***************************
Table: t_age
Create Table: CREATE TABLE `t_age` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
PARTITION BY RANGE (`a`)
(PARTITION `p0` VALUES LESS THAN (18),
PARTITION `p1` VALUES LESS THAN (35),
PARTITION `p2` VALUES LESS THAN (MAXVALUE))
1 row in set (0.00 sec)

-- 分区定义从 RANGE 变更为 LIST
tidb> alter table t_age partition by list (a) (PARTITION p0 VALUES IN (18), PARTITION p1 VALUES IN (35), PARTITION p2 VALUES IN (65));
Query OK, 0 rows affected, 1 warning (0.12 sec)

tidb> show create table t_ageG
*************************** 1. row ***************************
Table: t_age
Create Table: CREATE TABLE `t_age` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
PARTITION BY LIST (`a`)
(PARTITION `p0` VALUES IN (18),
PARTITION `p1` VALUES IN (35),
PARTITION `p2` VALUES IN (65))
1 row in set (0.00 sec)

-- 移除分区
tidb> alter table t_age remove partitioning;
Query OK, 0 rows affected (0.10 sec)

tidb> show create table t_ageG
*************************** 1. row ***************************
Table: t_age
Create Table: CREATE TABLE `t_age` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

!!! Tips 提示:

在分区表定义更新后,建议手动更新统计信息(有些环境可能已经关闭自动更新[14])。

MySQL 8.0 兼容性

在 PingCAP 公众号最近发布的通告中,TiDB 7.4 发版:正式兼容 MySQL 8.0 ,详细地介绍了 TiDB 7.4 DMR 在 MySQL 8.0 兼容性方面取得的最新进展。
通告中已经列举了若干新特性,本文将做进一步补充。同时,在 TiDB 7.4 DMR 的发版说明中有些小改动并未列出,下面也将进行列举说明,以供参考。

TiDB 7.2.0,新增支持 CHECK 约束

从 MySQL 8.0.16 开始,MySQL 实现了 CHECK 约束核心特性,并增加了新的信息表 INFORMATION_SCHEMA.CHECK_CONSTRAINTS 用来展示 CHECK 约束定义。[15]

从 TiDB 7.2.0 开始,TiDB 新增支持 CHECK 约束,需要注意的是,该功能默认关闭,可以通过变量 tidb_enable_check_constraint 进行控制。相关 SQL 控制命令如下:

-- 启用 CHECK 约束功能
SET GLOBAL tidb_enable_check_constraint=ON;

-- 添加约束
ALTER TABLE t ADD CONSTRAINT CHECK (1 < a);
ALTER TABLE t ADD CONSTRAINT CHECK (1 < a) NOT ENFORCED;

-- 删除约束
ALTER TABLE t DROP CONSTRAINT t_chk_1;

-- 启用约束
ALTER TABLE t ALTER CONSTRAINT t_chk_1 ENFORCED;

-- 禁用约束
ALTER TABLE t ALTER CONSTRAINT t_chk_1 NOT ENFORCED;

Ps. 在测试该特性时遇到了两个问题,分别提了 Issue,期待在 TiDB 7.5.0 LTS 代码冻结之前修复。

  • CHECK CONSTRAINT loss when ENFORCED again #47567
  • Support TABLE_NAME in CHECK_CONSTRAINTS #47565

TiDB 7.2.0,支持指定 utf8mb3 字符集;TiDB 7.4.0,支持指定 utf8mb4_0900_ai_ci/utf8mb4_0900_bin 排序规则

在之前的文章中,TiDB 6.x 新特性解读 | Collation 规则 ,介绍过 TiDB 的字符集和排序规则,经过若干版本的迭代,TiDB 在全面兼容 MySQL 8.0 的征途上又更进一步。

从 TiDB 7.2.0 开始,支持 utf8mb3 字符集,其作为 utf8 的别名。示例如下:

tidb> create table t_utf8 (a int) charset=utf8;
Query OK, 0 rows affected (0.02 sec)

tidb> create table t_utf8mb3 (a int) charset=utf8mb3;
Query OK, 0 rows affected (0.04 sec)

tidb> show create table t_utf8G
*************************** 1. row ***************************
Table: t_utf8
Create Table: CREATE TABLE `t_utf8` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)

tidb> show create table t_utf8mb3G
*************************** 1. row ***************************
Table: t_utf8mb3
Create Table: CREATE TABLE `t_utf8mb3` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)

从 TiDB 7.4.0 开始,支持指定 utf8mb4_0900_ai_ci/utf8mb4_0900_bin 排序规则,在 7.4.0 的发版说明中有这样一段描述[16]:

TiDB v7.4.0 增强了从 MySQL 8.0 迁移数据的支持。新增两个排序规则 (Collation) utf8mb4_0900_ai_ciutf8mb4_0900_bin。其中 utf8mb4_0900_ai_ci 为 MySQL 8.0 的默认排序规则。
同时新增支持 MySQL 8.0 兼容的系统变量 default_collation_for_utf8mb4,允许用户为 utf8mb4 字符集指定默认的排序方式,以兼容从 MySQL 5.7 或之前版本迁移或数据复制的场景。

这里需要注意的是,在 TiDB 中,utf8mb4 字符集的默认排序规则仍然是 utf8mb4_bin

mysql> select @@default_collation_for_utf8mb4;
+---------------------------------+
| @@default_collation_for_utf8mb4 |
+---------------------------------+
| utf8mb4_bin |
+---------------------------------+
1 row in set (0.00 sec)

做个对照实验,更加直观地展示区别:

TiDB 7.4.0,version() 返回信息变更

自 v7.4.0 起,TiDB 已经兼容 MySQL 8.0 的核心功能,version() 将返回以 8.0.11 为前缀的版本信息。[17][18]

示例:

tidb> select version();
+--------------------------+
| version() |
+--------------------------+
| 8.0.11-TiDB-v7.5.0-alpha |
+--------------------------+
1 row in set (0.00 sec)

当然,如果为了合理规划漏扫,也可以自定义将 8.0.11 改为更新的版本,比如 8.0.35,修改方法参照 官方文档 。

关于 TiDB 兼容 MySQL 8.0 的更多讨论,欢迎访问 AskTUG 论坛:
【唠嗑茶话会 88】关于 TiDB 兼容 MySQL 8.0 ,你最想支持的特性/功能是什么?

TiDB 7.4.0,新增支持使用 Hint SER_VAR() 修改系统变量

TiDB v7.4.0 新增支持与 MySQL 8.0 相似的优化器提示 SET_VAR()。通过在 SQL 语句中添加 Hint SET_VAR(),可以在语句运行过程中临时修改部分系统变量,以针对不同语句设置环境。[19]

举个栗子,在之前的版本中,如果想控制当前 Session 只从 TiFlash 读取数据,需要用到下面的语句:

set session tidb_isolation_read_engines = "tiflash";
select count(*) from t;

或者:

select /*+ read_from_storage(tiflash[t]) */ count(*) from t;

而从 TiDB 7.4.0 开始,可以使用 SET_VAR() 语法进行控制,更加灵活、便利:

select /*+ set_var(tidb_isolation_read_engines=tiflash) */ count(*) from t;

从 TiDB 7.4 开始,官方文档的系统变量部分增加一个说明项“是否受 Hint SET_VAR 控制”[20],当前版本中,受该 Hint SET_VAR 控制的系统变量共有 91 个:

  • cte_max_recursion_depth
  • max_execution_time
  • mpp_exchange_compression_mode
  • mpp_version
  • sql_mode
  • tidb_allow_batch_cop
  • tidb_allow_fallback_to_tikv
  • tidb_allow_mpp
  • tidb_broadcast_join_threshold_count
  • tidb_broadcast_join_threshold_size
  • tidb_cost_model_version
  • tidb_default_string_match_selectivity
  • tidb_distsql_scan_concurrency
  • tidb_enable_cascades_planner
  • tidb_enable_extended_stats
  • tidb_enable_index_merge
  • tidb_enable_index_merge_join
  • tidb_enable_inl_join_inner_multi_pattern
  • tidb_enable_new_only_full_group_by_check
  • tidb_enable_non_prepared_plan_cache
  • tidb_enable_null_aware_anti_join
  • tidb_enable_ordered_result_mode
  • tidb_enable_outer_join_reorder
  • tidb_enable_paging
  • tidb_enable_prepared_plan_cache
  • tidb_enable_pseudo_for_outdated_stats
  • tidb_enable_vectorized_expression
  • tidb_enforce_mpp
  • tidb_executor_concurrency
  • tidb_index_join_batch_size
  • tidb_index_join_double_read_penalty_cost_rate
  • tidb_index_lookup_size
  • tidb_index_merge_intersection_concurrency
  • tidb_index_serial_scan_concurrency
  • tidb_isolation_read_engines
  • tidb_max_bytes_before_tiflash_external_group_by
  • tidb_max_bytes_before_tiflash_external_join
  • tidb_max_bytes_before_tiflash_external_sort
  • tidb_max_paging_size
  • tidb_merge_join_concurrency
  • tidb_min_paging_size
  • tidb_opt_advanced_join_hint
  • tidb_opt_agg_push_down
  • tidb_opt_broadcast_cartesian_join
  • tidb_opt_concurrency_factor
  • tidb_opt_copcpu_factor
  • tidb_opt_correlation_exp_factor
  • tidb_opt_correlation_threshold
  • tidb_opt_cpu_factor
  • tidb_opt_derive_topn
  • tidb_opt_desc_factor
  • tidb_opt_disk_factor
  • tidb_opt_distinct_agg_push_down
  • tidb_opt_enable_correlation_adjustment
  • tidb_opt_enable_late_materialization
  • tidb_opt_enable_mpp_shared_cte_execution
  • tidb_opt_fix_control
  • tidb_opt_force_inline_cte
  • tidb_optimizer_selectivity_level
  • tidb_opt_insubq_to_join_and_agg
  • tidb_opt_join_reorder_threshold
  • tidb_opt_limit_push_down_threshold
  • tidb_opt_memory_factor
  • tidb_opt_mpp_outer_join_fixed_build_side
  • tidb_opt_network_factor
  • tidb_opt_objective
  • tidb_opt_ordering_index_selectivity_threshold
  • tidb_opt_prefer_range_scan
  • tidb_opt_prefix_index_single_scan
  • tidb_opt_projection_push_down
  • tidb_opt_range_max_size
  • tidb_opt_scan_factor
  • tidb_opt_seek_factor
  • tidb_opt_skew_distinct_agg
  • tidb_opt_three_stage_distinct_agg
  • tidb_opt_tiflash_concurrency_factor
  • tidb_opt_write_row_id
  • tidb_partition_prune_mode
  • tidb_plan_cache_max_plan_size
  • tidb_prefer_broadcast_join_by_exchange_data_size
  • tidb_read_consistency
  • tidb_read_staleness
  • tidb_replica_read
  • tidb_runtime_filter_mode
  • tidb_runtime_filter_type
  • tidb_session_alias
  • tidb_stats_load_sync_wait
  • tidb_store_batch_size
  • tiflash_fastscan
  • tiflash_find_grained_shuffle_stream_count
  • tiflash_fine_grained_shuffle_batch_size

Ps. 在研究这一特性时,发现了一个源码和若干中英文文档问题中的小问题,这是第一次给 pingcap/tidbpingcap/docs 提 pr,特此“马克”一下。

  • [Open] sessionctx: fix var typo #47609
  • [Open] system-variables: update docs for hint SET_VAR #15059
  • [Open] system-variables: update docs for hint SET_VAR #15207

TiDB 7.4, 新增会话连接属性表 session_account_connect_attrs

在 MySQL 早期版本中,支持从 P_S.session_account_connect_attrs 查看会话的连接属性。[21]

在 TiDB 7.4 中,也已经实现。举例如下:

tidb> select * from performance_schema.session_account_connect_attrs;
+----------------+-----------------+-------------+------------------+
| PROCESSLIST_ID | ATTR_NAME | ATTR_VALUE | ORDINAL_POSITION |
+----------------+-----------------+-------------+------------------+
| 2097154 | _client_name | libmysql | 0 |
| 2097154 | _client_version | 8.0.33 | 1 |
| 2097154 | _os | Linux | 2 |
| 2097154 | _pid | 103036 | 3 |
| 2097154 | _platform | x86_64 | 4 |
| 2097154 | os_user | shawnyan | 5 |
| 2097154 | program_name | mysql | 6 |
+----------------+-----------------+-------------+------------------+
7 rows in set (0.00 sec)

如果通过第三方工具连接,比如 HeidiSQL,则显示为:

tidb> select * from performance_schema.session_account_connect_attrs where PROCESSLIST_ID = '2097170';
+----------------+-----------------+------------+------------------+
| PROCESSLIST_ID | ATTR_NAME | ATTR_VALUE | ORDINAL_POSITION |
+----------------+-----------------+------------+------------------+
| 2097170 | _client_name | libmariadb | 0 |
| 2097170 | _client_version | 3.2.5 | 1 |
| 2097170 | _os | Windows | 2 |
| 2097170 | _pid | 3828 | 3 |
| 2097170 | _platform | AMD64 | 4 |
| 2097170 | _server_host | 127.0.0.1 | 5 |
| 2097170 | _thread | 18236 | 6 |
| 2097170 | program_name | HeidiSQL | 7 |
+----------------+-----------------+------------+------------------+
8 rows in set (0.00 sec)

TiDB 7.4, 新增支持数据类型 FLOAT4, FLOAT8MIDDLEINT

从 TiDB 7.4 开始,新增数据类型 FLOAT4, FLOAT8MIDDLEINT,以增强 MySQL 兼容性。其中 FLOAT4 实现为 FLOAT 的别名,FLOAT8 实现为 DOUBLE 的别名,MIDDLEINT 实现为 MEDIUMINT 的别名。

示例:

create table t_type (c1 float4, c2 float8, c3 middleint, c4 int3);

tidb> show create table t_typeG
*************************** 1. row ***************************
Table: t_type
Create Table: CREATE TABLE `t_type` (
`c1` float DEFAULT NULL,
`c2` double DEFAULT NULL,
`c3` mediumint(9) DEFAULT NULL,
`c4` mediumint(9) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

到此,MySQL 8.1 官方文档[22]中罗列的 16 个来自其他数据库的数据类型,TiDB 7.4 已全部支持。

Ps. 最新版的文档中有一处兼容性描述未更新,已反馈,待更新。

  • 文档更新 float4/float8

总结

2023 年已过去 79.5%,TiDB 7.x 系列即将迎来 7.5 LTS 版本。TiDB 在 MySQL 5.7 EOL 之际正式兼容 MySQL 8.0,为用户从 MySQL 5.7 迁移到 TiDB 减轻了工作量,并提供了更多助力。

最后,推荐一篇文章:

中文版:是时候了!MySQL 5.7 的下一站,不如试试 TiDB?
英文版:MySQL 5.7 EOL: Migrating to a MySQL Alternative
日文版:MySQL 5.7サポート終了:MySQL代替データベースへの移行

彩蛋

TiDB Release Timeline 2023 版

End.

ShawnYan
2023-10-17

  1. https://github.com/pingcap/tidb/issues/47332 ↩︎

  2. https://docs.pingcap.com/zh/tidb/dev/hardware-and-software-requirements ↩︎

  3. https://github.com/pingcap/tidb/pull/45923 ↩︎

  4. https://github.com/pingcap/tidb/pull/46764 ↩︎

  5. https://groups.google.com/g/golang-announce/c/iNNxDTCjZvo ↩︎

  6. https://github.com/pingcap/tidb/pull/47440 ↩︎

  7. https://github.com/pingcap/tidb/pull/47123 ↩︎

  8. https://docs.pingcap.com/zh/tidb/stable/command-line-flags-for-tidb-configuration ↩︎

  9. https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file ↩︎

  10. https://docs.pingcap.com/zh/tidb/stable/system-variables ↩︎

  11. https://docs.pingcap.com/zh/tidb/dev/sql-statement-admin-pause-ddl ↩︎

  12. https://docs.pingcap.com/zh/tidb/stable/tidb-functions#tidb_parse_tso ↩︎

  13. https://docs.pingcap.com/zh/tidb/v7.4/partitioned-table#对现有表进行分区 ↩︎

  14. https://docs.pingcap.com/zh/tidb/stable/statistics#自动更新 ↩︎

  15. https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-16.html ↩︎

  16. https://docs.pingcap.com/zh/tidb/v7.4/release-7.4.0#数据库管理 ↩︎

  17. https://docs.pingcap.com/zh/tidb/v7.4/release-7.4.0#行为变更 ↩︎

  18. https://github.com/pingcap/tidb/pull/46155 ↩︎

  19. https://docs.pingcap.com/zh/tidb/v7.4/release-7.4.0#稳定性 ↩︎

  20. https://docs.pingcap.com/zh/tidb/v7.4/system-variables ↩︎

  21. https://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html ↩︎

  22. https://dev.mysql.com/doc/refman/8.1/en/other-vendor-data-types.html ↩︎

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论