TiDB 源码阅读系列文章(十九)tikv-client(下)
作者:周昱行 上篇文章 中,我们介绍了数据读写过程中 tikv-client 需要解决的几个具体问题,本文将继续介绍 tikv-client 里的两个主要的模块——负责处理分布式计算的 copIterator 和执行二阶段提交的 twoPhaseCommitter。copIterator1.copIterator 是什么…
TiKV 集群版本的安全迁移
作者:陈书宁问题描述在 TiDB 的产品迭代中,不免会碰到一些兼容性问题出现。通常协议上的兼容性 protobuf 已经能帮我们处理的很好,在进行功能开发,性能优化时,通常会保证版本是向后兼容的,但并不保证向前兼容性,因此,当集群中同时有新旧版本节点存在…
TiDB 在爱奇艺的应用及实践
爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方位创新。企业愿景为做一家以科技创新为驱动的伟大娱乐公司。我们…
PingCAP 完成 C 轮 5000 万美元融资
近日,新型分布式关系型数据库公司 PingCAP 宣布完成 5000 万美元 C 轮融资,这是目前为止新型分布式关系型数据库领域的最大笔融资。本轮融资由复星、晨兴资本领投,华创资本、云启资本、经纬中国等多家投资机构跟投,将主要用于技术研发和全球化生态系统建…
PingCAP 2019 校园招聘全面启动
我们是谁?以技术产品为驱动的全球化高科技公司;工程师文化,技术极客的摇篮,ACMer 的聚集地;挑战计算机科学前沿、工程难度极高的分布式数据库领域服务于 1000+ 国内外企业,用户覆盖众多国内外独角兽公司开源理念坚定践行者,TiDB 在 GitHub 上拥有 200…
使用 TiKV 构建分布式类 Redis 服务
作者:唐刘什么是 RedisRedis 是一个开源的,高性能的,支持多种数据结构的内存数据库,已经被广泛用于数据库,缓存,消息队列等领域。它有着丰富的数据结构支持,譬如 String,Hash,Set 和 Sorted Set,用户通过它们能构建自己的高性能应用。Redis 非常快…
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 优化的过程可以分为逻辑优化和物理优化两个部分,在物理优化阶段需要为逻辑查询计划中的算子估算运行代价,并选择其中代价最低的一条查询路径作为最终的查询计划。这里非常关键的一点是如何估算查询代价,本文所介绍的统计信…