2010-09-28 11 views
1

J'insère des données dans une base de données sql server 2005 en utilisant NHibernate. Avant d'insérer un objet, je vérifie s'il existe déjà en fonction de sa clé primaire. Chaque 100000 ou plus de recherches cela semble jeter une exception (si je fais la même chose via SQL, il faut aussi des âges). Une défragmentation du disque dur semble aider mais semble un peu étrange que je doive faire ceci - ou est-ce normal?SQL Server 2005 problème - defrag nécessaire?

BTW je sais que je pourrais utiliser en vrac, mais avait insert opter pour NHibernate pour certaines raisons ...

Merci.

Christian

+0

L'erreur SQL serait vraiment utile. –

+0

Je viens d'obtenir une exception de délai d'expiration dans mon code C#. – cs0815

+1

On dirait un problème de verrouillage pour moi. –

Répondre

1

probablement être la croissance du fichier de base de données si elle est 100k inserts. Avez-vous:

  • réduire la base de données du tout?
  • ont un grand incrément de croissance?
  • L'initialisation de fichier instantanée n'est-elle pas activée?

Défragmenter le système de fichiers est seulement utile pour générer IO temporisations

+1

Kimberly L. Tripp a un excellent article sur l'initialisation de fichiers instantanée [ici] (http://sqlskills.com/BLOGS/KIMBERLY/post/Instant-Initialization-What-Why-and-How.aspx). –

1

Il semble très probable que le temps que vous voyez est due à la croissance du fichier de base de données. Cela expliquerait la fréquence constante de la lenteur. Je ne suis pas sûr à quelle fréquence cela se produit ou le plan à long terme pour la table. Cependant, vous souhaiterez peut-être agrandir manuellement le fichier à une taille beaucoup plus grande pour éviter les frais généraux de la croissance automatique.