星辰考古:TiDB v1.0 再回首

alt

1.0 版本只是个开始,是新的起点,愿我们一路相扶,不负远途。

前言

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库。

近日,TiDB v8.0.0 DMR 发布,详细发版说明戳这里:

https://docs.pingcap.com/zh/tidb/v8.0/release-8.0.0

之前的文章提到过,我们从 v1.0 开始接触 TiDB,那时还没有好用的工具,

也没有社区论坛,遇到问题基本靠猜,或者去 GitHub 提个 Issue,

远不及现在方便、好用、高效。

那时安装集群全靠手工,先进的用 Ansible playbook,一周能装起来就很快了,

当然,现在好多国产数据库仍旧如此,长期处于初级阶段。

本文主要讲解如何安装 TiDB v1.0,找寻一下“初恋”的记忆。

alt

TiDB v1.0 Release

TiDB v1.0 共发布了 9 个版本,从 v1.0.0 到 v1.0.8,先来回忆下当年的发版说明。

(由于内容较多,移除了错误修复的部分)

时间线

  • 2017 年 10 月 16 日,TiDB 1.0 正式发布!
  • 2017 年 11 月 01 日,TiDB 1.0.1 发布
  • 2017 年 11 月 13 日,TiDB 1.0.2 发布
  • 2017 年 11 月 28 日,TiDB 1.0.3 发布
  • 2017 年 12 月 11 日,TiDB 1.0.4 发布
  • 2017 年 12 月 26 日,TiDB 1.0.5 发布
  • 2018 年 01 月 08 日,TiDB 1.0.6 发布
  • 2018 年 01 月 22 日,TiDB 1.0.7 发布
  • 2018 年 02 月 11 日,TiDB 1.0.8 发布

TiDB Server

TiDB v1.0.0
  • SQL查询优化器:
    • 调整成本模型
    • 分析下推
    • 函数签名下推
  • 优化内部数据格式,减少中间数据大小
  • 增强 MySQL 兼容性
  • 支持 NO_SQL_CACHE 语法并限制存储引擎中的缓存使用
  • 重构 Hash Aggregator 运算符以减少内存使用
  • 支持 Stream Aggregator 算子
TiDB v1.0.1
  • 支持取消 DDL Job。
  • 优化 IN 表达。
  • 支持将慢查询记录到单独的日志文件中。
TiDB v1.0.2
  • 优化索引点查询的成本估算
  • 支持 Alter Table Add Column (ColumnDef ColumnPosition) 语法
  • where 优化条件矛盾的查询
  • 优化 Add Index 操作纠正进度,减少重复操作
  • 优化 Index Look Join 算子,加快小数据量的查询速度
TiDB v1.0.3
  • 优化事务冲突场景下的性能
  • TokenLimit 在配置文件中添加选项
  • 在慢查询日志中输出默认数据库
  • 从查询持续时间指标中删除 DDL 语句
  • 优化查询成本估算
  • 支持将 Float 类型的表达式下推到 TiKV
TiDB v1.0.4
  • 加快启动时统计数据的加载速度 tidb-server
  • show variables 提高语句的性能
  • Alter/Drop User 加速声明的有效性
TiDB v1.0.5
  • 在语句中添加当前 Auto_Increment ID 的最大值 Show Create Table
  • 支持将慢查询输出到单独的文件中。
  • TimeZone 创建新会话时从 TiKV 加载变量。
  • 支持模式状态检查,使 Show Create TableAnalyze 语句仅处理公共表/索引。
TiDB v1.0.6
  • 支持 Alter Table Auto_Increment 语法
  • 支持扩展语法对隐式行ID进行分片,避免单表写入热点
  • 支持 GROUP_CONCAT 函数中的 SEPARATOR 语法
TiDB v1.0.7
  • 优化 FIELD_LIST 命令
  • 避免将只读语句添加到历史记录中
  • 添加 session 变量控制日志查询
  • 为http状态服务器添加架构信息API
  • 更新 DDL 中为 false 时 RunWorker 的行为
  • 提高统计中测试结果的稳定性
  • 支持 CREATE TABLE 语句 PACK_KEYS 语法
  • row_id 为空下推模式添加列以优化性能
TiDB v1.0.8
  • 优化 InsertIntoIgnore 语句的性能
  • 为事务内的 DML 语句数量添加限制(可配置,默认值为 stmt-count-limit = 5000)
  • 并发运行GC以加速GC进程
  • CREATE INDEX 语句提供 LOCK 语法支持
