oll*_*lle 2 performance sql-server
我正在运行一些性能测试,我从 900.000 条记录的数据集开始,更新需要 10 秒或每秒大约 90000 条记录。然后我将记录数增加到 9.000.000,更新耗时 170 秒或每秒更新约 52941 条记录。
为什么当记录总数增加时每秒更新的记录数会下降?
数据中的分布是一样的,较大的集合是复制10次的较小的集合。自从我复制了 10 次数据以来,数据和日志文件的大小确实增加了。在那之后我确实缩小了日志文件。此时数据库服务器上没有其他工作负载。
执行更新的存储过程如下:
CREATE PROCEDURE updatePoints
@ids NVARCHAR(MAX)
AS
DECLARE @points1 INT
DECLARE @points2 INT
SET @points1 = 1
SET @points2 = 2
UPDATE p
SET points = (0 + CASE WHEN p.[x] = m.[x] AND p.[y] = m.[y]
THEN @points1
ELSE 0
END +
CASE WHEN p.[u] = m.[u] AND p.[v] = m.[v]
THEN @points2
ELSE 0
END)
FROM p
JOIN m ON m.id = p.mid
JOIN platform.Split(@ids) i ON i.Value = m.id
WHERE m.[status] = 1
Run Code Online (Sandbox Code Playgroud)
如果您发布执行计划,可能会有我们可以强调的明显差异。除了计划之外,它可能是:
需要更多信息(查询、示例数据、模式、计划)以获得更好的答案。
归档时间: |
|
查看次数: |
207 次 |
最近记录: |