【发布时间】:2014-02-22 14:28:59
【问题描述】:
我正面临一个问题,该进程每小时运行一次,每天向 SQL Server 2008 数据库中插入大约 3-4 百万行数据。
该架构由一个包含上述所有数据的大表组成,并在日期时间字段(按天)上有一个聚集索引、一个字段组合上的唯一索引以排除重复插入,以及更多2 个 varchar 字段的索引。
最近的典型行为是插入语句在完成之前暂停一段时间。整个过程过去需要 4-5 分钟,现在通常超过 40 分钟。
插入由.net 服务执行,该服务解析一系列xml 文件,执行一些数据转换,然后将数据插入数据库。服务根本没有改变,只是插入的时间比以前长了。
在这一点上,我愿意尝试一切。请让我知道您是否需要更多信息,并随时提出任何建议。
提前致谢。
【问题讨论】:
-
插入,你的意思是“追加”,绝对没有更新。我假设你的意思是 3-4 百万行是标准插入并且没有改变。
-
另外,如果这是每天添加 3-4 百万行。是否有任何东西被清除或数据大小只是在增长?
-
这似乎并不奇怪,你在表中的数据越多,你的唯一索引索引就越大,因此读取和检查以确保没有重复的时间越长正在插入的数据。您还必须在插入完成后更新所有索引,这将花费更多的数据。
-
此外,由于您的聚集索引位于日期时间字段上,如果您不只插入新数据(即插入的所有日期时间都比表中的最后一个日期时间新),您的索引将是越来越分散。
-
感谢所有 cmets,我的意思是添加新数据,是的,插入的日期时间实际上是时间戳,因此它们本质上是增量的
标签: sql .net sql-server-2008