开发者社区 > 云原生 > 中间件 > 正文

请问有没有解决方案不往seata里面大量写数据?

通过条件更新10万条数据,seata会把10万条数据写到lock_table里面,有没有解决方案不往seata里面大量写数据?串行一共有4个服务,最后一个服务需要更新大量数据。

展开
收起
小易01 2023-12-05 08:27:41 30 0
2 条回答
写回答
取消 提交回答
  • 意中人就是我呀!

    这块最后一个服务搞成异步形式,不走globaltransaction,跟前面的时候走最终一致性,发mq消息,那边异步处理采用globallock+@transactional去做。此群整理至钉群“3群-Seata 开源讨论群”。

    2023-12-05 21:14:38
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Seata 是一个分布式事务解决方案,它通过在数据库中创建锁表来保证分布式事务的一致性。当使用 Seata 进行条件更新时,它会将需要更新的数据写入 lock_table 中,以确保数据的一致性和隔离性。

    如果您希望避免大量数据写入 Seata 的 lock_table,可以考虑以下几种解决方案:

    1. 优化查询条件:检查您的更新条件,确保它们能够有效地过滤出需要更新的数据。避免使用过于复杂的查询条件,以减少需要写入 lock_table 的数据量。

    2. 分批处理:将大量的更新操作分成多个较小的批次进行处理。这样可以减少每次更新操作对 lock_table 的影响,并提高性能。

    3. 使用乐观锁或悲观锁:根据业务需求选择适当的锁机制。乐观锁通常适用于读多写少的场景,而悲观锁则适用于写多读少的场景。乐观锁可以在不锁定数据的情况下进行更新操作,从而减少对 lock_table 的写入。

    4. 调整 Seata 配置:您可以尝试调整 Seata 的配置参数,例如增加 lock_table 的大小或者调整锁的超时时间。这可以帮助您更好地控制 Seata 的行为,并减少对 lock_table 的写入。

    2023-12-05 14:08:37
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载