大多数用法/教程/手册解释了如何在可管理数据库的上下文中使用这些方法。
因此,如果User.where( some condition)
将返回数十或数百的结果,那么认为Rails / DB /服务器可以处理它是合理的
如果相同的查询返回数千或数十万条记录的结果,会发生什么?我敢说百万条记录吗?
它取决于什么? Rails或硬件(如果有的话)强制限制了什么?
最重要的是,有没有办法在Rails中处理如此大的数据集(不会崩溃一切?)
答案 0 :(得分:3)
基本的是,如果结果集太大,PostgreSQL会将结果集实现为磁盘。这意味着您可以获得速度,但它可以为其他操作保留内存。
一般来说,PostgreSQL中很少需要向客户端发送数十万或数百万行。关键是构建您的查询(并根据需要使用适当的SQL扩展)以仅返回您的前端需要的数据,在数据库中正确聚合等。我遇到过许多人认为将这样的聚合逻辑放入db会降低速度(并且存在CPU时间成本),但是在磁盘I / O等待中,该区域的成本往往得到很好的回报。时间成本等。
我要问的基本问题是"为什么你需要看到数百万条记录?"您基本上是说要将这些内容保存在内存中或将它们存储在磁盘上,然后通过网络传输它们,然后接收它们,然后处理它们。这不是效率的典范。处理数百万条靠近存储的记录更好远,因此为其他记录交换一些CPU成本。
如果你需要在混合或DW环境中具有更复杂的内部查询并行性的东西,那么请使用Postgres-XC而不是vanilla PostgreSQL。这具有显着的复杂性成本,但是在大型环境中使得其他无法解决的问题可以解决。
答案 1 :(得分:2)
好的,让我们开始:
如果你试图将一桶水放入玻璃杯中会发生什么?
这就是说:
无论如何,我认为如果你要处理数百万/数万亿的数据,你应该考虑转移到像Teradata这样的日期仓库。