簡體   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