多表join引发的数据同步延迟

目前OpenSearch支持创建多表join

如果多表配置了RDS、polarDB数据源并且通过DTS数据订阅的方式同步增量数据,主、辅表都可以同步到OpenSearch中,但为保障用户数据同步的时效性,会做出如下限制:

说明

  1. 主表+辅表更新量不能超过1500tps,否则主、辅表的时效性不承诺实时

  2. 辅表更新触发主表更新量不能超过1000tps,否则可能造成主辅表均有延迟

  3. 当主辅表的join关系是N:1时,建议N值不超过10

主辅表join逻辑

这里以两张表为例:

1

辅表更新逻辑

这里以两张表,并且主辅表对应关系为N:1为例:

2

由上图可知

  • 在主辅表join之后,合并成为一张宽表,所有更新操作均在宽表里进行

  • 当更新主键记录时,由于主表的主键是唯一的,主表更新一条记录,对应宽表更新一条记录

  • 当更新辅表记录时,由于辅表对应的主键,在主表中可以join上多条记录(即N:1,N的值),则辅表

    更新一条记录,可能造成

    宽表更新多条记录

得出结论

  • 由于大量更新辅表,可能会造成主表的延迟,为保证主表的时效性,限制辅表更新触发主表更新的最大量为1500tps

  • 辅表更新触发主表更新超过1500tps时,辅表更新会被限速,所以不保证辅表更新时效性,如果继续大量更新辅表可能造成更多延迟

  • 建议当主辅表的join关系是N:1时,建议N值不超过10

相关建议

  • 如果对主表的延迟可以容忍,可以提工单,开放辅表tps限速的限制

  • 如果对辅表的时效性可以容忍,且主表由于辅表的大量更新导致有较大延迟,可以提工单,限制辅表的更新量