lwd-coding

Results 4 issues of lwd-coding

## Question 当poll很多数据,处理时间很长,这期间又发生网络问题导致心跳无法正常续期,server发现消费者续期时间已经超过session time out则会将该消费者踢出消费组重新触发分区的rebalance,此时该分区就会分配给其它消费者;这时候就会出现多个消费者同时消费同个分区的数据现象

## Question 最近做分库分表,需要同步几十张亿级表,发现canal.mq.canalBatchSize 这个参数对kafka写入影响最大。查看源码发现canal会通过主动控制flush来保证当前批次发送成功从而进行位点ack;所以在没调大canal.mq.canalBatchSize 的前提下你去调整kafka相关参数影响都不太明显

## Question ![QQ截图20240609230908](https://github.com/alibaba/canal/assets/53174818/cd5c0272-4b80-43a2-aab3-dd74fa95a6d3) 在高并发更新的时候,这里每个分片的处理其实是开启一个事务以后for循环同步执行每个dml,最后才提交;有多次网络的交互; 优化思路: 1.是否可以考虑新增数据包大小的参数,然后有选择的进行合并更新呢? 2.同个pk都会在一个分片,如果有多个pk是否可以考虑合并处理?

1.IS NOT NULL应该支持配置项 ![image](https://github.com/user-attachments/assets/e7faeca3-b9c5-46d7-b0b6-4ec464d1424e) 这个IS NOT NULL的拼接调整为配置可选会更好,因为对于mysql本身就是忽略null,但是在min和max加了IS NOT NULL会导致整颗索引树扫描 ![image](https://github.com/user-attachments/assets/352692f6-de2e-447d-864c-fd2d0f4ef96e) 2.做分库分表迁移,存在自增id和雪花算法,使用默认split会有数据倾斜,如果split支持按自己配置的切分段执行会更好