0

我正在开发一个在数据库上运行查询的项目,结果大于内存大小。我听说过内存池库,但我不确定它是否是解决此问题的最佳方法。
内存池库是否支持从磁盘写入和读取(作为需要多次解析的查询的结果)。还有其他一些方法可以实现这一目标吗?

PS
我正在使用 MySQL 数据库及其 C API 来访问数据库。

编辑:这是一个例子:
假设我有五个表,每个表都有一百万行。我想找出一张表与另一张表的相似程度,因此我为每个表创建了一个布隆过滤器,然后根据其余四个表中的数据检查每个过滤器。

4

3 回答 3

1

You should restructure your program to not use so much memory. Instead of pulling the "whole" (or large part) of the DB into memory you should use a cursor and incrementally update the datastructure your program is maintaining or incrementally change the metric you are querying.

EDIT: you added that you might want to run a bloom filter on the tables? Have a look at incremental bloom filters: here

于 2012-06-19T07:17:36.457 回答
1

通过使用辅助存储(例如磁盘)将逻辑内存扩展到物理内存之外通常称为交换,而不是内存池。您的操作系统已经为您完成了这项工作,您应该先尝试让它完成它的工作。

内存池库通过使用固定大小分配为内存分配提供更快的速度和实时可预测性,但不会增加您的实际内存。

于 2012-06-19T07:04:02.457 回答
0

物理地址扩展(PAE)怎么样

于 2012-06-19T07:09:34.867 回答