身份插入 - 性能

时间:2010-10-26 07:44:19

标签: sql-server insert identity

我有一个解决方案,我在其中使用GUID而不是Identity来插入行。 Guid是在c#中生成的。

我有另一个解决方案,其中表,索引等是相同的,但我使用标识而不是GUID,让Sql-server生成它们。

在后一种情况下,我遇到了性能问题......想法?

修改

我真的很抱歉!我回到家安装了探测器,看到我正在比较苹果和梨......我的一个很大的失误。我正在调用不同的sql。现在持续时间大致相同。

2 个答案:

答案 0 :(得分:1)

老实说,我希望性能问题与guid一致。当你使用guid时,如果使用newid()而不是newsequentialid(),你就有可能进行页面拆分,因为新记录被插入到表格的中间而不是结尾。

答案 1 :(得分:0)

为了帮助您解决问题,我们首先需要有关您的配置和效果指标的更多信息。

环境:

  • 您正在运行哪个版本的SQL Server?
  • 什么是CPU和RAM规范?
  • 您的存储子系统的配置是什么?
  • 提供表架构和关联的索引定义。
  • 提供演示如何执行插入的测试代码。

性能:

  • 您在插入期间在服务器上看到了什么 wait_types ,即SQL Server正在等待什么资源?你是CPU绑定/磁盘绑定还是你有页面争用。
  • wait_types的不同取决于您使用Identity Vs GUID运行测试的时间吗?

初步假设/推测:

在执行标识插入时,您可能会看到页面争用,因为索引中的前导列不断增加,竞争资源将是B树中的最后一页。

在我们为您提供更多细节之前,这当然只是一种理论。

相关问题