대규모 결과 세트에 대한 MySQLDB SSCursor의 효율적인 활용
수십만 개 이상의 행이 포함된 방대한 결과 세트를 처리할 때 효율적인 메모리 관리가 가능해집니다. 중대한. 따라서 MySQLDB SScursor(스트리밍 선택 커서)는 메모리 소비를 최소화하는 데 적합한 도구로 부각됩니다.
기본 커서와 SSCursor를 사용하는 Fetchall()의 차이점
대중적인 믿음과는 달리 SScursor에서 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