tiflash副本数建议设置几个

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.1
【复现路径】6千万+的表,执行 left join 和聚合查询
【遇到的问题:问题现象及影响】单个 sql 查询耗时 0.4 秒,40个并发时单个sql耗时 2.7 秒
【资源配置】总共 4 个机器,详情如下

1. 16核32线程64G,独立部署 tidb server
2. 16核32线程64G,同时部署了 tikv、pd、tiflash
3. 同2
4. 同2

我设置的 tiflash 副本是 2,查看执行计划也确实使用了 tiflash,不并发时单个查询很快,0.4秒;
但是查询同一个表并发时,就会变的很慢,单个查询耗时 2.7 秒;
是不是因为读了同一个表,IO 太频繁的原因?
另外 tiflash 副本建议设置几个?

1.tiflash 应该单独部署,和其它的组件物理隔离
2.tiflash 多副本除了可以利用 mpp,也有高可用的考虑。你的业务响应需求和高可用需要决定了要用几个副本
3.慢的的原因看执行计划的对比好些

tiflas是olap用的,不适合并发

  • replica_count 就是用户通过 alter table xxx set tiflash replica N 设置的期望的在 tiflash 上的数据副本数。
  • available 代表是否已经有一份完整的 tiflash 副本可用。比如说 replica_count = 2,但是数据只同步好了 1 副本,available 也是 1(因为此时可以查询了)
  • replica_count 原则上只与 高可用 相关,和查询性能没有关系。但是实践中,数据副本数太多,也可能会影响性能,原因是集群管理的数据变多了。综合高可用和查询性能,一般情况下推荐设置 2 tiflash 副本
  • tiflash 的性能和 tikv 的副本数没有相关性。
4 个赞

一般两个即可

一般情况下**推荐设置 2 tiflash 副本

请教下,如果tiflash有2个副本,这2个副本的数据都是通过 tikv log 过去的吗?

一个TiFlash只能创建一个副本,创建2副本需要起两个TiFlash服务,
你是想问两个TiFlash里的副本都是从tikv复制过来的,而不是一个TiFlash从tikv过来,另一个TiFlash从前一个TiFlash复制?

2个TiFlash里的副本分别从tikv复制过来,具体原理可以看这里

1 个赞

一般建议2

:astonished:两副本是两个TiFlash节点的意思?

两副本指数据保存两份

TiKV 利用 Raft 来做数据复制,每个数据变更都会落地为一条 Raft 日志,通过 Raft 的日志复制功能,将数据安全可靠地同步到复制组的每一个节点中。不过在实际写入中,根据 Raft 的协议,只需要同步复制到多数节点,即可安全地认为数据写入成功。
【TIDB专题之第三章 TIDB分布式数据库存储原理】https://mbd.baidu.com/ma/s/2X9cb4iJ

额,我们的实践也是2个副本即可。
但性查询性能主要和节点数有关,多加节点才能利用MPP架构实现加速。

一般是2个

2个,这个很统一。。。

关于 TiFlash 副本数的设置,建议考虑以下因素:

  1. 性能需求: TiFlash 副本数的增加可以提高查询性能和容错能力,但也会增加资源占用。您需要根据您的业务需求和查询负载来平衡性能和资源消耗。
  2. 硬件资源: 每个 TiFlash 副本需要一定的硬件资源,包括 CPU、内存和存储。您需要确保集群中有足够的硬件资源来支持所需的副本数。
  3. 数据复制延迟: TiFlash 副本之间需要进行数据同步,增加副本数可能会导致数据同步延迟增加。这可能会影响查询的实时性。
  4. 容错能力: 增加 TiFlash 副本数可以提高系统的容错性,因为在部分副本失效时,其他副本仍然可以继续提供查询服务。

一般来说,建议至少保持两个 TiFlash 副本,以确保基本的容错能力和高可用性。根据业务需求和硬件资源,您可以考虑将 TiFlash 副本数增加到三个或更多,以提供数据安全保障。

副本数增多不会对性能有提升的

2个吧,虽然没测试过,都这么说

tiflash一般两个,但是你需要和tikv最好不要部署到一起,要做到隔离

一般2个