如何调试非常慢的提交时间?

时间:2015-10-25 06:04:29

标签: c# sql-server sql-server-2012

我认为,对于简单的1行插入,我们数据库上的一些提交最多需要10秒才能完成。我的证据是,即使创建订单的C#应用​​程序代码首先在数据库中检查重复项,并且如果找到请求,也拒绝该请求,我在很短的时间内看到了一些重复订单。

我的理论是,在缓慢提交期间,第一个订单处于不稳定状态,并且当创建重复订单时,重复检查会通过,因为之前的订单尚未提交到数据库。我有几个问题:

  1. 这可能吗?
  2. 如果是这样,我怎么能验证这是发生了什么?
  3. 最可能的原因是什么?
  4. 我应该采取哪些措施来确定原因?
  5. 到目前为止,我已经尝试过查看"性能监视器,"但我不确定我应该寻找什么,并且没有看到任何相关的东西。同样,我不清楚如何找到相关的日志文件,或者我是否需要打开其他日志记录,或者如何执行此操作。

1 个答案:

答案 0 :(得分:1)

您所描述的内容是可能的,特别是对于多个并发用户同时使用的应用程序。

如果您可以在本地环境中重现它。您可以运行sql profiler以查看是否是这种情况。或者您可能需要在创建订单的代码块周围添加一些调试信息。

很难在不知道如何实现代码的情况下对原因发表评论(例如,您是否使用sql存储过程来检查订单是否存在并插入或使用某些ORM工具如实体框架,您是否已使用事务和锁定等)

此外,如果单个记录插入时间超过10秒,我建议您修复它,因为它只需要太长时间。