SQL锁定 - 超时问题

时间:2014-10-01 15:29:58

标签: locking

我有一个SQL作业,它处理一个请求队列。它更新了Table1。这是一个漫长的过程,需要15分钟。

同时我的应用程序尝试从Table1读取记录并在网格中显示它们。相应的get proc已将tran隔离级别设置为uncommited。 当SQL作业运行时,我的应用程序总是在填充网格时超时。如果SQL作业没有运行,它可以正常工作。

我的proc有适当的隔离级别,所以我不知道为什么它还有时间。 想法?

以下是我的get proc的样子:

CREATE PROCEDURE dbo.MyGetProc(...)

AS 开始     设置交易隔离级别无法阅读;     SET NOCOUNT ON;

SELECT
    ...
FROM
    (
        SELECT
            ...
        FROM 
            dbo.Table1
            LEFT JOIN dbo.OtherTable1
        WHERE ...
        GROUP BY
         ...
    ) X
    INNER JOIN dbo.OtherTable2
    LEFT JOIN dbo.OtherTable3
    LEFT JOIN dbo.OtherTable4
    LEFT JOIN dbo.OtherTable5
    LEFT JOIN dbo.OtherTable6
    LEFT JOIN dbo.OtherTable6
ORDER BY
    ...

END

1 个答案:

答案 0 :(得分:1)

使用

使用(nolock)

从table1中选择*

读取提交的数据。