2012-05-17 1 views
1

Mon application implémente actuellement un objet FileSystemWatcher pour surveiller un répertoire (C: \ Incoming) pour la création d'un fichier (Input.xml).Le moyen le plus rapide de lire un fichier

J'utilise actuellement un objet Streamreader pour lire le fichier dans mon application, mais je suis préoccupé par les performances étant donné que les données seront utilisées pour effectuer des opérations dans une base de données SQL Server.

Quelle serait la façon la plus rapide de lire le fichier en mémoire (ou est-ce que je l'utilise déjà)?

+0

Quelles sont les plages de taille des fichiers? Quel code exact utilisez-vous pour lire ces fichiers? –

+2

Vous interagissez avec la partie la plus lente du système (disque physique). Il n'y a vraiment aucune raison de se fier à la performance. Si vous en avez besoin * plus rapidement, vous pouvez envisager d'utiliser un disque RAM ou un disque SSD pour votre dossier d'entrée. – tzerb

+1

Quel est le rôle de SQL-Server? _ "Cependant, je suis préoccupé par les performances étant donné que les données seront utilisées pour effectuer des opérations dans une base de données SQL Server." _ Notez que vous pouvez ** importer en masse ** dans sql-server directement à partir de fichiers. http://msdn.microsoft.com/en-us/library/ms188365.aspx –

Répondre

1

Vous utilisez l'approche standard de la tâche. Si vous devez charger les données (grandes données) dans une base de données, le goulot d'étranglement sera entre votre code et la base de données, sauf si vous utilisez une technique BULK INSERT, par opposition à l'insertion des lignes une par une. Les détails de cela dépendent du serveur de base de données particulier. Cela ne pose cependant aucun problème si les fichiers sont relativement petits, auquel cas la charge sera répartie de façon plus égale. Même alors, je ne me soucierais pas beaucoup de la vitesse d'accès au disque.

Assurez-vous que le fichier est complètement écrit avant de commencer à le lire. Par exemple, essayez de l'ouvrir pour une lecture exclusive en premier. Cela aide un peu si le fichier est rendu accessible par une opération de changement de nom plutôt que par une opération de création, surtout si vous attendez que beaucoup de fichiers arrivent, parce que votre serveur n'a pas à attendre que le fichier soit complètement écrit. Cela signifie essentiellement que le fichier doit d'abord être écrit avec un nom de fichier pour lequel vous ne regardez pas.

Questions connexes