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

news2024/12/26 20:40:29
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.coloradmin.cn/o/1666834.html

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

相关文章

【C/C++】C/C++ KTV点歌系统设计与实现(源码+数据+报告)【独一无二】

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

3588 pwm android12 的操作

问题: 客户需要在android12 的界面上操作板卡上的 PWM 蜂鸣器设备。 过程: 1 了解一下 3588 android12 源码的 关于PWM 的驱动。 设备树找不到 pwm 但是, 还不知道,android12 最终包含的 设备树是哪个,但是经过我的…

MyCat实现分库分表

两个集群 两个库 两个表 搭建数据库服务使用docker启动两个mysql 3506 3507连接MyCat创建两个数据源连接MyCat创建集群 mycat创建逻辑库MyCat创建全局表广播表创建分片表mycat逻辑库MyCat插入数据mycat查看数据物理库3506查看数据物理库3507查看数据 ER表创建ER表mycat插入数据…

蓝桥杯练习系统(算法训练)ALGO-946 Q神的足球赛

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 足球赛上,只见Q神如闪电般的速度带球时而左,时而右,时而前,时而后&#xff…

HDFS HA 修改nameservice

本例中修改将原来的hdfs-ha 修改为 hdfs-ns 停止HDFS, 防止新的业务操作 等待停止结束 KDE中需要调整的配置项如下图所示 a.搜索栏找到fs.defaultFS,将hdfs://hdfs-ha改为hdfs://hdfs-ns b.搜索栏找到dfs.nameservices,将hdfs-ha改为hdfs-ns c.搜索栏找…

HBuilder报错--openssl-legacy-provider is not allowed in NODE_OPTIONS解决方法

目录 一、问题描述二、解决方法 一、问题描述 HBuilder编译时报错:–openssl-legacy-provider is not allowed in NODE_OPTIONS 二、解决方法 将 windows 环境变量 NODE_OPTIONS 的值设置为空,由: 改为:

并发-判断线程对象是否处于活动状态 - isAlive

t.isAlive() 测试线程t是否处于活动状态,只要线程启动并且没有终止,方法返回值就是truestart()之前,线程不处于活动状态,之后就处于活动状态示例:运行结果:但是事情并没有这么简单,先来看一下以…

【每日刷题】Day37

【每日刷题】Day37 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 2391. 收集垃圾的最少总时间 - 力扣(LeetCode) 2. 1614. 括号的最大嵌套深度…

软件库V1.5版本iApp源码V3

软件库V1.5版本iApp源码V3 配置教程在【mian.iyu】的【载入事件】 更新内容: 1、分类对接蓝奏(免费,付费,会员,广告),支持蓝奏文件描述设置为简介(改动:首页.iyu&#…

【算法】二叉树中的dfs

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、计算布尔二叉树的值二、求根节点到叶节点数字之和三、二叉树剪枝四、验证搜索二叉树五、二叉搜索树中…

该从哪些方面提升系统的吞吐量?

更多大厂面试内容可见 -> http://11come.cn 该从哪些方面提升系统的吞吐量? 我们平时自己做的项目一般没有用户量,都是练手项目,所以并不会在吞吐量上做出很多的优化,但是这样的话,又会导致项目和其他人相比并没有…

mysql设置远程访问权限,允许其他IP访问

文章目录 更改mysql配置文件登录mysql 更改mysql配置文件 查找.ini或者.cnf文件 更改bind-address为0.0.0.0 [mysqld] character-set-serverutf8mb4 bind-address0.0.0.0 default-storage-engineINNODB [mysql] default-character-setutf8mb4 [client] default-character-s…

ppt保存文件奇怪问题

我发现ppt中的形状保存成jpg,png和pdf时,格式不一样 比如 当右键单击时,然后选择另存为图片 png格式 jpg格式 pdf格式 感觉还是很奇怪,就pdf的格式比较靠谱一点

Java---类和对象第一节

目录 1.面向对象初步认识 1.1什么是面向对象 1.2面向对象和面向过程的区别 2.类的定义和使用 2.1简单认识类 2.2类的定义格式 2.3类的实例化 2.4类和对象的说明 3.this关键字 3.1访问本类成员变量 3.2调用构造方法初始化成员变量 3.3this引用的特性 4.对象的构造以…

国内有哪些知名的网络安全厂商?

首先就是360,这个我相信大家并不陌生了吧,你的电脑装过360么? 360在个人终端服务那是妥妥的扛把子,但是在企业服务里虽然有他们的身影却略显不足。 第二个就是深信服,网络安全的老牌大佬,业务覆盖了全球5…

什么是XXE漏洞,日常如何做好web安全,避免漏洞威胁

随着网络技术的不断发展,网站安全问题日益受到人们的关注。当前随着技术发展,网站存在一些常见的可能被攻击者利用的漏洞,而在众多网站安全漏洞中,XXE(XML External Entity)漏洞是一个不容忽视的问题。今天…

linux性能监控之slabtop

slabtop命令是以实时的方式显示内核slab缓冲区的细节信息&#xff0c;是linux自带的命令 [rootk8s-master ~]# slabtop --helpUsage:slabtop [options]Options:-d, --delay <secs> delay updates-o, --once only display once, then exit-s, --sort <char&…

【WEEK11】 【DAY6】员工管理系统第七部分【中文版】

2024.5.11 Saturday 接上文【WEEK11】 【DAY5】员工管理系统第六部分【中文版】 目录 10.8.删除及404处理10.8.1.修改list.html10.8.2.修改EmployeeController.java10.8.3.重启10.8.4. 404页面处理10.8.4.1.把404.html文件移入10.8.4.2.重启并运行 10.8.5.退出登录状态10.8.5.1…

51基于单片机的温室大棚系统设计

设计摘要&#xff1a; 本设计旨在基于51单片机和蓝牙技术&#xff0c;实现一个功能完善的温室大棚系统。该系统具备以下主要功能&#xff1a;首先&#xff0c;通过连接的显示屏能够实时地显示当前的温度和湿度信息&#xff0c;方便用户了解温室内的环境变化。其次&#xff0c;…

Codeforces Round 605 (Div. 3) A~D

本人水平不高&#xff0c;开这个专栏主要是督促自己补题&#xff0c;有些题对目前的我来说还比较难&#xff0c;还补不动&#xff0c;等以后能力上来了再补。。。 原题链接&#xff1a;Dashboard - Codeforces Round 605 (Div. 3) - Codeforces 目录 A. Three Friends B. Sn…