首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDSQL-C Serverless 扩容闪断后,进行中的事务能否安全重试?

问TDSQL-C Serverless 扩容闪断后,进行中的事务能否安全重试?

提问于 2026-11-11 16:13:11
回答 2关注 0查看 34

场景:TDSQL-C MySQL 版 Serverless,兼容 MySQL 8.0,只有读写实例。最小 1 CCU(1 核 2 GB),最大 16 CCU,自动暂停默认 1 小时。订单服务用 HikariCP 5.1,maximumPoolSize 与 minimumIdle 都是 20,maxLifetime 为 1800000,idleTimeout 为 600000,未开启 keepalive。驱动 Connector/J 8.4,连集群读写地址。低峰常空闲超过 1 小时,高峰几分钟能把 CPU 打满。

现象:

  1. 池里一直有用户连接,不满足「没有连接和 CPU 使用」,全天不暂停,算力停在 1 CCU。
  2. minimumIdle 改为 0 后,空闲超过 1 小时会暂停,首连等几秒能查通。
  3. 运行中算力按 1 核、2 核、4 核翻倍时,已经 BEGIN 且执行过 INSERT 的事务抛出 Communications link failure,cause 是 EOFException: Can not read response from server。未 BEGIN 的空闲连接大多正常。
  4. 整段重试后订单重复。事务先插订单再扣库存,客户端没拿到 OK,看不出是否已提交。

已尝试:

  1. 失败在规格翻倍窗口,不是暂停拉起那几秒;语句超时改成 10 秒后仍断连。
  2. 还没切数据库代理。文档建议用它缓解跨机闪断,但没写清进行中的事务能不能保住。

问题:

  1. 翻倍断连是不是只有跨机扩容才会发生?本机垂直扩容会不会拆掉已发出的写语句?
  2. 代理的防闪断对已经 BEGIN 的连接,是接回原会话,还是只覆盖空闲连接?用户变量和临时表会不会丢?
  3. 只看到断连时,怎样确认上一次 INSERT 有没有落库,避免重试出重复订单?
  4. 抬高最小 CCU 能减少翻倍,但闲置连接会挡住自动暂停。minimumIdle、idleTimeout、maxLifetime 和 1 小时暂停该怎么配?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档