返回顶部
首页 > 资讯 > 数据库 >为啥 TiFlash 又变快了?
  • 266
分享到

为啥 TiFlash 又变快了?

为啥TiFlash又变快了? 2019-01-22 16:01:22 266人浏览 猪猪侠
摘要

TiFlash 这个项目的核心思路与和 TiDB 一样:持续听取用户反馈、持续改进、持续优化、高速迭代。最近几周陆续有数十家用户已经率先体验了 TiFlash,测试的过程中很多同学注意到一个现象,短短几周时间,每次 TiFlash 的版本更

为啥 TiFlash 又变快了?

TiFlash 这个项目的核心思路与和 TiDB 一样:持续听取用户反馈、持续改进、持续优化、高速迭代。最近几周陆续有数十家用户已经率先体验了 TiFlash,测试的过程中很多同学注意到一个现象,短短几周时间,每次 TiFlash 的版本更新都会带来新的性能的改进,速度越来越快,也会问到 TiFlash 越来越快的原理,所以就有了这篇深度解析。

TiFlash 加速之谜

TiFlash 诚然本质是依靠列存加速,但它也借助了 ClickHouse 计算层的优异实现,因此它也不仅仅是列存。TiFlash 与 TiKV 一样,拥有协处理机制。简单来说,协处理器就是替 TiDB 分担计算的机制。下面我们看下这个例子:

SELECT COUNT(*) FROM LINEORDER;

看这样一个简单的 count 计算的执行计划,其中 operator info 栏目中 count(1) 的被标记为 cop[tiflash],这表示 TiFlash 将会执行 Hash 聚合计算 count(1),而实际需要返回给 TiDB 的数据,仅仅是聚合完之后的结果,在大多数场景下,返回的数据将会非常少。这种协处理器机制,将会由各个 TiFlash 按照 Region(数据分片)为单位分布式执行。由于 TiFlash 配备了优异的计算模块,因此这部分下推优化是 TiFlash 加速的关键因素之一。

这里就有一个关键因素:并不是所有计算都可以完全下推到 TiFlash 进行加速。

哪些计算无法加速?

如果有函数在 TiFlash 没有实现,那么它将阻碍计算加速。

让我们看下这样一个查询:

SELECT COUNT(*) FROM LINEORDER WHERE DATE_FORMAT(LO_ORDERDATE, “%Y”) >= ‘1998’;

上面的执行计划中,TiFlash 只承担 TableFullScan 也就是扫表部分,而 count(1) 却并没有在 TiFlash 中执行。这是为何?其实原因也很简单:因为暂时 date_fORMat 函数在 TiFlash 中并没有实现,因此从谓词过滤以及所有之后的计算都将无法加速。这也许会带来几倍甚至十几倍的速度差距。 所以遇到这样的情况该怎么办?你可以很简单改写为:

SELECT COUNT(*) FROM LINEORDER WHERE LO_ORDERDATE >= ‘1998-01-01’;

改完这个查询从将近 5 分钟加速到 1.61 秒。

不过这并不是我们在这里希望你默默忍受的。我们希望你告诉联系我们,告诉我们这里下推不知道为什么不工作了,我们会帮你分析,如果有缺漏的下推,我们会迅速补上

Super Batch 优化

有用户反映,当 Region 数量非常多的时候,TiFlash 的加速会放缓。这是由于当 Region 过多时,TiDB 会产生数量大量的 Region 读取请求,而造成调度延迟放大。这个效果有些类似 hadoop 上小文件过多而造成的性能影响。我们之前给出的建议是,打开 Region Merge,并在可能的情况下将 Region 大小调至 192M 而非默认的 96M。但就算这样,仍然可能有超大表包含数千甚至上万 Region 数让性能下降。

对于这样的问题,近期我们推出了 Super Batch 优化,当开启优化时,TiDB 将会把所有需要发送到同一个 TiFlash 的请求合并,而 TiFlash 则会在内部自行进行 Raft 相关的读取容错。

通过这样的方式,TiFlash 不再对 Region 大小敏感。如下是 ontime 数据集的测试对比。

如上测试结果可以看出,多数查询有接近一倍的提速,而这只是在较小数据量下(10 亿规模以内)的结果,如果数据量进一步增加,加速效果将更为显著。

JOIN 加速

有一些测试的朋友告诉我们,他的分析计算是星型模型,有不少 JOIN,执行起来似乎没有变多快。是的,以协处理器的模型,对 JOIN 类计算并不能很好加速,因为 JOIN 无法在这个框架下分担计算,进而都必须由 TiDB Server 独立承担。由于 TiDB Server 计算单元目前并不是分布式设计,因此只能由单机慢慢算了。

那是否这样的场景就无法优化了呢?

只要有足够多的的用户呼声,我们就会开动脑筋 :)

经过一番努力,现在 TiFlash 实现了针对星型模型 JOIN 的优化方案:类 Broadcast JOIN。

