通过条件更新10万条数据,seata会把10万条数据写到lock_table里面,有没有解决方案不往seata里面大量写数据?串行一共有4个服务,最后一个服务需要更新大量数据。
这块最后一个服务搞成异步形式,不走globaltransaction,跟前面的时候走最终一致性,发mq消息,那边异步处理采用globallock+@transactional去做。此群整理至钉群“3群-Seata 开源讨论群”。
Seata 是一个分布式事务解决方案,它通过在数据库中创建锁表来保证分布式事务的一致性。当使用 Seata 进行条件更新时,它会将需要更新的数据写入 lock_table 中,以确保数据的一致性和隔离性。
如果您希望避免大量数据写入 Seata 的 lock_table,可以考虑以下几种解决方案:
优化查询条件:检查您的更新条件,确保它们能够有效地过滤出需要更新的数据。避免使用过于复杂的查询条件,以减少需要写入 lock_table 的数据量。
分批处理:将大量的更新操作分成多个较小的批次进行处理。这样可以减少每次更新操作对 lock_table 的影响,并提高性能。
使用乐观锁或悲观锁:根据业务需求选择适当的锁机制。乐观锁通常适用于读多写少的场景,而悲观锁则适用于写多读少的场景。乐观锁可以在不锁定数据的情况下进行更新操作,从而减少对 lock_table 的写入。
调整 Seata 配置:您可以尝试调整 Seata 的配置参数,例如增加 lock_table 的大小或者调整锁的超时时间。这可以帮助您更好地控制 Seata 的行为,并减少对 lock_table 的写入。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。