繁体   English   中英

内存,磁盘和数据库获取的数据

[英]Memory, disk and databases fetched data

假设我要从关系数据库中提取一个大数据集。 但是,我不想填充超过100MB的内存(这是一个任意限制)。 另外,我想对该数据集执行某些操作。

通常,在像python这样的语言中,我只是将所有获取的数据放入内存中。 但我想避免这种情况。 因此,可能我必须引入中间步骤,在该步骤中,将查询的数据写入磁盘,然后逐块处理它们。

处理这种情况的最佳方法是什么?

这样的事最近发生在我身上。 没有唯一索引(现在有一个索引)的数据库表一次又一次地插入相同的数据,最多重复30次。 该表大约有5500万行。

我编写了一个Python程序来查找一行并删除所有重复项。 甚至在fetchone调用之前,mysqldb在尝试创建查询时崩溃。

但是,我能够将数据提取到电子表格中,使用Python的CSV库进行过滤,然后替换表中的数据。 一团糟。

知道所涉及的数据库品牌/类型以及您所使用的平台会很有帮助,但是平台的重要性要小一些。

编辑:

通常,我发现有时候创建要批量加载的数据可能比一次更新一个表快很多。 我今天通过减少一些计算和打印税单的经验证明了这一点。 该程序将打印定界的“报告”(要加载到MySQL中的数据),并在计算并打印完帐单后将其批量加载,而不是更新交易块中的表(一次一行)。 速度提高非常明显。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM