一个数据库存储或单个大容量存储的多个事务



正在寻找对此的建议/意见。你认为最好将所有项目保存在一个数据库事务中,还是将每个项目保存在自己的事务中,项目有子项目等……所以它们需要保存在事务中,但整个组/列表没有。我以为几乎每个人都会大量储蓄,但我很好奇。下面每个的伪代码示例。

单一交易:

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(。

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

多少由你来衡量。

最新更新