sql >> Database >  >> RDS >> Mysql

PDO fetchall() prestatieoverwegingen?

Hypothetisch, als u alle 100.000 rijen in één antwoord moet uitvoeren, moet u PDO::MYSQL_ATTR_USE_BUFFERED_QUERY instellen naar false , voer de query uit en herhaal de resultatenset rij voor rij met fetch . Om dit uit te werken, buffert php de volledige resultatenset, ongeacht of je fetchAll() aanroept als PDO::MYSQL_ATTR_USE_BUFFERED_QUERY is ingesteld op waar.

Het voordeel is dat u het maximale geheugengebruik van het script drastisch vermindert en dat u eerder kunt beginnen met het streamen van uitvoer, hoewel de totale tijd tot voltooiing wel of niet langer kan duren.

Ik negeer andere dingen die je zou moeten overwegen in zulke extreme omstandigheden, zoals output buffering enz...



  1. Hoe veelvoorkomende problemen met MySQL-database op te lossen?

  2. onopgeloste verwijzing naar object [INFORMATION_SCHEMA].[TABLES]

  3. Volgorde van records wijzigen vanaf de front-end

  4. Meet databaseprestaties onder druk