首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OutOfMemoryException - Dataset <-> XML <-> Dataset

OutOfMemoryException - Dataset <-> XML <-> Dataset
EN

Stack Overflow用户
提问于 2010-04-20 00:42:13
回答 3查看 1.8K关注 0票数 0

我陷入了一个巨大的问题,我需要处理大量的数据。

我得到了一个有5个数据表的数据集。其中一个表大约有3000列和50,000条记录。

我需要在SQL数据库中将此数据集完全保存为XML,并需要稍后检索它。

我不能做任何设计更改来跳过它。当我执行dataset.GetXml()时,它返回一个抛出OutOfMemoryException的超长字符串。我知道字符串数据类型对携带数据有一定的限制。

但是在sql表中,xml列最多可以容纳2 Gb。那么,如何在数据库和应用程序之间来回移动此数据集呢?

谢谢

NLV

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-20 00:46:28

你的设计听起来有缺陷。为什么需要将整个表检索到内存中?取而代之的是分页操作-以较小的批次对表进行操作-比方说,一次操作1000条记录。

您甚至可能不需要这样做。通常,数据库应用程序只对正在更改的数据进行操作。如果您的应用程序需要修改10行,则只检索这10行。您不仅可以节省内存,还可以节省检索和post数据所需的全部时间。

表中有3000列?那味道(真的)很难闻。查看normalizing您的数据库。

我知道解决眼前的问题并继续前进会更容易。然而,如果你提前解决了(坦率地说,相当严重的)设计问题,那么从长远来看,你会有很多很少的问题。

票数 4
EN

Stack Overflow用户

发布于 2010-04-20 00:53:25

您将需要切换到所有涉及流的API,使用SqlDataReader (一次一行),而不是DataSet。此外,在可能的情况下,将数据流式传输到文件系统上的临时文件,而不是将其保存在内存中。

如果一行太多,那么您可能需要使用流API来与相关大列中的blob通信。

票数 1
EN

Stack Overflow用户

发布于 2010-04-20 00:54:42

3k列x 50k行=1.5亿个元素。每个元素有多少个字符?

我不得不问..。您为什么要使用数据库来存储此内容?您也可以将其存储在文件服务器上。

50k行很小,但3k列是极端的,而且XML中的所有行都非常臃肿

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2669184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档