使用perl处理200万条记录

时间:2011-10-16 21:50:18

标签: perl

我在数据库上有200万条记录是否可以将它们全部存入并将它们存储在perl哈希引用中,而不会出现内存不足的问题?

3 个答案:

答案 0 :(得分:9)

你有什么理由将它们全部读入内存?编码的速度或简易性(即将整个事物视为hashref)。

如果是前者,那么我认为,你只需要一吨公羊。

如果是后者,那么有一些有趣的选择。例如,数据库的tie d接口看起来像Perl本机哈希,但实际上根据需要查询和返回数据。快速搜索CPAN会显示Tie::DBITie::Hash::DBD以及特定数据库,平面文件数据库和CSV文件的几个关联接口,包括我的Tie::Array::CSV

答案 1 :(得分:3)

一方面,处理哈希中的两百万个元素并非闻所未闻。但是,我们不知道您的记录有多大。无论如何,这听起来像一个XY问题。它可能不是您面临的问题的最佳解决方案。

为什么不使用DBIx::Class以便您的表可以像Perl类一样对待(它们本身就是美化的数据结构)?在DBIx::Class::Manual::DocMap有大量文档。这就是DBIx :: Class的真正含义;让你抽象出数据库的SQL细节,并将其视为一系列类。

答案 2 :(得分:2)

这完全取决于您的记录有多少数据。 Perl哈希和数组占用的内存比你想象的要多,尽管它并不疯狂。但同样,它完全取决于您的数据是什么样的以及您拥有多少RAM。如果你有RAM,Perl不会有任何问题。

相关问题