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

seata现在oracle使用AT模式下 批量插入是不是不支持 ?

seata现在oracle使用AT模式下 批量插入是不是不支持 ?

展开
收起
鸡蛋灌饼儿 2023-02-12 11:52:57 389 0
3 条回答
写回答
取消 提交回答
  • 部分数据库不支持批量更新,在使用 MySQL、Mariadb、PostgreSQL9.6+作为数据库时支持批量。oracle暂时不支持批量。

    ——参考来源于SEATA官方文档

    2023-12-23 20:13:29
    赞同 1 展开评论 打赏
  • 北京阿里云ACE会长

    Seata在Oracle数据库下使用AT模式时,目前不支持批量插入操作。在AT模式下,Seata会将批量插入操作拆分成多个单条插入操作,这样就无法利用Oracle数据库的批量插入优化,可能会导致性能下降。
    如果您需要进行批量插入操作,可以考虑以下两种方式:

    1. 使用TCC(Try-Commit-Cancel)模式。TCC模式下,Seata支持批量插入操作,并且可以通过事务补偿机制保证数据的一致性。但是,需要注意的是,TCC模式需要手动管理事务,相比AT模式,使用起来较为复杂。
    2. 如果您仍然希望使用AT模式,可以考虑将批量插入拆分成多个单独的插入操作,每个操作都使用@GlobalTransactional注解进行事务管理。这样虽然不能利用Oracle数据库的批量插入优化,但是可以保证事务的一致性。不过,这种方式可能会导致性能下降,因为需要进行多次数据库交互。
    2023-12-19 20:33:23
    赞同 展开评论 打赏
  • 冲冲冲

    Seata的AT模式并不直接支持Oracle的批量插入。

    在Seata的AT模式中,它通过jdbc的executeBatch来批量插入全局锁,但Oracle在使用批量插入(executeBatch)时,当操作类型为insert时,如果jdbc驱动中的rewriteBatchedStatements参数为true,jdbc驱动会把对应的SQL优化成【insert into () values (), ()】的形式来提升批量插入的性能。这种优化可能会改变批量插入的行为,导致Seata的AT模式可能无法正确处理。

    如果需要在Oracle中使用Seata的AT模式进行批量插入,可能需要进行额外的配置和调整,以确保它们能够正确地协同工作。建议参考Seata和Oracle的官方文档,以获取更详细和准确的信息。

    2023-12-19 18:07:05
    赞同 展开评论 打赏

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

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像