C# 大型数据集到虚拟内存?

C# 大型数据集到虚拟内存?,c#,sql,sql-server,memory,virtual,C#,Sql,Sql Server,Memory,Virtual,俯视 我有一个从SQLServer表中提取数据到数据集的服务,然后使用该数据集通过internet将数据上传到中央服务器 我无法删除数据集概念,因为我正在访问的数据库属于不同的应用程序,其中许多用户同时连接到该数据库,并且该数据库没有适当的索引或结构。因此,当我的服务逐行查询表时,数据库会锁定。因此,我必须一次选择所有需要的数据并发布数据库 挑战 我面临的挑战是,当一个表有数百万行时,服务器内存(任务管理器中的专用工作集)使用量超过2GB,因此在低端服务器上服务器会挂起 问题 是否有任何方法可以

俯视

我有一个从SQLServer表中提取数据到数据集的服务,然后使用该数据集通过internet将数据上传到中央服务器

我无法删除数据集概念,因为我正在访问的数据库属于不同的应用程序,其中许多用户同时连接到该数据库,并且该数据库没有适当的索引或结构。因此,当我的服务逐行查询表时,数据库会锁定。因此,我必须一次选择所有需要的数据并发布数据库

挑战

我面临的挑战是,当一个表有数百万行时,服务器内存(任务管理器中的专用工作集)使用量超过2GB,因此在低端服务器上服务器会挂起

问题

是否有任何方法可以将应用程序设置为使用系统的虚拟内存,因为虚拟内存可以设置为任何值

或者,在不必继续查询主数据库的情况下,我应该如何最大限度地减少内存使用

看看这就是你要找的

内存映射文件包含虚拟内存中的文件内容 记忆。文件和内存空间之间的这种映射使 应用程序,包括多个进程,通过 直接读写到内存中。从.NET开始 框架4中,您可以使用托管代码访问内存映射文件 与本机Windows函数访问内存映射文件的方式相同, 如在MSDN中管理Win32中的内存映射文件中所述 图书馆


谢谢,让我试试。你为什么不从read_committed切换到snapshot_isolation呢?使用快照隔离,您的读取查询不会锁定数据库谢谢,让我使用快照隔离作为死锁的解决方案。