TiDB 性能测试的几个优化点

作者: 数据源的TiDB学习之路 原文来源: https://tidb.net/blog/513a4eef

背景

前段时间参与了一个 TiDB 的性能测试,具体是在三台海光服务器(512G内存、128 core 分8个NUMA、4块3.5T SSD)搭建一个混合部署的 TiDB 集群,并测试 OLTP 和 OLAP 的性能指标。

TiDB 针对性能优化部分,提供了很多方式方法。比如在配置调优模块,提供操作系统性能参数调优、TiDB/TiKV 内存调优、TiKV 线程调优、Region 调优、TiFlash 调优等;在 SQL 调优模块,针对 SQL 优化流程、控制执行计划等方式提供了多种优化路径。

优化方法虽然多,但是优化起来也比较复杂,且优化的效果可能还不明显,尤其是 TiKV 线程调优部分。相反,恰恰是一些直观的、简单的优化方法,对性能测试却可能起到非常大的帮助。笔者根据自身实践经验概括了以下几点,供大家参考。

NUMA 绑核是最有效的优化手段

早期的计算机系统主要是 SMP(Symmetric Multi-Processor) 架构,也就是对称多处理器架构,所有的 CPU 都通过一条总线来访问内存,内存是统一结构和统一寻址的(UMA,Uniform Memory Architecture)。以前由于一般物理机器的 CPU 核数较少,SMP 架构在这种情况下表现较好,实验证明 SMP 服务器 CPU 利用率最好的情况是2至4个CPU。

然而随着 CPU 多核技术的发展,一颗物理 CPU 中集成了越来越多的 core,导致 SMP 架构的性能瓶颈越来越明显。随着处理器的增加,系统总线成为了瓶颈,另外处理器和内存之间的通信延迟也增大。为解决此问题,NUMA 架构应运而生,NUMA 调整了 CPU 和内存的布局和访问关系。虽然 NUMA 很好的解决了 SMP 架构下 CPU 大量扩展带来的性能问题,但其自身也存在着不足,当 NUMA Node 节点本地内存不足时,需要跨节点访问内存,节点间的访问速度慢,从而也会带来性能下降。要充分利用 NUMA 系统这个特点,应尽量减少不同 CPU 模块之间的交互,避免远程访问资源,如果应用程序能有方法固定在一个 CPU 模块,应用的性能将会有很大的提升。

国产海光服务器一般有 8 个 NUMA Node,而 TiDB 数据库在混合部署模式下,每个物理节点会包括多个组件,如 1*PD、N*TiDB Server、N*TiKV、N*TiFlash 以及监控告警组件。合理的对不同组件绑定不同的 NUMA,在性能上会有非常大的差异。

在集群拓扑配置文件中,可以对不同的组件增加 numa_node 参数来绑定 NUMA。以下表格是同一个测试场景( 百万记录表关联聚合 ) 中针对 TiFlash 组件分别绑定 不同 NUMA Node 时的性能差异。从结果可以看出,在单并发场景下, 每个 TiFlash 绑定 2个 NUMA Node 时可以获得最佳性能 TPS 约为 2.6/秒,而如果绑定 8 个 NUMA Node 时性能最差 TPS 约为 0.7/秒

并发度 8 NUMA 6 NUMA 4 NUMA 2 NUMA 1 NUMA
1 0.7 未测试 2.2 2.6 2.2
10 3.2 未测试 10.1 7.2 未测试
20 3.4 7.8 未测试 未测试 未测试

同样测试场景在 10 并发 情况下,TiFlash 组件分别绑定不同 NUMA Node,可以看出当 每个 TiFlash 绑定 4 个 NUMA 时可以获得最佳性能 TPS 10.1/秒,而在 8 个 NUMA 时性能最差为 TPS 3.2/秒 。在 20 并发 时, 绑定 6 个 NUMA 也比绑定 8 个 NUMA 要快 2 倍以上

