繁体   English   中英

数据库保存或单个批量保存的多个事务

[英]Multiple transactions for a database save or a single bulk save

寻找关于这个的建议/意见。 您认为最好将所有项目保存在单个数据库事务中,还是将每个项目保存在自己的事务中,这些项目有子项目等......所以它们需要保存在一个事务中,但整个组/列表才不是。 我认为几乎每个人都会进行批量保存,但我很好奇。 下面的示例伪代码为每个。

单笔交易:

    BeginTransaction()

    for (int i = 0; i < items.Count; i++)
        items[i].Save();

    CommitTransaction()
    
    

多笔交易:

    for (int i = 0; i < items.Count; i++)
    {
      BeginTransaction()
      items[i].Save();
      CommitTransaction() 
    }
       

这可能更好地取决于当其中一个事务失败时发生的情况的要求。 如果交易是相关的并且它们应该失败,那么将交易放在循环之外。 如果它们是离散事务,并且一个失败不应使其他事务失败,则将它们放入循环中(并捕获失败并酌情continuebreak )。

如果这无关紧要,并且您对性能方面非常感兴趣,那么事务确实会增加开销。 包含大量变量的 function 会慢多少,包括单个查询大小和性能、数据库类型和配置以及硬件/虚拟化资源。 对于慢速查询(查询本身占用大部分时间)或非常大(对于琐碎的查询),它可能是微不足道的/不可测量的。

多少由你来衡量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM