TiDB Server

article/2025/9/2 20:42:40

目录

TiDB Server架构

Online DDL

GC

缓存管理

热点小表缓存

例题


TiDB Server架构

Protocol Layer:负责处理客户端的连接

Parse,Compile:负责SQL语句的解析与编译,并生成执行计划

Executor,DistSQL,KV:负责执行计划的执行

DistSQL:负责有关索引,扫描的处理(将复杂的SQL转化成对单表的查询)

KV:负责点查(点查则直接跳过逻辑优化和物理优化,直接下推至TiKV Coprocessor

进行点查的条件:使用简单的SQL语句(select/update/delete)影响单表的1行或0行数据

Transaction,KV:负责事务的执行

PD Client:负责与PD的交互

TiKV Client:负责与TiKV的交互

schema load,worker,start job:负责Online DDL(DDL不阻塞线上业务)

memBuffer:缓存查询结果及元数据,登入认证信息,统计信息

cache table:热点小表缓存(表大小限制64mb)

热点小表有如下特点:(1)数据量不大,(2)只读或不经常被修改,(3)访问很频繁
 

Parse

词法分析lex

SQL语句的抽象,将其解析成token

语法分析yacc

生成AST语法树,供Compile优化

Complie

验证

合法性校验,如表是否存在等

逻辑优化

SQL语句层面的优化,如将外连接变为内连接等,生成逻辑执行计划

物理优化

结合统计信息和元数据,根据代价的大小,选择索引或扫描,生成物理执行计划

元数据包括如表名,列名,索引名等

Executor,DistSQL,Transaction,KV

DistSQL

负责将复杂的SQL语句转化为对单表查询

KV

负责简单SQL语句的执行,即点查,提交row KV request

Transaction

负责事务和锁的管理

运作过程:

以该表为例

 转化为键值对

 添加表ID

形成region 

 超出region大小限制(96MB-114MB),进行分裂(split)

 分布存储至TiKV中

行数据的映射规则

Key:T{tableID}_r{rowID}

Value: [col1, col2, col3, col4,...]

ps:对于有主键的表,rowID可以为主键;对于没有主键的表,rowID由PD分配行

聚簇表与非聚簇表

聚簇表:key使用原有的主键,表编号+主键形成唯一的Key

非聚簇表:key不使用原有的主键 (但是可以有也可以没有主键),表编号+自动分配行id

Online DDL

进行DDL操作,不阻塞读写

1.对于整个TIDB数据库,同一时刻只能有一个Tidb server进行DDL操作 

2.且同一时刻只能有一个Onwer,只有Onwer的workers处理DDL操作

(即只能有一个workers工作)

Onwer

 同一时刻只能有一个TiDB Server成为Onwer; 

Onwer不是固定的,而是有任期限制的,当任期结束后重新发起选取新的TiDB Server成为Onwer

当某个Tidb server成为owner后schema load将最新的表(schema)同步至缓存 

ps:

Onwer的选举由ETCD提出

DDL语句是可并行执行:虽然只有一个Onwer,不可以并行job queue中的job,但可以并行执行add index queue和job queue中的job

GC

safe point:

safe point之前的历史数据均会被清理

GC_life_time参数设置,保留多长时间的历史版本

如GC_life_time=10min(10min内保留历史版本),safe point=10min

GC leader:控制整个集群的GC

缓存管理

tidb_mem_quta_query:决定每条SQL所占用的空间 

com-action:当超过设置值的操作,如中断操作,生成日志等

热点小表缓存

表大小限制64MB 

租约

设置租约的目的:解决对热点小表的修改,带来读写一致性问题(缓存内的表和TiKV内的表不一致)

使用tidb_table_cache_lease参数设置租约期

如tidb_table_cache_lease=5(租约期5s)

租约期内用户可以从内存中读,但不能写 

 租约到期后,缓存的表过期,用户即可读也可写(是对TiKV内的表进行修改,性能下降)

 重新进入租约后,重新从TiKV中载入缓存,用户再次只能读不能写(refresh过程)

同时得出结论:租约不阻塞读,只阻塞写

例题

1.下列哪些模块直接与TiDB的事务处理有关?(选2项)

A.KV

B.Parse

C.Schema load

D.Transaction

E.GC

F.start job

答案:A,D

解析:Transaction(A),KV(D):负责事务的执行;Parse(B):负责SQL语句的解析;schema load(C):当TiDB Server当选为Owner时,将最新的表schema同步至缓存(E)GC:负责垃圾回收;start job(F):接收DDL语句

2.关于关系型数据与KV的转化,下列说法不正确的是?

A.如果没有定义主键,key中包含RowID,Index ID和Table ID,都是int64类型

B.Table ID在整个集群内唯一

C.如果定义了主键,那么将使用主键作为RowlD

D.不需要为每张表指定主键

答案:C

解析:A:表table id(全局唯一),索引index id,表中row id(64int类型,不管是否有主键,系统自动成);C:聚簇表需要主键作为Key,非聚簇表不需要主键作为Key,但可以使用主键,也可以不使用


http://chatgpt.dhexx.cn/article/QK5rKNlu.shtml

相关文章

Prometheus TSDB

TSDB 概述: Head: 数据库的内存部分 Block: 磁盘上持久块,是不变的 WAL: 预写日志系统 M-map: 磁盘及内存映射 粉红色框是传入的样品,样品先进入Head中存留一会,然后到磁盘、内存映射中(蓝色框)。然后当内…

TiDB体系结构之TiDB Server

TiDB体系结构之TiDB Server TiDB ServerTiDB Server主要组成模块SQL语句的解析和编译行数据与KV的转化SQL读写相关模块在线DDL相关模块TiDB的垃圾回收TiDB Server的缓存 TiDB Server TiDB Server的主要作用如下: 处理客户端连接SQL语句的解析和编译关系型数据与KV…

TSDB助力风电监控

各位小伙伴大家好,本期Jesse想再来跟大家聊聊TSDB的应用场景,在此也感谢尹晨所著的《时序数据库在风电监控系统中的应用》一文,其为我们探究TSDB在风电系统中的应用提供了重要的帮助。 本文仅代表个人观点,如有偏颇之处&#xff…

dbt-tidb 1.2.0 尝鲜

作者: shiyuhang0 原文来源: https://tidb.net/blog/1f56ab48 本文假设你对 dbt 有一定了解。如果是第一次接触 dbt,建议先阅读 官方文档 或 当 TiDB 遇见 dbt 本文中的示例基于官方维护的 jaffle_shop 项目。关于此项目的细节介绍&a…

为啥用 时序数据库 TSDB

前言 其实我之前是不太了解时序数据库以及它相关的机制的,只是大概知晓它的用途。但因为公司的业务需求,我意外参与并主导了公司内部开源时序数据库influxdb的引擎改造,所以我也就顺理成章的成为时序数据库“从业者”。 造飞机的人需要时刻…

Prometheus 学习之——本地存储 TSDB

Prometheus 学习之——本地存储 TSDB 文章目录 Prometheus 学习之——本地存储 TSDB前言一、TSDB 核心概念二、详细介绍1.block1)chunks2)index3)tombstone4)meta.json 2.WAL 总结 前言 Prometheus 是 CNCF 收录的第二个项目&…

