Over View
我有一项服务,将数据从SQL Server表中提取到数据集中,然后使用此数据集通过Internet将数据上载到中央服务器。
我无法删除数据集概念,因为我访问的数据库是一个不同的应用程序,其中许多用户同时连接到它,并且该数据库 NOT 具有适当的索引或结构。因此,当我的服务逐行查询表时,数据库会锁定。因此,我必须一次性选择我需要的所有数据并释放数据库。
挑战
我面临的挑战是,当涉及到具有数百万行的表时,服务器内存(任务管理器中的私有工作集)使用量超过2 GB,因此在服务器挂起的低端服务器上。
问题
有什么方法可以将应用程序设置为使用系统的虚拟内存,因为虚拟内存可以设置为任何值。
或者我该怎么做才能最大限度地减少内存使用而不必继续查询主数据库?
答案 0 :(得分:1)
看看Memory-Mapped Files这就是你要找的东西。
内存映射文件包含虚拟文件的内容 记忆。文件和内存空间之间的这种映射使得能够实现 应用程序,包括多个进程,来修改文件 直接读写内存。从.NET开始 在框架4中,您可以使用托管代码访问内存映射文件 与本机Windows函数访问内存映射文件的方式相同, 如在MSDN中管理Win32中的内存映射文件中所述 库。