PD
TiDB v1.0.0
  • 支持基于读流的平衡
  • 支持设置存储重量和基于重量的平衡
TiDB v1.0.2
  • 提高异常情况下调度的稳定性
TiDB v1.0.3
  • 支持使用 API​​ 添加更多类型的调度器
TiDB v1.0.7
  • 增加日志
TiKV
TiDB v1.0.0
  • 协处理器现在支持更多下推功能
  • 支持下推采样操作
  • 支持手动触发数据压缩,快速收集空间
  • 提高性能和稳定性
  • 添加 Debug API 进行调试
TiDB v1.0.1
  • 支持写字节的流控制。
  • 减少 Raft 分配。
  • 将协处理器堆栈大小增加到 10MB。
  • 从协处理器中删除无用的日志。
TiDB v1.0.2
  • 支持分表,确保一个 Region 不包含多个表的数据
  • 限制密钥长度不超过 4 KB
  • 更准确的读流量统计
  • 对协处理器堆栈实施深度保护
TiDB v1.0.5
  • 支持 dynamic-level-bytes 参数改善空间收集情况。
TiDB v1.0.7
  • 支持 Table Scan
  • tikv-ctl 支持远程模式
TiDB v1.0.8
  • DeleteFilesInRanges 清除陈旧数据,提高 TiKV 启动速度
  • 强制同步接收到的 Snapshot 的元数据,保证其安全

TiDB v1.0 极简版

极简形态启动 TiDB 数据库,准备一个 PD,一个 TiKV 和一个 TiDB Server。

连接 4000 端口到 TiDB Server,并查看一些基础信息。

[root@shawnyan ~]# mysql -uroot -P4000 -h127.1 --default-character-set=utf8 --prompt='tidb> '
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.1-TiDB-v1.0.8-1-gaacba4a MySQL Community Server (Apache License 2.0)

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

tidb>
 \s
--------------
mysql  Ver 8.4.0 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:  5
Current database: 
Current user:  root@127.0.0.1
SSL:   Not in use
Current pager:  stdout
Using outfile:  ''
Using delimiter: ;
Server version:  5.7.1-TiDB-v1.0.8-1-gaacba4a MySQL Community Server (Apache License 2.0)
Protocol version: 10
Connection:  127.1 via TCP/IP
Server characterset: latin1
Db     characterset: latin1
Client characterset: utf8
Conn.  characterset: utf8
TCP port:  4000
Binary data as:  Hexadecimal
--------------

tidb>
 select version();
+------------------------------+
| version()                    |
+------------------------------+
| 5.7.1-TiDB-v1.0.8-1-gaacba4a |
+------------------------------+
1 row in set (0.00 sec)

tidb>
 select tidb_version()\G
*************************** 1. row ***************************
tidb_version(): Release Version: v1.0.8-1-gaacba4a
Git Commit Hash: aacba4a427f6c1dd64cd581e1f888e00aa64e948
Git Branch: release-1.0
UTC Build Time: 2018-02-11 12:21:59
1 row in set (0.01 sec)

tidb>
 select * from mysql.tidb;
+-----------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| VARIABLE_NAME         | VARIABLE_VALUE                                                                            | COMMENT                                                                                |
+-----------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| bootstrapped          | True                                                                                      | Bootstrap flag. Do not delete.                                                         |
| tidb_server_version   | 15                                                                                        | Bootstrap version. Do not delete.                                                      |
| tikv_gc_leader_uuid   | 63d1e883d100006                                                                           | Current GC worker leader UUID. (DO NOT EDIT)                                           |
| tikv_gc_leader_desc   | host:shawnyan, pid:22873, start at 2024-05-05 15:22:34.205171361 +0800 CST m=+1.715160561 | Host name and pid of current GC leader. (DO NOT EDIT)                                  |
| tikv_gc_leader_lease  | 20240505-15:36:34 +0800 CST                                                               | Current GC worker leader lease. (DO NOT EDIT)                                          |
| tikv_gc_run_interval  | 10m0s                                                                                     | GC run interval, at least 10m, in Go format.                                           |
| tikv_gc_life_time     | 10m0s                                                                                     | All versions within life time will not be collected by GC, at least 10m, in Go format. |
| tikv_gc_last_run_time | 20240505-15:32:34 +0800 CST                                                               | The time when last GC starts. (DO NOT EDIT)                                            |
| tikv_gc_safe_point    | 20240505-15:22:34 +0800 CST                                                               | All versions after safe point can be accessed. (DO NOT EDIT)                           |
| tikv_gc_concurrency   | 1                                                                                         | How many go routines used to do GC parallel, [1, 128], default 1                       |
+-----------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
10 rows in set (0.01 sec)

