TiDB 源码阅读(十八)tikv-client(上)
作者:周昱行 在整个 SQL 执行过程中,需要经过 Parser,Optimizer,Executor,DistSQL 这几个主要的步骤,最终数据的读写是通过 tikv-client 与 TiKV 集群通讯来完成的。 为了完成数据读写的任务,tikv-client 需要解决以下几个具体问题:如何定位到某一个…
TiKV 加入 CNCF 沙箱托管项目
云原生计算基金会 (CNCF)今天宣布接纳 TiKV 开源分布式事务键值数据库作为 CNCF 沙箱的早期发展云原生项目。TiKV 采用 Rust 构建,由 Raft(通过 etcd)驱动,并受到 Google Spanner 设计的激励,提供简化的调度和自动平衡,而不依赖于任何分布式文件系统。…
TiDB 源码阅读系列文章(十七)DDL 源码解析
作者:陈霜 DDL 是数据库非常核心的组件,其正确性和稳定性是整个 SQL 引擎的基石,在分布式数据库中,如何在保证数据一致性的前提下实现无锁的 DDL 操作是一件有挑战的事情。本文首先会介绍 TiDB DDL 组件的总体设计,以及如何在分布式场景下支持无锁 shem…
TiDB 2.1 RC1 Release Notes
2018 年 8 月 24 日,TiDB 发布 2.1 RC1 版。相比 2.1 Beta 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。TiDBSQL 优化器修复某些情况下关联子查询去关联后结果不正确的问题 优化 Explain 输出结果 优化 IndexJoin 驱动表选择策略…
【详解】What’s New in TiDB 2.1 RC1
2018 年 4 月底,我们发布了 TiDB 2.0 GA 版本,过去的几个月中,这个版本在上百家用户的生产环境中上线,覆盖了多个行业,包括大型互联网、银行、教育、电信、制造业等。与此同时,我们也开始了 2.1 版本的开发,经过 4 个月时间、1058 次代码提交,2.1 RC…
TiDB Operator 开源技术细节详解
原标题:TiDB Operator,让 TiDB 成为真正的 Cloud-Native 数据库TiDB Operator 是 TiDB 在 Kubernetes 平台上的自动化部署运维工具。目前,TiDB Operator 已正式开源(pingcap/tidb-operator)。借助 TiDB Operator,TiDB 可以无缝运行在公有云厂商提供的 …
TiDB 源码阅读系列文章(十六)INSERT 语句详解
作者:于帅鹏 在之前的一篇文章 《TiDB 源码阅读系列文章(四)INSERT 语句概览》 中,我们已经介绍了 INSERT 语句的大体流程。为什么需要为 INSERT 单独再写一篇?因为在 TiDB 中,单纯插入一条数据是最简单的情况,也是最常用的情况;更为复杂的是在 INSE…
TiDB 源码阅读(十五) Sort Merge Join
作者: @姚维 什么是 Sort Merge Join在开始阅读源码之前, 我们来看看什么是 Sort Merge Join (SMJ),定义可以看 wikipedia。简单说来就是将 Join 的两个表,首先根据连接属性进行排序,然后进行一次扫描归并, 进而就可以得出最后的结果。这个算法最大的消…
30 分钟成为 TiKV Contributor
作者:吴雪莲背景知识SQL 语句发送到 TiDB 后经过 parser 生成 AST(抽象语法树),再经过 Query Optimizer 生成执行计划,执行计划切分成很多子任务,这些子任务以表达式的方式最后下推到底层的各个 TiKV 来执行。 如图 1,当 TiDB 收到来自客户端的查询请…
社区 | 如何优雅降落到 TiDB 星球?
提到「开源项目 TiDB」人们总是习惯性反应:它在 GitHub 上 Star 数已经超过 17000,并拥有 260+ 位全球各地的 Contributors 。但数据总归是冷冰冰的,不能生动的展现 TiDB 社区的魅力。所以今天推送一篇 TiDB contributor 杜川同学加入 TiDB 社区前后的「…
TiDB 源码阅读系列文章(十四)统计信息(下)
作者:谢海滨 在 统计信息(上) 中,我们介绍了统计信息基本概念、TiDB 的统计信息收集/更新机制以及如何用统计信息来估计算子代价,本篇将会结合原理介绍 TiDB 的源码实现。文内会先介绍直方图和 Count-Min(CM) Sketch 的数据结构,然后介绍 TiDB 是如何…
邀请函 | TiDB TechDay2018 我们在深圳等你
7 月 28 日,第二届 TiDB TechDay 即将落地深圳。我们准备了干货 Talk、美食和你们心心念念的 T 恤、贴纸……想和你一起聊聊技术,吃吃喝喝,谈谈情面面基。自由软件之父 Richard Matthew Stallman 曾说过:“如果你想为这世界做些什么,仅有理想是不够的,…
TiDB 源码阅读系列文章(十三)索引范围计算简介
作者:崔一丁简述在数据库中处理查询请求时,如果可以尽早的将无关数据过滤掉,那么后续的算子就可以少做无用功,提升整个 SQL 的执行效率。过滤数据最常用的手段是使用索引,TiDB 的优化器也会尽量采用索引过滤的方式处理请求,利用索引有序的特点来提升查…
TiDB 源码阅读系列文章(十二)统计信息(上)
作者: 谢海滨在 TiDB 里,SQL 优化的过程可以分为逻辑优化和物理优化两个部分,在物理优化阶段需要为逻辑查询计划中的算子估算运行代价,并选择其中代价最低的一条查询路径作为最终的查询计划。这里非常关键的一点是如何估算查询代价,本文所介绍的统计信…
TiDB 在特来电的实践
背景介绍特来电新能源有限公司是创业板第一股特锐德(300001)的全资子公司,主要从事新能源汽车充电网的建设、运营及互联网的增值服务。特来电颠覆了传统充电桩的模式,世界首创了电动汽车群智能充电系统,获得 336 项技术专利,以“无桩充电、无电插头、…
TiDB 源码阅读系列文章(十一)Index Lookup Join
作者:徐怀宇什么是 Index Lookup JoinNested Loop Join 在介绍 Index Lookup Join 之前,我们首先看一下什么是 Nested Loop Join(NLJ)。 NLJ 的具体定义可以参考 Wikipedia。NLJ 是最为简单暴力的 Join 算法,其执行过程简述如下:遍历 Outer 表,取一条…
SuRF: 一个优化的 Fast Succinct Tries
作者:唐刘 在前一篇文章中,我简单介绍了 Succinct Data Structure,这里我们继续介绍 SuRF。Fast Succinct TriesSuRF 的核心数据结构就是 Fast Succinct Tries(FST),一种空间节省,支持 point 和 range query 的静态 trie。在很多时候,对于一棵树来说…
十问 TiDB :关于架构设计的一些思考
作者: @Ed Huang “我希望能够把 TiDB 的设计的一些理念能够更好的传达给大家,相信大家理解了背后原因后,就能够把 TiDB 用的更好。” 做 TiDB 的缘起是从思考一个问题开始的:为什么在数据库领域有这么多永远也躲不开的坑? 从 2015 年我们写下第一行代…
Succinct Data Structure
作者:唐刘 最近看了一篇论文 SuRF: Practical Range Query Filtering with Fast Succinct Tries,里面提到使用一种新的数据结构 Succinct Range Filter(SuRF) 替换掉了 RocksDB 默认的 Bloom filter, 在一些性能测试上面,尤其是 seek 上面,性能提升了不…
TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
作者:@张建什么是 ChunkTiDB 2.0 中,我们引入了一个叫 Chunk 的数据结构用来在内存中存储内部数据,用于减小内存分配开销、降低内存占用以及实现内存使用量统计/控制,其特点如下:只读不支持随机写只支持追加写列存,同一列的数据连续的在内存中存放Chun…