我们有一个不断增长的 guid 列表,我们需要能够跟踪一个不断增加的整数 id 列表。我们当前的实现为每个 guid创建了一个没有缓存的序列。
但是,我们没有预料到生成数千个序列并从中选择会对数据库产生性能影响。由于一次使用的序列数量,计划缓存绝对是垃圾。服务器上的其他查询也受此影响。
有没有更好的方法来跟踪这些可以避免竞争条件的 guid 的不断增加的 id?每个 guid 需要从 1 开始并以 1 递增,而不会跳过数字。我们还需要能够从我们当前的序列中切换到这种新方法。
例如,当前 guid 'F642631D-AD28-4943-8340-5E7793EB82B8' 将创建序列 dbo.F642631D-AD28-4943-8340-5E7793EB82B8 并检索值select Next Value for dbo.F642631D-AD28-4943-8340-5E7793EB82B8
所以不是 100% 回答我发布的问题,但我们最终实现了选项重新编译,它停止了我们遇到的计划缓存问题
您是否排除了使用 IDENTITY 列?关联
在 IDENTITY 字段中,您指定起始值,然后每次增加多少,最常见的值是 (1,1),这似乎符合您的条件。
看起来你也可以在事后添加一个,用临时表尝试一下,它似乎工作,见下面的例子:
较大的表需要时间,并且会取出模式修改锁,因此您最好创建新表并加载它们。