tidb>
 select count(*) from mysql.GLOBAL_VARIABLES;
+----------+
| count(*) |
+----------+
|      498 |
+----------+
1 row in set (0.00 sec)

tidb>
 select * from mysql.GLOBAL_VARIABLES where VARIABLE_NAME like 'tidb%';
+------------------------------------+----------------+
| VARIABLE_NAME                      | VARIABLE_VALUE |
+------------------------------------+----------------+
| tidb_max_row_count_for_inlj        | 128            |
| tidb_index_lookup_size             | 20000          |
| tidb_distsql_scan_concurrency      | 10             |
| tidb_index_join_batch_size         | 25000          |
| tidb_index_serial_scan_concurrency | 1              |
| tidb_skip_utf8_check               | 0              |
| tidb_index_lookup_concurrency      | 4              |
+------------------------------------+----------------+
7 rows in set (0.01 sec)

查看 PD 中的配置:

[root@shawnyan bin]# echo "config show" | ./pd-ctl 
{
  "max-snapshot-count": 3,
  "max-store-down-time": "1h0m0s",
  "leader-schedule-limit": 64,
  "region-schedule-limit": 12,
  "replica-schedule-limit": 16,
  "schedulers-v2": [
    {
      "type": "balance-region",
      "args": null
    },
    {
      "type": "balance-leader",
      "args": null
    },
    {
      "type": "hot-region",
      "args": null
    }
  ]
}

活动预告

咱们有一些社区小伙伴还在用 TiDB 比较老的版本,

小伙伴们反馈说他们其实也想要升级,太旧的版本周边组件不太完善,

遇到问题也很难获得支持(因为问题小伙伴们很难有环境帮忙复现),

但就比较担心升级时遇到问题没有人可以帮忙。

我们就在想是不是可以在社区发起一个“TiDB 升级互助活动”,

让社区里需要升级的小伙伴能更加安心和稳妥地升级~

跟大家预告即将开启的一个重磅活动呀:

TiDB 社区升级互助活动!

预计活动报名时间:2024 年 5 月 15 号 - 2024 年 6 月 15 号

原厂技术老师&社区导师天团支持时间:2024 年 5 月 15 号 - 2024 年 7 月 15 号


本期考古活动告一段落,咱们下期再见!

-- END --

alt

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

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

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

相关文章

2024年Q1季度防晒霜数据分析:个性化与差异化成为破局关键

五一出游期间,防晒必不可少,尤其是随着“颜值经济”的崛起,防晒霜成为了许多消费者出游时的必备选择。但随着“物理防晒”、“硬防晒”等概念的推出,防晒霜作为“化学防晒”的代表,在今年Q1季度线上市场表现受到影响。…

ICode国际青少年编程竞赛- Python-1级训练场-变量入门

ICode国际青少年编程竞赛- Python-1级训练场-变量入门 1、 a 4 Dev.turnRight() Dev.step(a)2、 a 4 Spaceship.step(a) Dev.step(a)3、 a 4 Dev.step(a) Dev.turnLeft() Dev.step(a)4、 a 5 Dev.step(a) Spaceship.step(a) Dev.step(a)5、 a 3 Dev.step(a) Dev.tur…

轨道交通巡检机器人的应用范围

在现代轨道交通系统的庞大网络中,无数的轨道、设备和设施交织在一起,如同一个精密的机器在高效运转。而在这背后,轨道交通巡检机器人正悄然登场,它们如同一个个智能的守护者,穿梭于各个场景之中。那么,这些…

【LeetCode:1235. 规划兼职工作 + 动态规划 + 二分查找】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

win10安装DHCP服务--用于2台机器之间搭建简易网络来进入目标机器修改配置

前言: 客户多了,往往会出现各种突发情况。 比如一个客户现场没有DHCP,没有显示器,键盘。 你只有一台笔记本的情况下要配置目标机器的网络。要如何配置?? 这时候就可以使用这篇博客提供的方式了。 Windows…

Android使用kts发布aar到JitPack仓库

Android使用kts发布aar到JitPack 之前做过sdk开发,需要将仓库上传到maven、JitPack或JCenter,但是JCenter已停止维护,本文是讲解上传到JitPack的方式,使用KTS语法,记录使用过程中遇到的一些坑.相信Groovy的方式是大家经常使用的,…

Codeforces Round 738 (Div. 2) D2. Mocha and Diana (Hard Version)

