高效利用MySQLDB SSCursor 處理大型結果集
處理涉及數十萬或更多行的龐大結果集時,高效的內存管理變得尤為重要至關重要的。因此,MySQLDB SScursor(串流選擇遊標)成為最小化記憶體消耗的合適工具。
有基礎遊標的Fetchall() 與SSCursor 的差異
與普遍看法相反,從SScursor 執行fetchall() 比從基本遊標執行fetchall() 消耗更多內存。這是因為 SScursor 會以區塊的形式從伺服器增量取得結果,而 fetchall() 會將整個結果集下載到記憶體中。因此,對於記憶體受限的情況,使用 fetchall() 變得違反直覺。
使用SSCursor 迭代結果
為了有效地逐行流式傳輸來自SScursor 的結果,基於行,採用以下方法:
import MySQLdb.cursors
connection=MySQLdb.connect(
host="thehost",user="theuser",
passwd="thepassword",db="thedb",
cursorclass = MySQLdb.cursors.SSCursor)
cursor=connection.cursor()
cursor.execute(query)
for row in cursor:
print(row)
此方法迭代結果集,而不將整個內容儲存在記憶體中,消耗最少的資源。
其他最佳化
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3