Day 5 - TiDB架构

TiDB里头的TiDB,听起来有点饶舌,为了避免混淆,後面会加个server来做区别。TiDB server主要功能是负责SQL层的部分。
https://ithelp.ithome.com.tw/upload/images/20210831/20113220kPkUWlpEFY.png

引用pingcap官网架构图


其结构主要可以分为两部分,首先是Protocol Layer,负责解析MySQL协议,以及最终将查询结果回传到使用者手中。TiDB支持MySQL大部分语法的特点,对於原本就使用MySQL的使用者来说十分亲切,替换资料库基本上可以做到无痛转移。

第二个部分则是SQL Layer,首先将语法解析成AST树,简单来说就是将语法中COLUMN,FROM,WHERE拆解成树状结构,优化後产生执行计画然後透过DistSQL API传递给TIKV,处理完成後再将结果抛回Protocol Layer。优化器分为逻辑优化与物理优化两种,逻辑优化会依据TIDB实作的优化规则分析语法。例如语法中有Group By,如果Group By的栏位是Unique key,就不需做聚合。除此之外还有许多已经实作的优化规则,如OUTER JOIN,Max/Min,Subquery等等。而物理优化则决定哪些计算该在TiDB还是TiKV做,该用什麽index。
举例来说

Select sum(count(1)) from table where name = 'TIDB'

物理优化会决定这些资料该从每个TiKV node 做完count之後再回到TiDB做sum的动作。接着交给Executor执行。

另外TiDB本身无法做到负载平衡,但是可以在前面加上Load Balancer如F5等等,达到负载平衡的目的。


<<:  Day 13 - Rancher 专案管理指南 - 资源控管

>>:  Day.5 留个纪录好办事 - Mysql Log (日志纪录)-上

Day 18. Zabbix 整合仪表板介绍

Hi 大家今天介绍 Dashboard 的功能,30 天到现在还没有大家介绍说到底是否有警报。 对於...

【Day27】其他开源资源-审批引擎

#odoo #开源系统 #数位赋能 #E化自主 正如我们前一篇所提,odoo作为一个开源软件,在世界...

[Day_20]回圈与生成式 - (6)

生成式(comprehension) 生成式可以依照规模产生资料,接着将资料储存在串列、字典与集合内...

Day 40 (PHP)

1.阵列抓值 (1)打开$person的'programs'(key) 抓 $language(va...

Day7 - 使用 Heroku 建立一个网站

GitHub 网址:https://github.com/ Heroku 网址:https://w...