题目 思路: 性质1:能在结点u,v添加边的充要条件是u,v在第一个图和第二个图都不连通 性质2:可以添加的边数等于 n - 1 - max(m1, m2),并且添加边的顺序不会影响结果(即 边(u&#x…

U.S. Student Information Center——全球学历认证

权威机构 中国留服中心认证,全称是中国教育部留学服务中心国(境)外学历学位认证。国(境)外学历学位认证工作旨在落实中华人民共和国的留学政策,即中国教育部留学服务中心根据归国留学生提出的申请,鉴别国(境)外学历的…

C语言——文件相关操作

2.什么是文件 3.文件的打开和关闭 4.文件的顺序读写 5.文件的随机读写 6.文本文件和二进制文件 7.文件读取结束的判定 8.文件缓冲区 一、文件相关介绍 1、为什么使用文件 文件用于永久存储数据。通过使用文件,我们可以在程序关闭后保存数据,以便将来…

XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台

XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台 摘要 随着信息技术的迅速发展,快速构建高质量、高可靠性的企业级应用成为了迫切需求。XBoot,作为一个基于Spring Boot 2.x的一站式前后端分离快速开发平台,通过整合微信…

AI-数学-高中56-成对数据统计-线性回归方程

原作者视频:【成对数据统计】【一数辞典】1线性回归方程_哔哩哔哩_bilibili 注意:高中只学线性回归。 最小二乘法(残差和平方最小的直线、方差最小>拟合程度最好):

滑动验证码登陆测试编程示例

一、背景及原理 处理登录时的滑动验证码有两个难点,第一个是找到滑块需要移动的距离,第二个是模拟人手工拖动的轨迹。模拟轨迹在要求不是很严的情况下可以用先加速再减速拖动的方法,即路程的前半段加速度为正值,后半段为负值去模…

微搭低代码入门03页面管理

目录 1 创建页面2 页面布局3 页面跳转总结 上一篇我们介绍了应用的基本操作,掌握了应用的概念后接着我们需要掌握页面的常见操作。 1 创建页面 打开应用的编辑器,在顶部导航条点击创建页面图标 在创建页面的时候可以从空白新建,也可以使用模…

docker-本地私有仓库、harbor私有仓库部署与管理

一、本地私有仓库: 1、本地私有仓库简介: docker本地仓库,存放镜像,本地的机器上传和下载,pull/push。 使用私有仓库有许多优点: 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下…

JavaEE >> Spring Boot 日志

日志的作用以及什么是日志 日志就是为了当程序出错的时候,程序员们可以通过日志看到是哪部分出现错误了,为了发现和定位问题。当然,我们还可以通过日志实现一些功能,如下: 记录系统的操作⽇志,⽅便数据恢…

CSS探索之旅:定位

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文我们详细介绍 css中定位的相关知识点 定位的用处 先简单认识一下定位是做什么的。 其实,定位的功能就像他的名字一样,可以规定显示在网页的一个位置。 其他布局的效果 我们之前默认…

Java面试——不安全的集合类

​ 系统性学习&#xff0c;移步IT-BLOG-CN Java 中有许多的集合&#xff0c;常用的有List&#xff0c;Set&#xff0c;Queue&#xff0c;Map。 其中 List&#xff0c;Set&#xff0c;Queue都是Collection&#xff08;集合&#xff09;&#xff0c;List中<>的内容表示其中…

基于Pytorch深度学习——卷积神经网络(卷积层/池化层/多输入多输出通道/填充和步幅/)

本文章来源于对李沐动手深度学习代码以及原理的理解&#xff0c;并且由于李沐老师的代码能力很强&#xff0c;以及视频中讲解代码的部分较少&#xff0c;所以这里将代码进行尽量逐行详细解释 并且由于pytorch的语法有些小伙伴可能并不熟悉&#xff0c;所以我们会采用逐行解释小…

Java 笔记 15:Java 数组相关内容补充,多维数组,Arrays 类的常见用法,以及冒泡排序

一、前言 记录时间 [2024-05-05] 系列文章简摘&#xff1a; Java 笔记 01&#xff1a;Java 概述&#xff0c;MarkDown 常用语法整理 Java 笔记 02&#xff1a;Java 开发环境的搭建&#xff0c;IDEA / Notepad / JDK 安装及环境配置&#xff0c;编写第一个 Java 程序 Java 笔记 …

【在线OJ】Vue在线OJ项目

一、主页 二、题库 三、在线编译器 四、比赛 五、搜索 六、个人主页