TiFlash 非事务读的一致性

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.6
  • 【问题描述】:
    阿里云RDS使用读写分离得时候由如下注意事项:
  • 使用代理连接地址进行读写分离时,不保证非事务读的一致性,业务上有读一致性需求可以封装到事务中。

我的问题是:
1、同一个事务中,TiKV与TiFlash是否有机制保证事务读强一致性。
2、TiFlash与TiKV共存,如果开启了走tiflash的索引查询优化,非事务读的一致性能否得到保证。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

阿里云 RDS 是主从复制架构,使用异步或半同步复制时,从库无法保证读到最新的数据;TiFlash 作为存储节点,和 TiKV 同属于 TiDB 集群的一部分,对于同一事务内或者非事务读,TiFlash 可以提供与 TiKV 一样的快照隔离级别支持,且保证读取数据最新(确保之前写入的数据能被读取)。

这个是通过对数据进行复制进度校验的机制实现的,即每次收到读取请求,TiFlash 中的 Region 副本会向 Leader 副本发起进度校对,只有当进度确保至少所包含读取请求时间戳所覆盖的数据之后才响应读取。

1 个赞