tidb
文章平均质量分 83
胡晗-
不定期更新
展开
-
11.TiDB集群部署
最小规模的 TiDB 集群拓扑: 实例 个数 IP 配置 TiKV 3 10.0.1.1 10.0.1.1 10.0.1.1 避免端口和目录冲突 TiDB 1 10.0.1.1 默认端口 全局目录配置 PD转载 2020-12-01 16:43:33 · 262 阅读 · 0 评论 -
10.TiPD 调度
调度概述PD 是 TiDB 集群的管理模块,同时也负责集群数据的实时调度。本文档介绍一下 PD 的设计思想和关键概念。场景描述TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数据以 Region 为单位进行复制和管理,每个 Region 会有多个 Replica(副本),这些 Replica 会分布在不同的 TiKV 节点上,其中 Leader 负责读/写,Follower 负责同步 Leader 发来的 Raft log。需要考虑以下场景: 为了提高集群的空间利用率,需要转载 2020-12-01 16:40:32 · 937 阅读 · 0 评论 -
9.TiDB数据库的计算
SQL 层简介TiDB 的 SQL 层,即 TiDB Server,负责将 SQL 翻译成 Key-Value 操作,将其转发给共用的分布式 Key-Value 存储层 TiKV,然后组装 TiKV 返回的结果,最终将查询结果返回给客户端。这一层的节点都是无状态的,节点本身并不存储数据,节点之间完全对等。SQL 运算最简单的方案就是通过上一节所述的表数据与 Key-Value 的映射关系方案,将 SQL 查询映射为对 KV 的查询,再通过 KV 接口获取对应的数据,最后执行各种计算。比如转载 2020-12-01 16:39:39 · 501 阅读 · 0 评论 -
8.存储引擎TiFlash
TiFlash 简介TiFlash 是 TiDB HTAP 形态的关键组件,它是 TiKV 的列存扩展,在提供了良好的隔离性的同时,也兼顾了强一致性。列存副本通过 Raft Learner 协议异步复制,但是在读取的时候通过 Raft 校对索引配合 MVCC 的方式获得 Snapshot Isolation 的一致性隔离级别。这个架构很好地解决了 HTAP 场景的隔离性以及列存同步的问题。整体架构上图为 TiDB HTAP 形态架构,其中包含 TiFlash 节点。TiFlash 提供列转载 2020-12-01 16:38:56 · 1074 阅读 · 0 评论 -
7.存储引擎TiKV
TiKV 简介TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过Raft 协议保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层,为用户写入 TiDB 的数据提供了持久化以及读写服务,同时还存储了 TiDB 的统计信息数据。整体架构与传统的整节点备份方式不同,TiKV 参考 Spanner 设计了 multi raft-group 的副本机制。将数据按照 key 的范围划分成大致相等的切片(下文统称为 Region),每一个切片会..转载 2020-12-01 16:38:05 · 1071 阅读 · 0 评论 -
6.TiDB数据库的存储
Key-Value Pairs(键值对)作为保存数据的系统,首先要决定的是数据的存储模型,也就是数据以什么样的形式保存下来。TiKV 的选择是 Key-Value 模型,并且提供有序遍历方法。 TiKV 数据存储的两个关键点: 这是一个巨大的 Map(可以类比一下 C++ 的 std::map),也就是存储的是 Key-Value Pairs(键值对) 这个 Map 中的 Key-Value pair 按照 Key 的二进制顺序有序,也就是可以 Seek 到某一个 Key 的位...转载 2020-12-01 16:37:10 · 994 阅读 · 0 评论 -
5.TiDB SQL优化(二)
1.物理优化物理优化是基于代价的优化,为上一阶段产生的逻辑执行计划制定物理执行计划。这一阶段中,优化器会为逻辑执行计划中的每个算子选择具体的物理实现。逻辑算子的不同物理实现有着不同的时间复杂度、资源消耗和物理属性等。在这个过程中,优化器会根据数据的统计信息来确定不同物理实现的代价,并选择整体代价最小的物理执行计划。1.1索引的选择从存储层读取数据是 SQL 计算过程中最为耗时的部分之一,TiDB 目前支持从不同的存储和不同的索引中读取数据,索引选择得是否合理将很大程度上决定一个查询的运...转载 2020-11-26 00:19:38 · 983 阅读 · 1 评论 -
4.Tidb SQL优化(一)
1.SQL 优化流程在 TiDB 中,从输入的查询文本到最终的执行计划执行结果的过程可以见下图。在经过了parser对原始查询文本的解析以及一些简单的合法性验证后,TiDB 首先会对查询做一些逻辑上的等价变化,通过这些等价变化,使得这个查询在逻辑执行计划上可以变得更易于处理。在等价变化结束之后,TiDB 会得到一个与原始查询等价的查询计划结构,之后根据数据分布、以及一个算子具体的执行开销,来获得一个最终的执行计划,同时,TiDB 在执行PREPARE语句时,可以选择开启缓存来降低...转载 2020-11-26 00:17:57 · 663 阅读 · 0 评论 -
3.理解TiDB执行计划
一、ExplainEXPLAIN语句仅用于显示查询的执行计划,而不执行查询。EXPLAIN ANALYZE可执行查询,补充EXPLAIN语句。如果EXPLAIN的输出与预期结果不匹配,可考虑在查询的每个表上执行ANALYZE TABLE。语句DESC和DESCRIBE是EXPLAIN的别名。EXPLAIN <tableName>的替代用法记录在SHOW [FULL] COLUMNS FROM下。TiDB 支持EXPLAIN [options] F...转载 2020-11-18 18:05:01 · 3978 阅读 · 1 评论 -
2.TIDB整体架构
与传统的单机数据库相比,TiDB 具有以下优势: 纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容 支持 SQL,对外暴露 MySQL 的网络协议,并兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL 默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明 支持 ACID 事务,对于一些有强一致需求的场景友好,例如:银行转账 具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景 在内核设计上,Ti转载 2020-11-18 18:01:55 · 559 阅读 · 1 评论 -
1.快速部署TIDB本地测试环境
适用场景:利用本地 Mac 或者单机 Linux 环境快速部署 TiDB 集群。可以体验 TiDB 集群的基本架构,以及 TiDB、TiKV、PD、监控等基础组件的运行。 耗时:1 分钟 1.下载并安装 TiUPcurl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh2.声明全局环境变量source /root/.bash_profile3.启动集群...转载 2020-11-18 18:00:26 · 1060 阅读 · 1 评论