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

Zend Framework und Mysql - sehr langsam

Tipps:

  • Cache die Tabelle Metadaten . Standardmäßig Zend_Db_Table versucht jedes Mal, wenn Ihr Tabellenobjekt instanziiert wird, Metadaten über die Tabelle zu entdecken. Verwenden Sie einen Cache, um die Anzahl der erforderlichen Schritte zu reduzieren. Oder codieren Sie es in Ihrer Tabellenklasse fest (Hinweis:DB-Tabellen sind keine Modelle ).

  • Verwenden Sie EXPLAIN um den Optimierungsplan von MySQL zu analysieren. Wird ein Index effektiv verwendet?

    mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
    
  • Verwenden Sie BENCHMARK() um die Geschwindigkeit der Abfrage zu messen, ohne PHP zu verwenden. Die Unterabfrage muss eine einzelne Spalte zurückgeben, stellen Sie also sicher, dass Sie eine nicht indizierte Spalte zurückgeben, damit die Abfrage die Daten berühren muss, anstatt nur einen Indexeintrag zurückzugeben.

    mysql> SELECT BENCHMARK(1000, 
      (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
    
  • Beachten Sie, dass Zend_Db_Adapter lazy-loads seine db-Verbindung, wenn Sie die erste Abfrage machen. Wenn also die Verbindung zum MySQL-Server langsam ist, geschieht dies, wenn Sie das Table-Objekt instanziieren (wenn es Metadaten abfragt). Gibt es einen Grund, warum dies lange dauern könnte? DNS-Lookups , vielleicht?