【 TiDB 使用环境】生产环境
【 TiDB 版本】8.5.4
【背景】tidb上游 cdc一张大表(100个字段,一天8000w数据量)到下游tidb,该表除了正常写,一条记录insert后,还会有2~3次的更新,所以产生的日志特别多,在高峰期,非常容易延时问题。
【诉求】有什么办法可以减少同步的字段?tidb->ticdc->tidb目前是不支持直接过滤字段。
1 个赞
可以试试在上游 TiDB中创建一张仅包含需要同步的字段的精简表 ,通过触发器 / 存储过程 / 应用层逻辑,将原表的关键字段数据同步到精简表,再让 TiCDC 同步这张精简表到下游。
1 个赞
可以在业务代码在写入 / 更新原表时,同时写入 / 更新精简表(可通过事务保证一致性)
1 个赞
如果有kafka,可以将数据输出到 Kafka,自定义消费者从 Kafka 中读取数据,过滤掉不需要的字段后,再写入下游 TiDB
1 个赞
这张表有 100 个字段,通常意味着有些字段是“热”的(频繁访问),有些是“冷”的(很少用到)。如果把这些字段按冷热重新建不同的表, 再导入, 应该快一点
1 个赞
建表时候可以按分区, 不同分区数据互斥, 这样可以同时导入
1 个赞
参数调优 硬件扩容也可以考虑一下
1 个赞
目前表已经有一个sendTm分区字段,(id,sendTm)是一个联合主键,有热点问题。目前打算在下游提前预分切region
1 个赞
昨天也想到了这个思路,就怕上下游数据不一致。
1 个赞
将大表拆分为「核心字段表(需同步)+ 非核心字段表(不同步)」,仅同步核心表,从源头减少 CDC 日志量和同步字段数。
1 个赞
这个思路是对的,但大表现在有80亿的数据,且业务较多,拆分成本大,准备独立出一张小表。
1 个赞
感谢老师分享
1 个赞
视图可以通过cdc同步?有文档出处?
1 个赞
我们cdc是跨洋的,就自带了延时。视图可以通过cdc同步?有文档出处?
1 个赞
能问下这是什么业务吗,1 天就有 8000w 的数据,这种量挺大了,并且列 100+,证明业务很复杂啊
1 个赞
海外业务,8000w不是终点 ![]()
1 个赞
这很正常, 当年刚好过年时候疫情,抖音刚好做了波广告. 7天的新增用户就达到了5000w呢.
在cdc 在 v8.5.4-release 版本中引入了新架构,可以研究下有没有新特性解决这个痛点。