从以上测试结果可以看出,NUMA 的绑核对于性能有着非常大的影响。在并发较低时,绑定较少的NUMA将获得更佳的性能,在上述案例中,单并发百万表关联聚合场景在 2个 NUMA 时可以获得最佳性能,这比不绑定 NUMA 或绑定所有 NUMA 性能高出 3 倍。在并发较高时,多绑定几个 NUMA 性价比更高,上述案例在 10 并发百万表关联聚合场景时 4个 NUMA 性能最佳,但不绑定 NUMA 性能仍然是最差的。

TiFlash 并不是越多性能越好

每台服务器有4块 SSD 磁盘,起初每台上面部署 2 个 TiFlash,每个 TiFlash 使用 2 块磁盘,在10并发百万级表关联聚合场景下 TPS 大约在 9.5~10 之间。 而当把每个节点调整为 1 个 TiFlash 使用 4 块磁盘时,性能可以稳定在 10~10.5 之间 当把 3 个 TiFlash 缩容到 2 个 TiFlash 时,性能又进一步提升,TPS 可以接近到 12/秒

以上测试结果,说明 TiFlash 并不是越多越好。从原理上,越多的 TiFlash 会造成更多的数据 shuffle 交互,这可能是 TiFlash 多反而不如 TiFlash 少性能好的原因。

TiFlash 个数 平均TPS
6 9.8
3 10.3
2 11.8

Scatter 打散后可能有意外收获

TiDB 在 PD 管控的调度机制下,基本可以保证每个节点的 Region 数和 Leader 数是均衡的,然而,对于单张表而言,却没有很好的机制可以保证 Region 在任何时刻都能均衡分布在每个 TiKV 节点上。

TiDB 提供了一个 scatter 功能,允许对单张表进行均衡打散。在测试中我们发现,scatter 打散对性能的提升非常明显。以一个 TP 类的测试场景为例, 未 scatter 前的平均 TPS 约为 4千/秒,在 scatter 之后平均 TPS 可以达到 6千/秒。

平均TPS
Scatter 前 4000
Scatter 后 6000

总结

本篇幅简单整理了 TiDB 性能测试中的几个优化点,包括 NUMA 绑核、TiFlash 个数变化以及 Scatter 对性能的影响,这些优化手段比复杂的参数优化更简单直观,获得的收益可能也会更大,可以作为性能优化和性能测试中常用的手段。NUMA 绑核主要适用于NUMA较多的服务器,TiFlash 适用于使用 TiFlash 做AP分析类场景测试,Scatter 针对的是 TiKV 中的 region 因此主要用于偏 TP 类场景的测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550068.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)

文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.4 tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)举例1:记录调用举例2:显示所…

系统集成项目管理工程师难度如何?

软考中级职称系统集成项目管理工程师是中级各专业资格中考试难度较小的,考试相对比较容易,通过率一般在20%左右,适合零基础考生或基础薄弱考生报考。但是考生还是需要认真进行备考,系统集成项目管理工程师综合知识考察的范围比较广…

【AI学习】DDPM 无条件去噪扩散概率模型实现(pytorch)

这里主要使用pytorch实现基本的无条件去噪扩散模型,理论上面的推导这里不重点介绍。 原文理论参考: 前向和反向过程示意图 前向过程和后向过程 扩散过程包括正向过程和反向过程。前向过程是基于噪声调度的预定马尔可夫链。噪声表是一组方差 &#xff0…

物理学基础精解【40】

文章目录 矢量积矢量积(又称叉积、外积)的几何意义一、面积表示二、垂直性三、方向性四、应用实例五、数学表达 矢量积(叉积)的坐标表示法矢量积的坐标表示法的几何意义矢量积的性质矢量积的应用 矢量积(又称叉积、外积…

OptiTrack与Xsens光、惯动捕中用于动画制作的尖端设备对比

随着动画、电影、游戏等数字内容行业的迅速发展,捕捉演员的动作并将其转化为虚拟角色的技术越来越受到重视。两种主要的动作捕捉技术——光学捕捉系统和惯性动作捕捉系统——代表了当前市场的最前沿。本文将对比两种技术的代表性设备:OptiTrack的光学动作…

服务器数据恢复—raid磁盘故障导致数据库文件损坏的数据恢复案例

服务器存储数据恢复环境&故障: 存储中有一组由3块SAS硬盘组建的raid。上层win server操作系统层面划分了3个分区,数据库存放在D分区,备份存放在E分区。 RAID中一块硬盘的指示灯亮红色,D分区无法识别;E分区可识别&a…

使用PHP获取商品描述API:解锁电商数据的金钥匙

在电子商务领域,获取商品的详细信息对于商家和消费者来说至关重要。taobao作为中国最大的在线购物平台之一,提供了丰富的API接口供开发者使用。其中,商品描述API允许开发者获取商品的详细描述,这对于提升用户体验和优化商品页面至…

How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览

关注B站可以观看更多实战教学视频:hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024) 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行,作为 ICLR 2024年会议的一部…

