sql >> Databasteknik >  >> RDS >> Mysql

PDO fetchall() prestandaöverväganden?

Hypotetiskt, om du behöver mata ut alla 100 000 rader i ett enda svar, bör du ställa in PDO::MYSQL_ATTR_USE_BUFFERED_QUERY till false , kör frågan och iterera resultatuppsättningen en rad i taget med hämta . För att utarbeta, buffrar php hela resultatuppsättningen oavsett om du anropar fetchAll() om PDO::MYSQL_ATTR_USE_BUFFERED_QUERY är satt till sant.

Fördelen är att du drastiskt minskar den maximala minnesförbrukningen för skriptet, och du kan börja streama utdata tidigare, även om den totala tiden till färdigställande kanske eller inte kan ta längre tid.

Jag ignorerar andra saker du bör tänka på under sådana extrema omständigheter, som utdatabuffring etc...



  1. Kan Django-modeller använda MySQL-funktioner?

  2. Vilket är det bästa sättet att lagra trenddata?

  3. Revisionsloggning för produktdata?

  4. Så här fixar du dubbelkodade UTF8-tecken (i en utf-8-tabell)