Mysql
 sql >> Database >  >> RDS >> Mysql

Zend Framework e MySQL - molto lento

Suggerimenti:

  • Memorizza la tabella nella cache metadati . Per impostazione predefinita, Zend_Db_Table tenta di scoprire i metadati sulla tabella ogni volta che viene istanziata l'oggetto tabella. Usa una cache per ridurre il numero di volte che deve farlo. Oppure codificalo nella tua classe Table (nota:le tabelle db non sono modelli ).

  • Usa EXPLAIN per analizzare il piano di ottimizzazione di MySQL. Sta usando un indice in modo efficace?

    mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
    
  • Usa BENCHMARK() per misurare la velocità della query, non utilizzando PHP. La sottoquery deve restituire una singola colonna, quindi assicurati di restituire una colonna non indicizzata in modo che la query debba toccare i dati invece di restituire solo una voce di indice.

    mysql> SELECT BENCHMARK(1000, 
      (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
    
  • Nota che Zend_Db_Adapter lazy-carica la sua connessione db quando si effettua la prima query. Quindi, se c'è qualche lentezza nella connessione al server MySQL, accadrà mentre crei un'istanza dell'oggetto Table (quando interroga i metadati). Qualche motivo per cui questo potrebbe richiedere molto tempo? Ricerche DNS , forse?