Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Überlegungen zur Leistung von PDO fetchall()?

Wenn Sie alle 100.000 Zeilen in einer einzigen Antwort ausgeben müssen, sollten Sie hypothetisch PDO::MYSQL_ATTR_USE_BUFFERED_QUERY festlegen auf false , führen Sie die Abfrage aus und iterieren Sie die Ergebnismenge zeilenweise mit fetch . Genauer gesagt puffert PHP die gesamte Ergebnismenge, unabhängig davon, ob Sie fetchAll() aufrufen oder nicht, wenn PDO::MYSQL_ATTR_USE_BUFFERED_QUERY auf true gesetzt ist.

Der Vorteil besteht darin, dass Sie den maximalen Speicherverbrauch des Skripts drastisch reduzieren und früher mit dem Streamen der Ausgabe beginnen können, obwohl die Gesamtzeit bis zur Fertigstellung länger dauern kann oder auch nicht.

Ich ignoriere andere Dinge, die Sie unter solch extremen Umständen berücksichtigen sollten, wie Ausgabepufferung usw....