阿里云IoT物模型上报数据流转到实例内TSDB

阿里云物联网平台上存储的数据最多为30天,为了能让数据永久保存下来,就需要把物联网平台的数据流转到其他的数据库,对于企业版实例,内部有一个实例内的时空数据库TSDB,正好可以利用。下边就介绍一下物联网平台的物模型…

使用TSDB自动检测时序数据的异常情况

本期Jesse就带大家来继续了解一下TSDB的应用问题,小伙伴们,让我们直接步入正题吧。 本文仅代表个人观点,如有偏颇之处,还请海涵~ 现今,每天都有数千亿个传感器产生大量时序数据。公司收集大量数据使得分析…

TSDB 存储引擎介绍

本文介绍 DolphinDB 在2.0版本中新推出的存储引擎 TSDB。 1. OLAP 与 TSDB 适用的场景 OLAP 是 DolphinDB 在2.0版本之前的唯一存储引擎。数据表中每个分区的每一列存为一个文件。数据在表中的存储顺序与数据写入的顺序一致,数据写入有非常高的效率。 OLAP 引擎的…

TSDB与Blockchain

各位小伙伴们我们又见面了,伴随着区块链技术的推广,很多企业也在思考是否将其应用。其实TSDB与区块链有很多共通之处,本期Jesse就来和大家聊聊TSDB与区块链。本文参考了Nicolas Hourcard的文章“You Don’t Need a Blockchain, You Need a Ti…

