繁体   English   中英

使用数据库时,迭代器如何工作?

[英]How do Iterators act when working with databases?

进行诸如SELECT * FROM people这样的查询可能会导致严重的内存问题,即,许多人都称其为“内存超出”。

许多程序员调用使用迭代器来减少内存消耗。 迭代器是一种“播放n暂停视频记录”,这意味着它们产生一个值,停止,产生一个值,依此类推,避免一次生成所有的值。 Python中的示例如下:

def myIterator():
  for i in range(10):
    yield i * 2

现在,当涉及到使用迭代器从数据库中获取数据时,我感到非常困惑。 总是被告知要限制对数据库的查询数量,因为它可能成为瓶颈,而且在我看来,使用迭代器来增加查询数量。 是这样吗? 迭代器如何与数据库查询一起使用? 这又是短床单的众所周知的问题吗? 另外,如果在使用迭代器的访存阶段中,一些数据添加到数据库中,会发生什么情况?

PS我的问题与特定的编程语言无关,但总的来说。

使用迭代器时,RDBMS可以提供​​帮助。 数据库客户端发送一个请求,数据库以第一批行答复该请求; 客户端确认收据后,服务器将停止发送并等待。

DB客户端库允许使用迭代器的程序“消化”数据,直到该程序迭代经过已缓冲的内容为止。 此时,它要求RDBMS继续发送数据。

由程序决定如何处理数据。 如果它没有将全部内容存储在内存中,则它仅使用与DB客户端缓冲的一样多的数据。

暂无
暂无

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

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