![](/img/trans.png)
[英]How to maintain SQL scripts when developing an application working against many databases
[英]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.