星辰考古: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 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux container_of宏

1 结构体 假如我们有一个结构体Student,其定义如下: typedef struct student {int id;char name[30];int math; }Student; 通过Student stu定义stu变量后,我们可以通过stu.id或stu.name来获取stu的成员。但如果想反过来,通过st…

Java | Spring框架 | @Autowired与@Resource

在Spring框架中,依赖注入是一种核心概念,它允许开发者将对象的创建和对象之间的依赖关系的管理交给框架来处理。这样做的目的是为了提高代码的模块化和可测试性。 Spring提供了多种方式来实现依赖注入,其中最常用的方式是通过注解。在本文中…

uniapp + vue3 设置 axios proxy 代理,并重写路径

uniapp vue2 设置代理如下: 已生成的项目架构里面找到manifest.json文件,通过源码视图的方式打开文件,在文件中添加一下代码即可完成代理: "h5": {"devServer": {"disableHostCheck": true, //禁…

模板显式特化与隐式特化

当使用一个模板时&#xff0c;称为实例化模板。模板实例是编译器通过将模板参数应用于模板定义而创建的具体函数或类。模板实例又称为特化。因此&#xff0c;rational<int>是模板rational<>的一个特化。因此&#xff0c;特化是针对特定一组模板参数实现模板的过程。…

linux部署java1.8(jdk1.8)

两种方式&#xff1a; 方式一 1.输入查找命令&#xff1a; yum -y list java*2.输入安装命令&#xff1a; yum install -y java-1.8.0-openjdk.x86_643.测试是否已经安装&#xff1a; java -version方式二&#xff1a; 点击链接进入官网&#xff1a;https://www.oracle.com/…

Python 全栈体系【四阶】(四十一)

第五章 深度学习 九、图像分割 1. 基本介绍 1.1 什么是图像分割 图像分割&#xff08;Segmentation&#xff09;是图像处理和机器视觉一个重要分支&#xff0c;其目标是精确理解图像场景与内容。图像分割是在像素级别上的分类&#xff0c;属于同一类的像素都要被归为一类&a…

ReactFlow的ReactFlow实例事件传参undefined处理状态切换

1.问题 ReactFlow的ReactFlow实例有些事件我们在不同的状态下并不需要&#xff0c;而且有时候传参会出现其它渲染效果&#xff0c;比如只读状态下我们不想要拖拉拽onEdgesChange连线重连或删除的功能。 2.思路 事件名称类型默认值onEdgesChange(changes: EdgeChange[]) >…

pandas快速使用

DataFrame介绍 Dateframe结构和列表类似&#xff0c;区别是对于DataFrame的每一列和每一行均有一个标签。例如以下数据&#xff0c; 上述数据中&#xff0c;日期作为每行的标签。a、b、c、d、e分别是每列的标签 生成连续日期数据 使用方法date_range()&#xff0c;该方法有两…

MySQL部署系列-centos离线安装MySQL

MySQL部署系列-centos离线安装MySQL 文章目录 MySQL部署系列-centos离线安装MySQL1. 查看是否已经安装 Mysql3. 下载官方 Mysql 包3. 下载之后上传到服务器4. 创建用户组5. 创建数据目录并赋予权限6. 修改配置文件 vim /etc/my.cnf7. 初始化数据库(数据库安装)8. 加入到系统服务…

【3dmax笔记】035: 车削修改器

一、车削修改器介绍 车削&#xff1a;图形通过绕轴旋转来创建三维效果。 开放的样条线&#xff0c;车削之后是面片。闭合的样条线&#xff0c;车削之后&#xff0c;是实体。 一、车削修改器实例 绘制高脚杯&#xff0c;首先在前视图绘制如下二维图形。 添加一个车削的修改器…

(六)JSP教程——out对象

out对象是在JSP中经常使用到的对象&#xff0c;它本质上是一个输出流&#xff0c;前面已经多次使用&#xff0c;我们经常使用它的print()和println()方法&#xff0c;这些方法主要用于实现客户端数据的输出。通过out对象也可以直接向客户端发送一个由程序动态生成的HTML文件。 …

PackageKit使用(二)

本篇主要讲述&#xff0c;如何调用PackageKit c库的接口&#xff0c;只举例个别接口&#xff0c;基本上通用。 //检测更新 auto refresher PackageKit::Daemon::refreshCache(false);connect(refresher, &PackageKit::Transaction::errorCode, this, &MainWindow::er…

关于YOLO8学习(三)训练自定义的数据集

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 简介 本文将会讲解: (1)如何通过PyCharm,进行训练数据,实现人脸检测 开发环境 win10、python 3.11、cmake、pytorch2.0.1+cu117、pycharm、ultralytics==8.0.134 要特…

计算机网络 3.2网络体系结构

第二节 网络体系结构 一、网络协议 1.定义&#xff1a; ①通信双方共同遵守的规则。 ②为网络数据交换制定的规则、约定与标准。 ③网络实体之间通信时有关信息传输顺序、信息格式、信息内容的约定或规则。 2.协议三要素&#xff1a; 语法&#xff1a;确定协议元素的格式…

电子邮件协议

目录 概述 电子邮件系统 客户端 服务器 MIME规范 MIME类型 MIME编码 SMTP协议 SMTP命令和响应 SMTP认证 POP协议 POP连接过程 POP模式 IMAP协议 IMAP连接过程 IMAP模式 总结 概述 电子邮件是互联网时代最常用的通信方式之一&#xff0c;它允许人们在世界各地快…

Double 4 VR智能互动情景教学系统在商务英语课堂中的应用

随着科技的不断发展&#xff0c;虚拟现实技术&#xff08;VR&#xff09;已经逐渐渗透到教育领域&#xff0c;为课堂教学带来了新的可能性。商务英语课堂也不例外&#xff0c;VR智能互动情景教学系统在商务英语课堂中的应用&#xff0c;能够为学生提供更加真实、生动的商务场景…

大模型和传统ai的区别

在人工智能&#xff08;AI&#xff09;领域&#xff0c;大模型一直是一个热议的话题。从之前的谷歌 DeepMind、百度 Big. AI等&#xff0c;再到今天的百度GPT-3,人工智能技术经历了从“有”到“大”的转变。那么&#xff0c;大模型与传统 ai的区别在哪里&#xff1f;这对未来人…

牛客NC97 字符串出现次数的TopK问题【中等 哈希+优先级队列 Java/Go】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee 核心 哈希&#xff0c;优先级队列Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返…

deepstream std mean 对应的计算方法

pytorch中经典值mean[0.485, 0.456, 0.406]&#xff0c;std [0.229, 0.224, 0.225] 在deepstream中的计算方法 deepstream 对应计算公式&#xff1a;y net scale factor*(x-mean) &#xff0c;deepstream中mean也叫作offset deepstream中mean(offset)计算方法为&#xff1a…

[力扣]——387.字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution {public int firstUniqChar(String s) {int[] count new int[256];// 统计每个字符出现的次数for(int i 0; i < s.length(); i){count[s.charAt(i)];}// 找第一个只出现一次的字符for(int i 0; i < s.lengt…