2010-09-28 80 views
1

我使用NHibernate将一些数据插入sql server 2005数据库。在插入一个对象之前,我根据它的主键检查它是否已经存在。每100000左右查找这似乎会抛出一些异常(如果我通过SQL做同样的事情,它也需要年龄)。硬盘碎片整理似乎有帮助,但似乎有点奇怪,我必须这样做 - 或者这是正常的?sql server 2005问题 - 碎片整理必要?

BTW,我知道,我可以用批量插入而不得不选择NHibernate的某些原因...

感谢。

基督教

+0

SQL错误真的有帮助。 – 2010-09-28 16:30:08

+0

我只是在我的c#代码中得到一个超时异常。 – cs0815 2010-09-28 16:31:56

+1

听起来像是一个锁定问题给我。 – 2010-09-28 16:36:22

回答

1

可能是数据库文件增长,如果是100K的插入。你是否:

  • 缩小数据库呢?
  • 有很大增长吗?
  • 没有启用即时文件初始化?

碎片整理文件系统仅用于生成IO超时

+1

Kimberly L. Tripp有关于即时文件初始化的优秀文章[这里](http://sqlskills.com/BLOGS/KIMBERLY/post/Instant-Initialization-What-Why-and-How.aspx)。 – 2010-09-28 16:52:01

1

这听起来很可能你看到的超时是由于数据库文件的增长非常有用。这将解释缓慢的一致频率。我不确定这种情况发生的频率或表格的长期计划。但是,您可能希望手动将文件扩展到更大的大小以避免自动增长的频繁开销。