星辰考古:TiDB v4.0 进化前夜

alt

@

  • 前情回顾
  • TiDB v4 时间线
  • TiDB v4 新特性
    • TiDB
    • TiKV
    • PD
    • TiFlash
    • TiCDC
  • TiDB v4 兼容性变化
    • TiDB
    • TiKV
    • PD
    • 其他
  • TiDB 社区互助升级活动
  • TiDB 3.0.20 升级到 4.0.16
    • 注意事项
    • 升级速览
    • 直观变化
  • 总结
  • 素材来源
  • 🌻 往期精彩 ▼

前情回顾

在前面的章节中,我们共同梳理了 TiDB v1/v2/v3 的相关内容。

  • 星辰考古:TiDB v1.0 再回首
  • 星辰考古:TiDB v2.x 回忆杀
  • 星辰考古:TiDB v3.x 忆水木

本节将继续讨论 TiDB v4.0 大版本,在该版本中 TiDB 集群架构没有太大变化,不过 TiFlash 重要程度进一步提升,下图为 TiDB HTAP 形态架构,其中包含 TiFlash 节点。

alt

TiDB v4 时间线

TiDB v3.x 的时间线是 2019.1--2020.12,TiDB v4.x 的时间线来到了 2020.1--2021.12

  • 2020-01-17,TiDB 4.0.0-beta 发布。
  • 2020-05-28, TiDB 4.0 GA。TiDB v4.0 在稳定性、易用性、性能、安全和功能方面进行了大量的改进。
  • 2020-12-21,TiDB 4.0.9 发布。
  • 2021-01-15,TiDB 4.0.10 发布。
  • 2021-12-17, TiDB 4.0.16 发布,这是 TiDB v4 系列的最后一个小版本。

20 年共发布 16 个小版本,21 年共发布 7 个小版本。

alt (TiDB v4.0 与 v3.0 的 TPC-C 性能测试对比图)

alt (TiDB v4.0 与 v3.0 的 TPC-H 性能测试对比图)

TiDB v4 新特性

TiDB v4 引入 70 余项重要新特性,以下是几项关键功能:

热点调度支持更多维度。热点调度在决策时,除了根据写入/读取流量作为调度依据外,新引入 key 的维度。可以很大程度改善原有单一维度决策造成的 CPU 资源利用率不均衡的问题。

TiFlash 是 TiDB 为完善 Realtime HTAP 形态引入的关键组件,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。

注: TiFlash 是 TiDB 生态中的核心组件,从 TiDB 3.1 引入,于 22.04.01 正式开源,随 4.0 正式 GA。

TiDB Dashboard:DBA 通过 TiDB Dashboard UI 可以快速了解集群的集群拓扑、配置信息、日志信息、硬件信息、操作系统信息、慢查询信息、SQL 访问信息、诊断报告信息等,帮助 DBA 通过 SQL 快速了解、分析系统的各项指标。