FlashDB嵌入式数据库之TSDB数据存储解析

一、驱动层:SFUD(Serial Flash Universal Driver) 是一款开源的串行 SPI Flash 通用驱动库 二、中间层:FAL(FLASH ABSTRACTION LAYER))FLASH 抽象层 三、应用层:FlashDB(FlashDB 是一…

时间序列数据库 (TSDB)

参考文档:时间序列数据库 TSDB_时间序列数据库 TSDB-阿里云帮助中心 什么是时序数据库 时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据。数据可能来自服务器和应用程序的指标、物联网传感器的读数、网站或应用程序上的…

TSDB在高速公路大数据平台的应用

好久没有跟大家聊TSDB的应用场景了,Jesse也在国庆期间进行了补课,今天就跟大家聊聊TSDB在高速公路大数据平台的应用。本文借鉴了郝建明、袁逸涛发表在《上海船舶运输科学研究生学报》的《基于时序数据库的高速公路数据集成平台》一文,感谢二位…

时序数据库(TSDB)

时序数据库(TSDB)是一种特定类型的数据库,主要用来存储时序数据。随着5G技术的不断成熟,物联网技术将会使得万物互联。物联网时代之前只有手机、电脑可以联网,以后所有设备都会联网,这些设备每时每刻都会吐…

TSDB数据库

目录 为什么需要时序数据库: 时间序列数据库的特点: 常见的时间序列数据库: 时间序列数据库存储: 时间序列数据库问题: 参考资料: 内容是在我球的docs上直接复制过来的,懒得写两份&#x…

关于时许数据库的相关名词解释

1 时序数据库TSDB 英文全称为 Time Series Database,提供高效存取时序数据和统计分析功能的数据管理系统。 2 时序数据(Time Series Data) 基于稳定频率持续产生的一系列指标监测数据。例如,监测某城市的空气质量时&#xff0c…

物联网平台搭建的全过程介绍(六)——物联网TSDB之基本知识及读写代码介绍

目录 一、TSDB基本知识 二、物联网平台数据流通架构 三、TSDB数据结构 1、TSDB数据包的组成 2、TSDB的另外两个相关概念 四、阿里云物联网平台实例内TSDB功能介绍 1、数据写入 (1)需要添加的依赖 (2)写入数据代码 2、数据…

ES6—简介

目录 一、概述 二、扩展:Babel转码器 三、拓展:编译打包 一、概述 概念 ES6全称ECMAScript 6.0,是Javascript语言的下一代标准,2015年6月正式发布。 注意,ES6既是一个历史名词,也是一个泛指,…

深入浅出ES6(一):ES6是什么

深入浅出ES6(一):ES6是什么 作者 Jason Orendorff ,译者 刘振涛 发布于 2015年6月5日 | http://www.infoq.com/cn/articles/es6-in-depth-an-introduction 我的阅读清单 编者按:ECMAScript 6离我们越来越近了&#…

[ 前端开发 ] 为什么要学习ES6?

ECMAScript 6 概念 ECMAScript 6 简称 ES6 为什么要学习ES6? ES6 是 JavaScript 的下一个版本标准,诞生于2015年6月份。ES6 的主要目的是为了解决 ES5 的先天不足。ES6 的终极目标是为了使 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业…