【发布时间】:2014-03-12 05:17:59
【问题描述】:
我听说SQL Server SELECT statements causing blocking。
所以我有 EF 和 SQL Server 2008 的 MVC 应用程序,它与另一个经常写入一些数据的应用程序共享数据库。 MVC 应用程序会根据来自另一个应用程序的数据生成一些实时报告。
那么在这种情况下,是否有可能在生成报告时阻止其他应用程序尝试写入数据的某些表?
我尝试在生成报告时进行一些手动插入和更新,并且处理得很好。我误解了什么吗?
【问题讨论】:
-
无论实体框架如何,SQL Server 都需要设置 ISOLATION LEVEL,我在我的 SP 中有
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED用于从也有大量写入的表中读取记录。我不确定实体框架如何实现同样的效果...... -
@Habib 我不关心 EF 端的读取,我关心的是另一个应用程序中的写入
-
一个 SELECT 会导致阻塞,EF 也会为 SQL Server 生成一个 SELECT 语句,如果你的读取花费了太多时间,那么肯定会发生阻塞。
-
@Habib 我不介意 SELECT 是否会被阻止。我想避免阻止更新/插入。看起来 READ UNCOMMITTED 可以避免 SELECT 块,但不能避免 INSERT/UPDATE
标签: sql sql-server performance entity-framework blocking