私のアプリケーションは現在、FileSystemWatcher オブジェクトを実装して、ファイル (Input.xml) の作成のためにディレクトリ (C:\Incoming) を監視します。
現在、Streamreader オブジェクトを使用してファイルをアプリケーションに読み込んでいますが、SQL Server データベースで操作を実行するためにデータが使用されることを考えると、パフォーマンスが心配です。
ファイルをメモリに読み込む最速の方法は何ですか (または既に使用していますか)?
私のアプリケーションは現在、FileSystemWatcher オブジェクトを実装して、ファイル (Input.xml) の作成のためにディレクトリ (C:\Incoming) を監視します。
現在、Streamreader オブジェクトを使用してファイルをアプリケーションに読み込んでいますが、SQL Server データベースで操作を実行するためにデータが使用されることを考えると、パフォーマンスが心配です。
ファイルをメモリに読み込む最速の方法は何ですか (または既に使用していますか)?
タスクに対して標準的なアプローチを使用しています。
データ (つまり、大きなデータ) をデータベースにロードする必要がある場合、BULK INSERT
行を 1 つずつ挿入するのではなく、手法を使用しない限り、ボトルネックはコードとデータベースの間にあります。その詳細は、特定のデータベース サーバーによって異なります。ただし、ファイルが比較的小さい場合は問題ありません。その場合、負荷はより均等に分散されます。それでも、ディスク アクセスの速度はあまり気にしません。
読み取りを開始する前に、ファイルが完全に書き込まれていることを確認してください。たとえば、最初に排他読み取り用に開いてみてください。作成操作ではなく、名前変更操作によってファイルにアクセスできるようにすると、特に多くのファイルが到着することが予想される場合に少し役立ちます。サーバー側は、ファイルが完全に完了するまでビジー状態で待つ必要がないためです書かれています。これは基本的に、監視していないファイル名でファイルを最初に書き込む必要があることを意味します。
.NETにはSqlBulkCopyクラスもあります