ETL是一个数据库链接同步多张表,还是每个表同步都是用一个新链接?

【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【遇到的问题:问题现象及影响】
我们现在在用自研的ETL工具往TIDB数据库迁移数据,目前发现一个问题,如果使用jdbc多个链接,可以执行多个表同时迁移,如果共用一个jdbc链接,只能执行一个,其他的数据库插入没响应,想请教一下社区大神们

什么叫共用一个 jdbc ?
情景重现:

  • 现在只有一个碗,小王要吃饭,小李也要吃饭,
  • 小王吃饭要30分钟,他把碗拿去吃了,
  • 请问小李还能拿到这个碗吃饭么? :persevere:

:rofl:就是同时并行多个job,这些job都是用的同一个数据源链接,我们在其他数据库上也是同样的操作,但是没有出现这个问题,想咨询一下是连接池导致的还是说每个job都必须创建一个新链接才行

如果你有连接池,连接池的连接多个就行。如果没用连接池,那一个jdbc相当于一个客户端只能有一个连接,那就得多个jdbc了

好的,谢谢了,应该还是我们使用的连接池的问题,再排查一下看看

感觉描述的情况,就是没有连接池。是串行的。

你连接池设置的多大?别一看连接池就50个连接,你的job一下起了200个并发,那肯定是忙不过来吧。

数据库侧,有连接空闲时间的监控

https://docs.pingcap.com/zh/tidb/stable/grafana-performance-overview-dashboard/#connection-idle-duration

如果这个值比较高,那么显然,整体的连接占用时间是不高的,问题大概率出在应用侧。

建议查一下这个值,可以辅助判断问题出在哪里。

明显是迁移任务串行执行了啊。连接池设置调大一点就行。

确实是串行了,应用端写的一个另存逻辑出问题导致的

1 个赞

应用端写的一个另存逻辑出问题导致的 :sweat_smile:

1 个赞

确实是串行了,应用端写的一个另存逻辑出问题导致的 :sweat_smile:
感谢感谢

:joy: 研发午餐 -1 :poultry_leg:

这种情况需要排队吧

串行的闩锁了

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。