alt (TiDB 热力图,来源:https://asktug.com/t/topic/813071)

TiUP 是 4.0 版本中新推出的包管理器的工具,主要用于管理 TiDB 生态内的所有的包,提供组件管理、本地部署、集群管理、镜像管理、离线部署、性能测试等功能,将安装、部署、运维 TiDB 工具化,提升 DBA 部署、运维 TiDB 的效率。

悲观事务正式 GA 并作为默认事务模式提供,支持 Read Committed 隔离级别以及 SELECT FOR UPDATE NOWAIT 语法。

支持大事务,最大事务限制由 100 MB 提升到了 10 GB,同时支持乐观事务和悲观事务。

TiCDC 从 v4.0.6 起成为正式功能,可用于生产环境。TiCDC 是一款通过拉取 TiKV 变更日志实现的 TiDB 增量数据同步工具,具有将数据还原到与上游任意 TSO 一致状态的能力,同时提供开放数据协议 (TiCDC Open Protocol),支持其他系统订阅数据变更。

alt (TiCDC 架构图)

alt (TiCDC 集群及节点内部组件的设计图)

下面按 TiDB, TiKV, PD, TiFlash, TiCDC 组件分别摘录了部分重要新特性,以供参考。

TiDB

  • 新增 SQL Binding 的自动捕获和自动演进功能 #13199 #12434
  • information_schema.tables 表新增 TIDB_ROW_ID_SHARDING_INFO 列,输出列的 RowID 打散相关的信息(例如:表 A 指定 SHARD_ROW_ID_BITS,该列的值为 "SHARD_BITS={bit_number}") #13418
  • 支持在 CREATE TABLE 语句中指定 auto_random 选项 #16813
  • AUTO RANDOM 被移出实验特性并正式 GA (TiDB 4.0.3)
  • 支持将列属性 AUTO_INCREMENT 变更为 AUTO_RANDOM #24608
  • 新增 DDLJobs 系统表,用于查询 DDL 任务详细信息 #14837
  • 新增 Sequence 功能 #14731 #14589 #14674 #14442
  • 新增大小写不敏感的排序规则,用户可在新集群上启用 utf8mb4_general_ci 和 utf8_general_ci #33
  • 支持 uft8_unicode_ci 和 utf8mb4_unicode_ci 排序规则 #22558
  • 增强 RECOVER TABLE 语法,现在该语法支持恢复被 Truncate 的表 #15398
  • 新增 Flashback 命令,支持恢复被 Truncate 的表。
  • 新增 SQL 语法 BACKUP/RESTORE 来进行数据备份恢复 #15274 #16960
  • 支持 show table partition regions 语法 #17294
  • 支持新增分区时自动分裂 Region 的功能 #17665
  • 新增动态修改、更新配置项的功能,配置项由 PD 持久化存储 #14750 #14303 #14830
  • 支持使用 SHOW CONFIG 语法显示 PD 和 TiKV 的配置 #16475
  • 支持 SET CONFIG 语句进行 PD/TiKV 节点配置修改 #16853
  • 新增系统自动根据负载均衡策略从不同角色上读取数据的功能,且新增 leader-and-follower 系统变量用于控制开启此功能 #14761
  • 默认打开 Coprocessor cache #16710
  • 默认打开 tidb_allow_batch_cop #18552
  • 默认打开执行信息的收集 #18518
  • 支持会话和全局变量 sql_select_limit #17604
  • 添加 txn-entry-size-limit 配置项,用于限制事务中单个 key-value 记录的大小 #21843
  • 在 v4.0 中将 tidb_multi_statement_mode 的默认值从 WARN 更改为 OFF。建议使用客户端库的多语句功能。#25749
  • 支持在 INSERT 语句中使用 MEMORY_QUOTA() hint #18101
  • 支持在广播 Join 中使用外连接 #19664
  • 对于自动提交语句的重试转换到悲观锁模式 #19796
  • 使用标准错误替换 TiDB 中的错误码和错误信息 #19888
  • 支持接受来自 MySQL 8.0 客户端的连接 #19959
  • Grafana 面板支持多集群 #22534
  • Grafana 升级到 v7.5.11 以解决安全漏洞

TiKV

  • 升级 RocksDB 的版本到 6.4.6
  • 新增从 Follower 副本读取数据的功能
  • 支持将动态修改配置的结果持久化存储到硬盘 #6684
  • 支持基于负载的 Region split #7623
  • 为错误定义错误码 #8387
  • 支持日志输出为 JSON 格式 #8382

注: TiDB 3.0.20 中内置 RocksDB v5.18.3,升级到 TiDB 4.0.16 后, RocksDB 版本升级到 v6.4.6。 在作者的印象中,PingCAP 从不避讳使用了开源组件,如 RocksDB, etcd, ClickHouse 等。 TiDB 源于开源,拥抱开源,贡献开源,海纳百川,与世界开发者协同科技创新。 本文只讨论 TiDB 相关技术内容,就不提套壳、马甲、超过 100% 兼容之类的事情了。

PD

  • 新增根据存储节点负载信息优化热点调度的功能
  • 新增 Placement Rules 功能,通过组合不同的调度规则,精细控制任意一段数据的副本的数量、存放位置、存储主机类型、角色等信息
  • 新增通过 UI 访问集群热点数据分布功能 #2086
  • member API 返回信息新增部署路径和组件版本信息 #2130
  • pd-ctl 新增 component 命令用于修改、查看组件配置信息 (experimental) #2092
  • 支持将动态修改配置的结果持久化存储到硬盘 #2153
  • 移除 config manager 以使其它组件自行控制它们的配置 #2349
  • 支持 JSON 格式日志 #2565
  • PD 客户端中添加 GetAllMembers 函数,用于获取 PD 成员信息 #2980
  • 添加了配置项 enable-redact-log,可以设置将日志中的用户数据脱敏 #3266

TiFlash

  • 存储引擎中的粗糙索引默认开启
  • 支持运行在 ARM 架构
  • 在 TiFlash 中支持在广播 Join 中使用外连接
  • 支持 CAST 函数下推
  • 添加了配置项 security.redact_info_log,可以设置将日志中的用户数据脱敏
  • 新增工具用于检测当前 tiflash replica 的状态

TiCDC

自 v4.0.6 起,TiCDC 成为正式功能,可用于生产环境

  • 支持通过 cdc cli 来管理同步任务 (changefeed) #546
  • 支持输出 maxwell 格式的数据 #869
  • 为 maxwell 协议默认开启 old value 特性 #1144
  • 支持快照级别一致性复制 #932
  • 默认启用 unified sorter 特性 #1230
  • 在 capture 元信息中添加版本信息和在 changefeed 元信息中创建该 changefeed 的 CLI 版本 #1342
  • 若任务的暂停同步时间超过 1 天,再次启动该任务时需要二次确认 #1497
  • 遇到无法恢复的 DML 错误立即退出,不进行重试 #1724
  • 为 EtcdWorker 添加 tick 频率限制,防止 PD 的 etcd 写入次数过于频繁影响 PD 服务 #3112

TiDB v4 兼容性变化

TiDB

  • 修改配置项 log.enable-slow-log 的类型,由整数型改为布尔类型 #14864
  • 调整修改系统表 mysql.userpassword 列名为 authentication_string,与 MySQL 5.7 保持一致( 该变动会导致升级后不能回退) #14598
  • txn-total-size-limit 配置项的默认值由 1GB 调整为 100MB #14522
  • 新增动态修改、更新配置项的功能,配置项由 PD 持久化存储 #14750 #14303 #14830
  • tidb-server 状态端口被占用时由原来打印一条告警日志改成拒绝启动 #15177
  • 去掉了特别为开启 Binlog 时定义的事务容量上限 (100 MB),现在事务的容量上限统一为 10 GB,但若开启 Binlog 且下游是 Kafka,由于 Kafka 消息大小的限制是 1 GB,请根据情况调整 txn-total-size-limit 配置参数 #16941
  • 移除慢查询日志和 statement summary 表中的敏感信息 #18130
  • 禁止在 sequence 缓存中出现负数 #18103
  • CLUSTER_INFO 表中不再显示 tombstone 状态的 TiKV 和 TiFlash 节点 #17953
  • 诊断规则 current-load 变更为 node-check #17660
  • 修改 drop partitiontruncate partition 的参数 #18930
  • add partition 操作添加状态检查 #18865
  • 废弃配置文件中 enable-streaming 配置项 #21055
  • 以下 Bug 修复涉及执行结果变化,可能引起兼容性变化:
    • 修复了 greatest(datetime) union null 返回空字符串的问题 #26532
    • 修复了 having 可能执行错误的问题 #26496
    • 修复了当 between 表达式两边的 collation 不一致会导致查询结果错误的问题 #27146
    • 修复了 extract 函数的参数是负数时查询结果错误的问题 #27236
    • 修复了当 group_concat 函数包含非 bin 的 collation 时查询结果错误的问题 #27429
    • 修复将 Apply 算子转为 Join 时漏掉列信息的问题 #27233
    • 修复将非法字符串转为 DATE 类型时的非预期行为 #26762
    • 修复开启 New Collation 时多列的 count distinct 返回结果错误的问题 #27091

TiKV

  • 新增 readpool.unify-read-pool 配置项,默认值为 True,用于控制点查是否共用 Coprocessor 的处理线程
  • 调整 unify-read-pool 配置项的方式,仅在新部署的集群时默认启用,旧集群保持原来的方式 #7059
  • 默认关闭 hibernate region #7618
  • 将加密相关的配置移到 security 分类下,即调整配置项 [encryption][security.encryption] #7810
  • 减少开启加密时的 I/O 开销和锁冲突。该修改向下不兼容。如果需要降级至 v4.0.9 以下,需要将 security.encryption.enable-file-dictionary-log 配置为 false,并在降级前重启 #9195
  • 在 v4.0.16 以前,当把一个非法的 UTF-8 字符串转换为 Real 类型时会直接报错。自 v4.0.16 起,TiDB 会依照该字符串中的合法 UTF-8 前缀进行转换 #11466

注: 关于 Unnify Read Pool 的内容,我们在上文 星辰考古:TiDB v3.x 忆水木 的文末有所提及,细心的小伙伴可能已经注意到了。 这里再推荐一篇文章: TiDB 4.0 新 Feature 原理及实践:统一读线程池 https://tidb.net/blog/56f2a0cd

PD

  • 持久化 store-limit 配置项,弃用 store-balance-rate 配置 #2557

其他

  • oom-action 参数设置为 cancel 时,当查询语句触发 OOM 阈值后会被 kill 掉,升级到 4.0 版本后除了 select 语句,还可能 kill 掉 insert/update/delete 等 DML 语句。
  • 4.0 版本增加了 rename 时对表名长度的检查,长度限制为 64 个字符。升级后 rename 后的表名长度超过这个限制会报错,3.0 及之前的版本则不会报错。
  • 4.0 版本增加了对分区表的分区名长度的检查,长度限制为 64 个字符。升级后,当你创建和修改分区表时,如果分区名长度超过这个限制会报错,3.0 及之前的版本则不会报错。
  • 4.0 版本对 explain 执行计划的输出格式做了改进,需要注意是否有针对 explain 制订了自动化的分析程序。
  • 4.0 版本支持 Read Committed 隔离级别。升级到 4.0 后,在悲观事务里隔离级别设置为 READ-COMMITTED 会生效,3.0 及之前的版本则不会生效。
  • 4.0 版本执行 alter reorganize partition 会报错,之前的版本则不会报错,只是语法上支持没有实际效果。
  • 4.0 版本创建 linear hash partition 和 subpartition 分区表时实际不生效,会转换为普通表,之前的版本则转换为普通分区表。

TiDB 社区互助升级活动

好消息!!!

TiDB 升级互助活动,延续到9月30日!由 20 位社区版主、资深布道师及官方技术支持组成的升级导师天团为你升级保驾护航!

详情戳这里: https://asktug.com/t/topic/1025499

推荐阅读:

  • 【收藏】TiDB 版本升级最全材料包&升级指南
  • 为什么要升级 TiDB ?要选什么版本?要选哪种升级方案?
alt

TiDB 3.0.20 升级到 4.0.16

在上文中我们搭建了 TiDB 3.0.20 作为 PoC 环境,本文基于此环境升级到 4.0.16 版本。

注意事项

  1. 从 TiDB 3.0 开始已经支持使用 TiUP 管理集群,如果你还在使用 TiDB Ansible,需先使用 TiUP 纳管集群,参考 tiup cluster import
  2. TiDB 目前暂不支持版本降级或升级后回退。如需将 3.0 之前的版本升级到最新 LTS 版本,需先升级到 TiDB 4.0,再进行后续升级操作。
  3. 升级前,需确认集群中没有正在运行的 DDL 操作,且升级过程中,也要避免 DDL 请求。
  4. TiDB 4.0 新增了排序规则支持框架,由参数 new_collations_enabled_on_first_bootstrap 控制,该参数默认关闭,但需注意,从 TiDB v6 开始该参数默认开启,更多内容可参考: TiDB 6.x 新特性解读 | Collation 规则

升级速览

  1. 升级前,检查集群状态。
[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v3.0.20
Deploy user:        tidb
SSH type:           builtin
Grafana URL:        http://192.0.2.86:3000
ID                Role          Host        Ports        OS/Arch       Status  Data Dir                      Deploy Dir
--                ----          ----        -----        -------       ------  --------                      ----------
192.0.2.86:9093   alertmanager  192.0.2.86  9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
192.0.2.86:3000   grafana       192.0.2.86  3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
192.0.2.81:2379   pd            192.0.2.81  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.82:2379   pd            192.0.2.82  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.83:2379   pd            192.0.2.83  2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.86:9090   prometheus    192.0.2.86  9090         linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
192.0.2.81:4000   tidb          192.0.2.81  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.82:4000   tidb          192.0.2.82  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.81:20160  tikv          192.0.2.81  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.82:20160  tikv          192.0.2.82  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.83:20160  tikv          192.0.2.83  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 11
  1. 在中控节点执行升级。
[root@tidb1 ~]# time tiup cluster upgrade mytidb v4.0.16 --force --wait-timeout 600
Before the upgrade, it is recommended to read the upgrade guide at https://docs.pingcap.com/tidb/stable/upgrade-tidb-using-tiup and finish the preparation steps.
This operation will upgrade tidb v3.0.20 cluster mytidb to v4.0.16:
will upgrade and restart component "                 pd" to "v4.0.16",
will upgrade and restart component "               tikv" to "v4.0.16",
will upgrade and restart component "               tidb" to "v4.0.16",
...
Do you want to continue? [y/N]:(default=N) y
Upgrading cluster...
+ [ Serial ] - Download: component=tidb, version=v4.0.16, os=linux, arch=amd64
+ [ Serial ] - BackupComponent: component=tidb, currentVersion=v3.0.20, remote=192.0.2.81:/tidb-deploy/tidb-4000
+ [ Serial ] - CopyComponent: component=tidb, version=v4.0.16, remote=192.0.2.81:/tidb-deploy/tidb-4000 os=linux, arch=amd64
+ [ Serial ] - InitConfig: cluster=mytidb, user=tidb, host=192.0.2.81, path=/root/.tiup/storage/cluster/clusters/mytidb/config-cache/tidb-4000.service, deploy_dir=/tidb-deploy/tidb-4000, data_dir=[], log_dir=/tidb-deploy/tidb-4000/log, cache_dir=/root/.tiup/storage/cluster/clusters/mytidb/config-cache
deploy monitored
refresh monitored config
+ [ Serial ] - UpgradeCluster
Upgrading component pd
Upgrading component tikv
Upgrading component tidb
 Restarting instance 192.0.2.81:4000
 Restart instance 192.0.2.81:4000 success
Upgrading component prometheus
Upgrading component grafana
Upgrading component alertmanager
Stopping component node_exporter
Stopping component blackbox_exporter
Starting component node_exporter
Starting component blackbox_exporter
Upgraded cluster `mytidb` successfully
  1. 升级完成后,检查集群状态。

这里可以看到新增的 UI Dashboard 运行在 83 节点上。

[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v4.0.16
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://192.0.2.83:2379/dashboard
Grafana URL:        http://192.0.2.86:3000
ID                Role          Host        Ports        OS/Arch       Status  Data Dir                      Deploy Dir
--                ----          ----        -----        -------       ------  --------                      ----------
192.0.2.86:9093   alertmanager  192.0.2.86  9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
192.0.2.86:3000   grafana       192.0.2.86  3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
192.0.2.81:2379   pd            192.0.2.81  2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.82:2379   pd            192.0.2.82  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.83:2379   pd            192.0.2.83  2379/2380    linux/x86_64  Up|UI   /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.86:9090   prometheus    192.0.2.86  9090         linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
192.0.2.81:4000   tidb          192.0.2.81  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.82:4000   tidb          192.0.2.82  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.81:20160  tikv          192.0.2.81  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.82:20160  tikv          192.0.2.82  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.83:20160  tikv          192.0.2.83  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 11
  1. 连接 tidb-server 查看版本信息。
[root@tidb1 ~]# tidb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-TiDB-v4.0.16 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(root@127.1) [(none)] 00:28:36> select version(), tidb_version()\G
*************************** 1. row ***************************
     version(): 5.7.25-TiDB-v4.0.16
tidb_version(): Release Version: v4.0.16
Edition: Community
Git Commit Hash: 75f81d2d7faae72575c4e471ec0b96756796284a
Git Branch: heads/refs/tags/v4.0.16
UTC Build Time: 2021-12-02 04:17:32
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false
1 row in set (0.00 sec)

直观变化

  1. 默认 Schema 新增 METRICS_SCHEMA

它是基于 Prometheus 中 TiDB 监控指标的一组视图。每个表的 PromQL(Prometheus 查询语言)的源均可在 INFORMATION_SCHEMA.METRICS_TABLES 表中找到。

  1. TiDB 状态端口输出信息增加。
[root@tidb1 ~]# curl -s localhost:10080/info | jq
{
  "is_owner"true,
  "max_procs": 2,     <-- New!
  "gogc": 100,      <-- New!
  "version""5.7.25-TiDB-v4.0.16",
  "git_hash""75f81d2d7faae72575c4e471ec0b96756796284a",
  "ddl_id""0d3ad6f4-5932-494e-8285-1c702390151a",
  "ip""192.0.2.81",
  "listening_port": 4000,
  "status_port": 10080,
  "lease""45s",
  "binlog_status""Off",
  "start_timestamp": 1720456032  <-- New!
}
  1. ROOT 用户权限增加。

TiDB v3.0.20 中 ROOT 用户默认权限 25 项,升级后,TiDB v4.0.16 中有 28 项,新增三个权限。

RELOAD
FILE
CONFIG

TiDB v4 系列的新功能、兼容性变化介绍,以及升级演示就到这里了。

总结

依惯例,我们再看下 TiDB v4 时期(2020-2021) 的几件重要事情:

  • 2020.03,教大家从零到一写分布式数据库的 Talent Plan Courses 正式发布
  • 2020.05,电子书《 TiDB in Action 4.0》由 102 作者在 48 小时内完稿并上线,目录: https://book.tidb.io/SUMMARY.html
  • 2020.09,PingCAP 团队的论文《TiDB: A Raft-based HTAP Database 》入选 VLDB 2020 ,成为业界第一篇 Real-time HTAP 分布式数据库工业实现的论文
  • 2020.10,TiDB 培训认证项目两周年,TiDB 4.0 PCTA/PCTP 认证项目上线
  • 2020.11,完成 2.7 亿美元的 D 轮融资
  • 2020.12,TiDB 通过信通院分布式数据库性能与基础能力两项评测
  • 2020.12,TiDB 社区 AskTUG 成员突破 5300 人,27 人获得 MVA 荣誉称号
  • 2021.01,PingCAP 连续两年在 CNCF 全球贡献排行榜中位列中国企业第一位,全球排名第 6 位
  • 2021.04,面向企业级核心场景的 TiDB 5.0 GA 发版
alt

如果用一个词来总结 TiDB 1.0 到 4.0 的这 6 年,一定是“创业维艰”。国产基础软件领域,尤其是数据库赛道,国内长年使用国际领先的商业软件或国际通用的开源软件,在一片红海中从零全新打造国产数据库,推行商用,投产几百家客户的生产环境,并得到资本市场的认可,这是国产基础软件的骄傲。

alt

【星辰考古】系列的四个章节就到这里。

下一期,我们开启新篇章,【星辰往事】,共同讨论 TiDB v5.x/v6.x 的内容。

素材来源

本文素材来自 PingCAP 官方网站及网络,包括但不局限于:

  • https://asktug.com/
  • https://tidb.net/blog
  • https://docs-archive.pingcap.com/tidb/v4.0/overview

#tidb #pingcap #htap #国产数据库

🌻 往期精彩 ▼

  • [Oracle]
    • Oracle 数据库全面升级为 23ai
    • python-oracledb 已率先支持 Oracle 23ai
    • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
  • [MySQL]
    • MySQL 9.0 的 VECTOR 文档更新
    • MySQL 9.0.0 新鲜出炉!支持向量类型
    • 「合集」MySQL 8.x 系列文章汇总
    • 如何选择适合的 MySQL Connector/J 版本
  • [TiDB]
    • 星辰考古:TiDB v3.x 忆水木
    • 星辰考古:TiDB v2.x 回忆杀
    • 敢于公布BUG的国产数据库才是好数据库
  • [PG]
    • [RL9] Rocky Linux 9.4 搭载 PG 16.1
    • 即将告别PG 12,建议升级到PG 16.3版本
    • 后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

-- / END / --

👉 这里可以找到我

  • 微信公众号: 少安事务所
  • 墨天轮: 严少安
  • PGFans: 严少安
  • ITPUB: 少安事务所
  • TiDB 专栏: @ShawnYan

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/793509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【刷题汇总 -- 最长回文子串、买卖股票的最好时机(一)、[NOIP2002 普及组] 过河卒】

C日常刷题积累 今日刷题汇总 - day0101、最长回文子串1.1、题目1.2、思路1.3、程序实现 2、买卖股票的最好时机(一)2.1、题目2.2、思路2.3、程序实现2.4、程序实现 -- 优化 3、[NOIP2002 普及组] 过河卒3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day0…

一个便捷的web截图库~【送源码】

随着时间的发展&#xff0c;前端开发的范围越来越广&#xff0c;能够实现的功能也越来越多&#xff0c;要实现的功能也五花八门&#xff0c;今天就给大家介绍一个web截图库,让前端也能实现截图功能—— js-web-screen-shot js-web-screen-shot js-web-screen-shot 是一个基于 …

Linux服务器CPU占用率达到100%排查思路

1、找到最耗CPU的进程pid&#xff0c;执行命令 top 2、找到最耗CPU的线程tid // 执行 top -Hp [pid] 定位应用进程对应的线程 tid // 按shift p 组合键&#xff0c;按照CPU占用率排序 > top -Hp 14246 3、将线程pid转化为16进制 // printf "%x\n" [tid] 将tid…

Redis+Caffeine 实现两级缓存实战

RedisCaffeine 实现两级缓存 背景 ​ 事情的开始是这样的&#xff0c;前段时间接了个需求&#xff0c;给公司的商城官网提供一个查询预计送达时间的接口。接口很简单&#xff0c;根据请求传的城市仓库发货时间查询快递的预计送达时间。因为商城下单就会调用这个接口&#xff…

camunda最终章-springboot

1.实现并行流子流程 1.画图 2.创建实体 package com.jmj.camunda7test.subProcess.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable; import java.util.ArrayList; import java.util.List;Data …

ComfyUI+MuseV+MuseTalk图片数字人

电脑配置 GPU12G&#xff0c;如果自己电脑配置不够&#xff0c;选择云gpu&#xff0c;我就是用的这个&#xff0c;自己电脑太老配置跟不上 环境&#xff1a; Python 3.11.8 torch 2.2.1 cuda_12.1 资源提供&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1_idZbF…

开始Linux之路(暑假提升)

人生得一知己足矣&#xff0c;斯世当以同怀视之。——鲁迅 Linux操作系统简单操作指令 1、ls指令2、pwd命令3、cd指令4、mkdir指令(重要)5、whoami命令6、创建一个普通用户7、重新认识指令8、which指令9、alias命令10、touch指令11、rmdir指令 及 rm指令(重要)12、man指令(重要…

【视频】R语言广义加性模型GAMs非线性效应、比较分析草种耐寒性实验数据可视化

全文链接&#xff1a;https://tecdat.cn/?p36979 原文出处&#xff1a;拓端数据部落公众号 广义加法模型&#xff08;Generalized Additive Models, GAMs&#xff09;作为一种高度灵活的统计工具&#xff0c;显著扩展了广义线性模型&#xff08;Generalized Linear Models, …

C基础day9

一、思维导图 二、课后练习 1> 使用递归实现 求 n 的 k 次方 #include<myhead.h>int Pow(int n,int k) {if(k 0 ) //递归出口{return 1;}else{return n*Pow(n,k-1); //递归主体} }int main(int argc, const char *argv[]) {int n0,k0;printf("请输入n和k:&…

Python统计实战:时间序列分析之绘制观测值图和按年折叠图

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 &#xff08;以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。&#xff09; 练习题 下表是某地区2…

复杂度(上卷)

前言 在正式进入今天的主题之前&#xff0c;我们不妨先来回顾一下初步学习数据结构后必须知道的概念。&#x1f3b6; 数据结构 数据结构是计算机存储、组织数据的方式&#xff0c;指相互间存在一种或多种特定关系的数据元素的集合。 &#xff08;没有一种单一的数据结构能够…

如何保证RocketMQ消息不丢失

rocket mq在生产阶段、Brocker存储阶段、消费阶段都会出现消息丢失。 1、生产者防止丢失消息。 a.同步阻塞的方式发送消息&#xff0c;加上失败重试机制&#xff0c;可能broker存储失败&#xff0c;可以通过查询确认 b.异步发送需要重写回调方法&#xff0c;检查发送结果 c…

人脸表情识别Facial Expression Recognition基于Python3和Keras2(TensorFlow后端)

人脸表情识别项目是一个结合了计算机视觉和深度学习技术的高级应用&#xff0c;主要用于分析和理解人类面部表情所传达的情感状态。这样的系统可以用于多种场景&#xff0c;比如情绪分析、用户交互、市场调研、医疗诊断以及人机接口等领域。 一个典型的人脸表情识别项目可以分…

kafka与zookeeper的SSL认证教程

作者 乐维社区&#xff08;forum.lwops.cn&#xff09;许远 在构建现代的分布式系统时&#xff0c;确保数据传输的安全性至关重要。Apache Kafka 和 Zookeeper 作为流行的分布式消息队列和协调服务&#xff0c;提供了SSL&#xff08;Secure Sockets Layer&#xff09;认证机制&…

红酒与威士忌:跨界碰撞的味觉火花

在品酒的世界里&#xff0c;红酒与威士忌&#xff0c;两者如同两位优雅的舞者&#xff0c;各自在舞台上闪耀着不同的光芒。然而&#xff0c;当它们相遇&#xff0c;那跨界碰撞的味觉火花&#xff0c;却仿佛一场不可预测的华丽盛宴&#xff0c;让人为之倾倒。 一、红酒的浪漫与威…

测试狗:“微观结构表征+理论计算”助力《Science》论文发表

特大喜讯&#xff1a;祝贺四川大学王玉忠院士&#xff0c;赵海波教授&#xff0c;马健文硕士研究生&#xff08;第一作者&#xff09;在《Science》上发表新的研究成果&#xff0c;测试狗和计算狗分别提供了SEM、Micro-CT、FTIR和理论计算支持&#xff0c;供相关领域的科研工作…

【经典面试题】环形链表

1.环形链表oj 2. oj解法 利用快慢指针&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {ListNode* slow head, *fast…

centos9中mysql指令提示解决方案

CentOS 9 中没有 MySQL 的官方插件&#xff0c;因为 MySQL 不是 CentOS 的默认数据库&#xff0c;它是 MariaDB 的一部分。 如果想要一个命令行提示的 MySQL 客户端&#xff0c;可以使用第三方工具 &#xff0c;如mycli 首先&#xff0c;确保已经安装了 MySQL&#xff0c;且操…

【C语言】C语言-身份证管理系统(源码+注释)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Java链表LinkedList经典题目

一.LinkedList的方法 首先先看一下链表的方法&#xff1a; 方法解释boolean add(E e)尾插void add(int index, E element)将 e 插入到 index 位置boolean addAll(Collection c)尾插 c 中的元素E remove(int index)删除 index 位置元素boolean remove(Object o)删除遇到的第一…