迭代器与数据库交互时如何表现?

问题描述 投票:0回答:1

进行像

SELECT * FROM people
这样的查询可能会造成严重的内存问题,通常称为“内存超出”。

许多程序员建议使用迭代器来减少内存消耗。迭代器是视频录制中的一种“播放和暂停”机制;这意味着它们会产生一个值,它们会暂停,然后继续,避免一次生成所有值。这是一个 Python 示例:

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

现在,当谈到使用迭代器从数据库中获取数据时,我感到非常困惑。我总是被告知要限制对数据库的查询数量,因为它可能成为瓶颈。看来使用迭代器可能会增加查询数量。是这样吗?迭代器如何处理数据库查询?这是“短毯问题”的另一个例子吗?此外,如果在获取阶段使用迭代器将数据添加到数据库中会发生什么?

附注我的问题是一般性的,与任何特定的编程语言无关。

sql database iterator
1个回答
1
投票

RDBMS 在使用迭代器时可以发挥作用。 DB客户端发送请求,DB服务器响应该请求并返回第一批行;一旦客户端确认收到,服务器就会暂停并等待。

数据库客户端库允许程序使用迭代器“消化”数据,直到程序迭代完已经缓冲的数据。此时,它请求 RDBMS 继续发送数据。

由程序决定如何处理数据。如果它不将所有内容存储在内存中,则它仅消耗数据库客户端缓冲的数据。

© www.soinside.com 2019 - 2024. All rights reserved.