概要
MySQL で大規模な結果セットを扱う場合、メモリを節約することが重要です。 SSCursor (サーバーサイド カーソル) は、このようなシナリオを効率的に処理するソリューションを提供します。
fetchall() の SSCursor とベース カーソル
fetchall() は、すべての行を取得します。結果セットがメモリに格納されます。これは最も効率的なアプローチのように思えるかもしれませんが、大規模なデータセットでは大幅なメモリ オーバーヘッドが生じます。このような場合、SSCursor はベース カーソルよりも優れたパフォーマンスを発揮します。 SSCursor はサーバー側のポインターを保持し、クライアント側のメモリ使用量を削減します。
SSCursor からの行のストリーミング
はい、行を 1 つずつストリーミングすることも、またはSSCursor からのチャンク単位。ストリーミングに対する fetch() 以外のアプローチは次のとおりです。
<code class="python">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)</code>
このアプローチでは、結果セット全体をメモリに取得せずに行を反復処理するため、大規模なデータセットを効率的に処理できます。
以上がSSCursor は、大規模な MySQL 結果セットを処理する際のメモリ使用量の最適化にどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。