Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PDO nie działa ze zbyt dużą liczbą rekordów, buforowanymi zapytaniami

Gdy używasz zapytania niebuforowanego, oznacza to, że zestaw wyników jest przesyłany strumieniowo z serwera MySQL. Tak więc połączenie, na którym działa (niebuforowane) zapytanie, jest zajęte, dopóki nie odczytasz ostatniego wiersza zapytania. W twoim przypadku połączenie to $MysqlConn .

(Buforowane zapytanie pochłania cały zestaw wyników do pamięci RAM twojego programu php i zwalnia połączenie. Używasz niebuforowanych zapytań, gdy cały zestaw wyników nie mieści się w pamięci RAM).

Zapytania niebuforowane powinny zostać wyraźnie zamknięte, gdy z nimi skończysz. Więc dodaj closeCursor() zadzwoń . W ten sposób.

while ($row = $ordStat->fetch(PDO::FETCH_ASSOC)) {
    $order_ids[] = $row['order_id'];
}
$ordStat->closeCursor();

Nie zaszkodzi też zamykanie buforowanych zapytań. To dobry nawyk.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustaw wartość =wartość +1 w bookshelf.js

  2. Łączenie wielu stołów bez wspólnego klucza

  3. Zrozumienie widoków w SQL

  4. Pandy Pythona do_sql 'dołącz'

  5. Instalacja i praca z MySQL 5 w systemie Windows 7