包含tiflash组件的tidb集群查询速度慢

【 TiDB 使用环境】测试
【 TiDB 版本】7.1.1
我在三台服务器上部署了3个tidb节点,3个pd节点,3个tikv节点,2个tiflash节点,从MySQL导入测试数据后发现查询性能没有多少提升,而我之前在我的三台虚拟机上部署了3个tidb节点,3个pd节点,3个tikv节点,查询性能是要比MySQL高很多,是因为tiflash本身就会对性能有这么大的影响还是因为我的服务器存储空间不够?

你的拓扑图发一下,不会是tiflash和tikv放一起了吧。。。

嗯,对的。因为服务器数量限制

那做numa资源绑定了吗?tikv和tiflash磁盘用的同一个?测试的语句看下走的tikv还是tiflash。。。。

没有做资源绑定,tikv和tiflash用的是同一个磁盘,测试语句走的都是tikv

那tiflash在你这不是副作用吗?不能为查询提速,还要同步数据占资源….你可以测下聚合查询应该有提升

1 个赞

按官方建议tikv要独立部署

官方说明
对于希望节省机器资源,并且完全没有隔离要求的场景,可以使用 TiKV 和 TiFlash 联合部署。建议为 TiKV 与 TiFlash 分别留够资源,同时避免共享磁盘。

tiflash 在你这是副作用了,你可以单独把tiflash 分离出来

数据量和数据分布: 如果的数据量相对较小,或者数据分布较为均匀,TiFlash 的性能提升可能会有限。TiFlash 更适合处理大规模的 OLAP 查询,如果数据集较小,可能并不会明显提高查询性能。

解决方案: 确保的数据量足够大,并且 OLAP 查询的复杂性适合使用 TiFlash 进行加速。如果的数据规模较小,可能不需要 TiFlash,可以考虑仅使用 TiKV。

数据同步问题: TiFlash 需要与 TiKV 保持数据同步。如果数据同步存在延迟或失败,可能导致查询性能下降。

解决方案: 确保 TiFlash 和 TiKV 之间的数据同步正常运行。检查 TiDB 集群的状态、TiKV 和 TiFlash 的日志以查看是否存在同步问题。

硬件资源: TiFlash 需要足够的 CPU、内存和存储资源来运行。如果硬件资源不足,性能可能下降。

解决方案: 确保 TiFlash 节点具有足够的 CPU 和内存资源,并且存储空间足够大以容纳数据。可以监视 TiFlash 节点的资源使用情况,以确保它们不会达到极限。

查询优化: TiFlash 支持多种查询优化策略,但查询的性能仍然取决于查询本身的复杂性和数据分布。

解决方案: 优化查询语句,尽量避免全表扫描等低效操作。可以使用 Explain 分析查询计划,以便了解查询的执行方式,并进行相应的优化。

网络和通信延迟: TiFlash 与 TiKV 之间的通信可能受到网络延迟的影响,这可能会导致查询性能下降。

解决方案: 确保 TiFlash 和 TiKV 之间的网络连接良好。可以使用网络性能工具来诊断和解决潜在的网络延迟问题。

最终,TiFlash 的性能提升效果取决于多个因素的综合影响。如果遇到性能问题,建议首先检查以上因素,以便找到性能下降的根本原因,并采取相应的措施来优化和提升性能。如果的硬件资源有限或数据量较小,并且不需要 OLAP 查询加速,可以考虑不使用 TiFlash 组件。

tiflash资源规划

1 个赞

这种部署我们这边也是,生产老是出问题,tiflash和tikv在一起的,默认设置走了tiflash,快的时候是很快,慢的时候整个tidb集群查询非常慢,cpu内存资源直接消耗完了

你的查询语句没有慢sql,可能走tikv查询性能更好

建议分开部署,生产环境就别搞的资源那么紧张了

@heiwandou 发现你多条内容没有提供有效的建议,有点水贴的嫌疑,请改正行为哟!