1

我有一个用于报告目的的表格,每次用户从网络运行报告时都会插入数据。根据报表的参数,插入可以从单行到几千行不等。用于插入的 select 语句最多可以为插入运行 60 秒。它已经过优化,但由于数据库的复杂性,我无法进一步调整它。我的问题是 - 表格何时锁定以进行插入?是在调用存储过程时,在执行select语句时,还是在select语句执行完毕时?我想限制表被锁定的时间,以便在运行最多 50,000 行的大型报表时不会影响其他用户。

前任。

INSERT INTO reportTable
SELECT
   Column a,
   Column b
FROM
    Table a
    INNER JOIN
    Table b
       on b.ident = a.Bident

谢谢

4

1 回答 1

3

运行这个:

ALTER DATABASE [<dbname>] SET READ_COMMITTED_SNAPSHOT ON;

并且不再担心插入锁阻塞报告。请参阅选择基于行版本控制的隔离级别

于 2011-10-07T21:18:54.200 回答