通过将小表 Build Hash 动作在 TiFlash 中实现,我们得以将整个 JOIN 操作下推并分布式化,这个优化不止让 JOIN 本身得以在 TiFlash 中分布式计算,而且也让后续操作例如聚合等,都可以完整下推到 TiFlash。

而这个优化的加速效果也相当明显。我们针对标准的 Star Schema Benchmark 进行了测试,结果如下。

总共 13 条 sql,大家可以在 这里 找到。大部分查询都有明显加速,其中 6 个甚至有数量级(最多 44 倍)的加速

相信在完整的 MPP 实现之前,这样的设计也可以满足很多用户的需求。而有些场景用不上这个优化,比如大量的大表 JOIN,则可以直接用 Tispark

更多沟通,更多加速

上述各个优化,都是由用户反馈而做出的针对性优化。我们也会不断快速迭代,快速演进。但是这一切的前提都是, 你的使用和反馈。与我们联系,尝试 TiFlash,在解决你问题的同时,也能与我们一起打造真正符合大家需求的产品,毕竟,TiDB 是一个以社区为本的产品。社区的前进,离不开每个用户。

欢迎体验

TiDB 4.0 可以使用全新的 TiUP 进行部署。大家可以使用两条命令单机部署体验或者参考 官网文档 部署集群

curl --proto "=https" --tlsv1.2 -sSf Https://tiup-mirrors.pinGCap.com/install.sh | sh 
tiup playgroud

注:部分上述优化还未包含在 4.0 RC,请与我们联系参与体验。另,TiFlash 部署暂时只支持 linux 环境。

上周直播我们演示了 Real-time HTAP 概念是如何在 TiDB 4.0 中成为现实的。本周让我们看看 serverless 在 TiDB 4.0 是怎么被实现的?这次直播的主题是模拟线上不可预测的流量,尝试各种手段验证 TiDB 4.0 的上限在哪里。同样的负载在 Mysql 中的表现又会如何呢?

嘉宾:黄东旭,PingCAP 联合创始人兼 CTO & 唐刘,PingCAP 首席架构

您可能感兴趣的文档:

--结束END--

本文标题: 为啥 TiFlash 又变快了?