2024平价电容笔推荐!精选五大靠谱电容笔测评盘点!

现在电子设备已经成为我们生活、学习和工作中不可或缺的重要工具。而电容笔作为与电子设备紧密配合的配件,其重要性也日益凸显,为我们的数字操作体验带来极大的便利和提升。然而,市场上电容笔的品牌众多,价格、性能和品质参差不齐…

MES系统实现制造业生产自动化、智能化与透明化

万界星空科技MES系统通过集成硬件和软件,实现对生产过程的实时监控、数据采集、任务调度、资源分配、质量控制、文档管理等功能,旨在优化企业的生产流程,提高生产效率,降低成本,并确保产品质量。涵盖了离散制造、流程制…

诚实的人力资源招聘人员告诉你,为什么大多数求职者无法获得工作机会

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Arthas watch (方法执行数据观测)

文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.5 watch (方法执行数据观测)举例1:监控方法举例2:同时观察函数调用前和函数返回后 二、命令列表 2.3 monitor/watch/trace/stack/tt 相关 2.3.5 watch (方法执行…

[论文精读]Membership Inference Attacks Against Machine Learning Models

中文译名:针对机器学习模型的成员推理攻击 会议名称:2017 IEEE Symposium on Security and Privacy (SP) 发布链接:Membership Inference Attacks Against Machine Learning Models | IEEE Conference Publication | IEEE Xplore CODE:Git…

34 | 实战一(上):通过一段ID生成器代码,学习如何发现代码质量问题

在前面几篇文章中,我们讲了一些跟重构相关的理论知识,比如:持续重构、单元测试、代码的可测试性、解耦、编码规范。用一句话总结一下,重构就是发现代码质量问题,并且对其进行优化的过程。 前面的内容相对还是偏理论。…

中腾国际团餐产业集团经验谈:如何让上海央厨配送更高效、更安心

上海作为国际大都市,近些年对餐饮行业的效率与品质提出了更高要求。中央厨房(央厨)以其规模化、标准化生产的优势,成为提升餐饮供应链效率的关键一环。而央厨配送,作为连接央厨与消费者的重要桥梁,其重要性不言而喻。中腾国际团餐…

HTTPS协议详解:从原理到流程,全面解析安全传输的奥秘

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

uniapp实战教程:如何封装一个可复用的表单组件

在uniapp开发过程中,表单组件的使用场景非常广泛。为了提高开发效率,我们可以将常用的表单组件进行封装。本文将带你了解如何在uniapp中封装一个表单组件,让你只需要通过属性配置轻松实现各种表单,效果图如下: 一、准备…

ZYNQ PS 最小系统

ZYNQ PS 最小系统 ZYNQ 嵌入式开发流程 【正点原子】ZYNQ领航者V2之ARM篇 最小系统框图 最小系统步骤 创建 PS 双击 ZYNQ IP 核,启动配置界面: DDR 配置 小技巧,自动设置列宽: 串口配置 串口原理图: 配置串口引脚&…

sql注入工具升级:自动化时间盲注、布尔盲注

项目地址:https://github.com/iamnotamaster/sql-injecter 给我之前写的sql注入脚本进行了一些升级,此文章就是对升级内容的分析,升级内容如下: 使用占位符foo来填充payload里需要经常修改的部分 自动判断循环 支持爆破和二分查…

六练习题笔记

ps: 所有rpm包安装后的配置文件模板所在目录:/usr/share/doc/ x ### vsftpd有两种工作模式 连接方式: 命令连接(命令信道):21 数据连接(数据信道):20 和 随…