我有一个用于报告目的的表,每次用户从Web运行报表时都会插入数据。根据报告的参数,插入可以从单行变化到几千行。用于插入的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
谢谢
答案 0 :(得分:3)
跑吧:
ALTER DATABASE [<dbname>] SET READ_COMMITTED_SNAPSHOT ON;
并且不再担心插入阻塞阻止报告。请参阅Choosing Row Versioning-based Isolation Levels。