本文链接: https://lsjlt.com/news/5683.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 为啥 TiFlash 又变快了?
    TiFlash 这个项目的核心思路与和 TiDB 一样:持续听取用户反馈、持续改进、持续优化、高速迭代。最近几周陆续有数十家用户已经率先体验了 TiFlash,测试的过程中很多同学注意到一个现象,短短几周时间,每次 TiFlash 的版本更...
    99+
    2019-01-22
    为啥 TiFlash 又变快了?
  • php为啥连不了数据库
    PHP是一种非常流行的编程语言,被广泛用于Web开发。而与Web开发相关的一个非常重要的环节就是数据库连接。数据库连接是Web应用程序与底层数据库交互的一种方式,其中比较常见的数据库管理系统有MySQL、PostgreSQL等。然而,许多P...
    99+
    2023-05-14
  • php灵异事件,啥都没干数据变了?
    这篇文章也可以在我的博客查看 搞WordPress,难免跟php打交道 然而这弱类型语言实在坑有点多 这不今儿又踩了个大坑直接时间-1😅 问题 话不多说直接上代码 ...
    99+
    2023-10-23
    php 开发语言
  • 3月6日华为又有人跳楼了!
    [url]http://www.Ciscoh3com.com/thread-12271-1-1.html[/url]   收到手机短信: 大概意思如下 当时正在吃饭,突然一声骚乱!有人跳楼了,地上还残留血迹!在12时30分左右有120急救中...
    99+
    2023-01-31
    日华 又有
  • 2022了 为啥 php 还有这么多人在用?
    说实话,php成本就是低,真正懂点程序的老板都愿意招php。 我看市面上那些需求,基本上php都能搞定,php性能也没那么差,php无非是代码层面的东西,真正的性能瓶颈还是在数据库,项目搭起来,mq,缓存这才是用来解决性能问题的利器。 我之...
    99+
    2023-09-13
    php 开发语言
  • 华为云服务器是啥东西呀怎么用不了了
    首先,登录您的华为云账户,进入云服务器控制台。 在控制台中选择您的云服务器,并点击“启动”按钮。 在弹出的“启动设置”窗口中,选择您的云服务器配置文件和启动参数。您可以选择使用云服务器管理控制台提供的默认配置,也可以自定义配置。 配置完毕...
    99+
    2023-10-27
    华为 东西 服务器
  • 华为云服务器是啥东西呀怎么用不了
    华为云服务器是华为公司的一项云服务,它提供了一种虚拟化技术,可以将企业数据、应用程序和资源池化,将其部署在私有云或公共云中。 要使用华为云服务器,你需要安装一个专门的软件,例如HAProvisioning(HA)。然后,你可以在华为云市场...
    99+
    2023-10-27
    华为 东西 服务器
  • 为什么 `if` 改变了这个变量的范围
    问题内容 如果我有这样的东西 案例1: if str, err := m.something(); err != nil { return err } fmt...
    99+
    2024-02-06
  • 如何快速把你的 Python 代码变为 API
    提到 API 开发,你可能会想到 Django REST Framework,Flask,FastAPI,没错,它们完全可以用来编写 API,不过,今天分享的这个框架可以让你更快把现有的函数转化为 API,它就是 Sanic。Sanic 简...
    99+
    2023-05-14
    Python API 语法
  • 云服务器更改时间后,又自动还原了吗为什么
    一般来说,云服务器的还原处理方式有以下几种: 手动还原:用户需要手动将云服务器的时间调整到目标时间,通常是将目标时间与之前的时间进行比较,然后再进行调整。这种方式比较繁琐,但是能够保证服务器内部的时间和当前时间保持一致。 自动还原:云服...
    99+
    2023-10-27
    服务器 时间
  • ASP 实时 load 大数据,是不是变得更快了?
    随着大数据时代的到来,数据量的增长速度越来越快,数据处理的效率成为了企业发展的关键因素之一。在数据处理的过程中,如何快速地加载大量数据成为了一个挑战。ASP 实时 load 大数据是一种解决方案,本文将介绍ASP实时load大数据的优势和...
    99+
    2023-09-18
    实时 load 大数据
  • 阿里云服务器1m带宽怎么变快了呢
    阿里云服务器1m带宽使用方法: 在阿里云服务器上安装Kubernetes: 在控制台中选择Kubernetes,安装Kubernetes。 添加网络连接: 在终端中输入管理员密码,然后在网络连接中输入连接服务器的网络端口和密码。 配置虚...
    99+
    2023-10-26
    阿里 快了 带宽
  • 为什么亚马逊服务器ip会变了
    亚马逊服务器的 IP 地址可能会发生变化的原因有很多。以下是一些可能导致 IP 地址变化的原因: 动态 IP 地址:亚马逊服务器可能使用动态 IP 地址,这意味着它们的 IP 地址会定期更改。这是为了确保网络安全和保护服务器免受攻击。 ...
    99+
    2023-10-27
    亚马逊 服务器 ip
  • Win10变为日语输入该怎么办Win10输入法变为日语了解决方法
    Win10变为日语输入该怎么办?众所周知Win10系统软件内置的输入法默认设置全是中英二种,可是是前不久有客户在应用Win10计算机的情况下,却看到系统软件内置的微软输入法变成了日语输入了,那麼Win10变为日语输入怎么办呢?这儿小编就来告...
    99+
    2023-07-19
  • 阿里云服务器1m带宽怎么变快一点了
    阿里云服务器1m带宽使用较快的方式是购买更多的带宽,具体可以通过以下几点实现: 分摊费用:可以根据使用量和流量情况,与服务提供商协商,分摊费用,比如使用1台服务器就可以分摊1M带宽,使用2台就可以分摊2M带宽等。 使用更快的带宽:根据自...
    99+
    2023-10-27
    阿里 点了 带宽
  • 为什么亚马逊服务器ip会变了呢
    更改IP地址:亚马逊可能会将一些服务器上的IP地址更改为其他地方,以避免与某个特定卖家的IP地址发生冲突。 更改DNS设置:如果亚马逊使用的是DNS服务器,则可能会发生更改IP地址的情况。例如,如果你的DNS服务器发生了变化,则可能会导致...
    99+
    2023-10-27
    亚马逊 服务器 ip
  • 阿里云服务器1m带宽怎么变快一点了呢
    首先,使用阿里云服务器1m带宽需要注意以下几点: 选择合适的服务器配置。根据实际业务需要,选择适合自己的服务器配置,如CPU、内存、存储等,以提高服务器性能。 合理设置带宽。根据实际业务流量和带宽使用情况,合理设置带宽,确保服务器能够承...
    99+
    2023-10-28
    阿里 点了 带宽
  • 阿里云服务器1m带宽怎么变快了呢苹果
    如果您想要在阿里云上升级您的云服务器1m带宽,您可以按照以下步骤执行: 首先确保您的阿里云提供商在阿里云官网中提供了相应的升级指南和工具。 在进行升级前,请务必确保您已经安装了最新版本的阿里云客户端,以便能够访问与云服务器相关的所有设置...
    99+
    2023-10-27
    阿里 快了 带宽
  • 数据库存数据时,逻辑上防重了为啥还会出现重复记录?
    在很多异常情况下,比如高并发、网络糟糕的时候,数据库里偶尔会出现重复的记录。 假如现在有一张书籍表,结构类似这样 +----+--------------+ | id | name | +----+-------------...
    99+
    2019-07-14
    数据库存数据时,逻辑上防重了为啥还会出现重复记录?
  • Python为啥这么牛?一行Python代码除了画图竟然还有这些功能!
    在开始这个话题之前,我想问大家:什么是 Python?根据 Python 之父 Guido van Rossum 的话,Python是:一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法。对于我来说...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作