MySQL データベースで大規模な結果セットを操作する場合、メモリ消費が問題になることがあります。 MySQLDB ライブラリは、この問題を軽減するための SScursor クラスを提供し、大量のデータをより効率的に処理する方法を提供します。
fetchall() のメモリ使用量
一般的なものとは異なります基本カーソルと SScursors の両方で fetchall() を実行すると、同じ量のメモリが消費されます。結果セット全体をメモリ内に保持するのに十分な大きさのバッファを割り当てます。
SScursor によるストリーミング
SScursor の強みは、データをロードせずに結果を反復処理できることにあります。データセット全体をメモリに格納します。 SScursor を使用してストリーミングを実現するには:
<code class="python">def stream_rows(cursor): for row in cursor: yield row</code>
<code class="python">for row in cursor: # Process row</code>
最も効率的なストリーミング方法
最も効率的なストリーミング方法は、余分なループのオーバーヘッドを避けるため、ジェネレーターを使用することです。ジェネレーターは他の関数に渡したり、操作の処理やフィルター処理に直接使用したりできます。
以上がMySQLDB の SScursor を使用して大規模な結果セットを効率的にストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。