![](/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.