Flink CDC分区表,MySQL的分区表也必须是多列主键,第一个字段也是有很多重复值,分区列如果没有索引的话也是非常非常慢的,请教下现在的代码里面有没有按分区去split chunk呢?
Flink CDC的MySQL connector在处理分区表时,会根据分区列来生成不同的chunk。也就是说,如果一个分区表有多个分区,那么Flink CDC会为每个分区生成一个单独的chunk。
在生成chunk时,Flink CDC会首先查询数据库中所有分区的信息,并为每个分区生成一个独立的split。然后,Flink CDC会在每个split上创建一个reader,并将该reader分配给一个并行任务来读取数据。
因此,在处理分区表时,Flink CDC是按分区来split chunk的。但是,如果你的分区列没有索引,那么查询分区信息可能会非常慢,从而影响整个数据同步的速度。在这种情况下,建议你在分区列上创建一个索引,以提高查询速度。
Flink CDC 分区表的实现原理是基于 MySQL 分区表的,因此 MySQL 分区表的限制也同样适用于 Flink CDC 分区表。MySQL 分区表的分区列如果没有索引的话,查询性能会非常差,因为 MySQL 在进行分区查询时需要扫描整张表,而不是只扫描分区中的数据。
在 Flink CDC 中,如果你使用了分区表,那么 Flink CDC 会按照分区列进行数据的切分和处理。具体来说,Flink CDC 会按照分区列的取值范围将数据划分为多个 chunk,并将每个 chunk 作为一个并行的任务来处理。这样可以提高处理效率,同时也可以避免因为单个任务处理数据量过大而导致的性能问题。
不过,Flink CDC 并不会自动为分区列创建索引,因此如果你的分区列没有索引,那么查询性能仍然会很差。为了解决这个问题,你需要手动为分区列创建索引,以提高查询性能。
总之,Flink CDC 会按照分区列进行数据的切分和处理,但是如果分区列没有索引,查询性能仍然会很差。因此,建议你为分区列创建索引,以提高查询性能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。