我的应用程序当前实现了一个 FileSystemWatcher 对象来监视目录 (C:\Incoming) 以创建文件 (Input.xml)。
我目前正在使用 Streamreader 对象将文件读入我的应用程序,但是考虑到数据将用于在 SQL Server 数据库中执行操作,我担心性能。
将文件读入内存(或者我已经在使用它)的最快方法是什么?
我的应用程序当前实现了一个 FileSystemWatcher 对象来监视目录 (C:\Incoming) 以创建文件 (Input.xml)。
我目前正在使用 Streamreader 对象将文件读入我的应用程序,但是考虑到数据将用于在 SQL Server 数据库中执行操作,我担心性能。
将文件读入内存(或者我已经在使用它)的最快方法是什么?
您正在使用标准方法来完成任务。
如果您需要将数据(即大数据)加载到数据库中,瓶颈将在您的代码和数据库之间,除非您使用一种BULK INSERT
技术,而不是逐行插入。其细节取决于特定的数据库服务器。但是,如果文件相对较小,则无需担心,在这种情况下,负载将分布得更均匀。即便如此,我也不会太在意磁盘访问的速度。
在开始阅读之前,请确保文件已完全写入。例如,尝试先打开它以进行独占阅读。如果您可以通过重命名操作而不是创建操作来访问该文件,这确实会有所帮助,特别是如果您希望有很多文件到达,因为您的服务器端不必忙于等待文件完全完成书面。这基本上意味着该文件应首先使用您不观看的文件名写入。
.NET 也有SqlBulkCopy类