gpt4 book ai didi

performance - 使用事务但实际上不进行任何查询是否会产生资源成本?

转载 作者:行者123 更新时间:2023-12-04 02:49:16 26 4
gpt4 key购买 nike

好的,我们的一位团队成员建议,在每个 http 请求开始时,我们开始一个数据库事务(我们正在使用 Entity Framework Core),执行请求的工作,然后在响应为200 好的,如果是其他情况则回滚。

这意味着我们只会提交成功的请求。

当我们对数据库执行读取和写入时,这很好。

但是我想知道如果我们实际上不对数据库进行任何读取或写入,这是否需要付出代价?

最佳答案

如果为此使用 TransactionScope,则事务仅在第一次数据库访问时物理打开。未使用范围的成本极低。

如果您使用普通的 EF 事务,那么一个空事务将访问数据库 3 次:

  1. 开始翻译
  2. 提交
  3. 为连接池重置连接

其中每一项的成本都极低。您可以通过简单地在一个循环中运行 100000 次来测试它的成本。很可能您并不关心这个小成本。

我仍然反对这样做。以我的经验,Web 应用程序需要比 Web 请求和事务的 1:1 对应更多的灵 active 。此外,使用 HTTP 状态代码来决定交易的规则将变得不灵活。

此外,您必须为每个事务选择一个隔离级别(可能还有超时)。在 HTTP 请求开始时,不知道正确的值是什么。只有行动知道。

我在每个 HTTP 请求使用一个 EF 上下文然后在每个操作中手动使用事务方面有很好的经验。 LOC 方面的开销非常小。没有迫切需要将其集中。

关于performance - 使用事务但实际上不进行任何查询是否会产生资源成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55899164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com