Ho una domanda: ho costruito una grande applicazione con Yii e InnoDB ed è venuto al problema, che l'inserimento/aggiornamento durate davvero molto tempo, ecco il mio rapporto php:Yii Framework - InnoDB vs MyISAM
InnoDB: Admin update User 55.247464895248 secondi ekuskov aggiornamento utente 13.282548904419 secondi doriwall aggiornamento utente 0.002094030380249 secondi
MYISAM: Admin update User 7.8317859172821 secondi ekuskov aggiornamento utente 1.6304929256439 secondi doriwall aggiornamento utente ,00208592414855 96 secondi
Qualcuno può suggerire qualche soluzione per accelerare l'inserimento/aggiornamento?
MODIFICA --------------------------------------------- -
ora ho usato un po 'molto semplice via di inserimento:
public function run($args) {
$time = -microtime(true);
$begin = DateTime::createFromFormat('Y-m-d H:i:s', '2010-01-01 00:00:00');
$end = DateTime::createFromFormat('Y-m-d H:i:s', '2013-01-01 00:00:00');
$end->add(new DateInterval('P1D'));
$interval = DateInterval::createFromDateString('1 day');
$days = new DatePeriod($begin, $interval, $end);
foreach ($days as $day) {
echo "i";
$track = new TimeTracking();
$track->user_id = 25;
$track->date = $day->format('Y-m-d H:i:s');
$track->active = 4;
$track->save(false);
}
$time += microtime(true);
echo count($days)." items insert - $time seconds\n";
}
e ora i tempi INSERISCI sono i seguenti:
InnoDB: articoli inseriscono - 72.269570827484 secondi
MyISAM: articoli inseriscono - ,87537479400635 secondi
[EDIT] E Adesso contavo per l'intero metodo Save e Yii Modelli "save()" Funzione:
UPDATE: modello-> Salva (falsi) - 0.1096498966217 secondi
UPDATE : regolatore funzione di risparmio() - 0.1302649974823 secondi
Crea: modello-> Salva (falsi) - 0.052282094955444 secondi
CREATE: controllore funzione di risparmio() - 0.057214975357056 secondi
Perché il metodo save() richiede così tanto tempo?
[EDIT] Ho testato save() vs il comando() e durate stessa:
$track->save(false);
o
$command = Yii::app()->db->createCommand();
$command->insert('timeTracking', array(
'id'=>NULL,
'date'=>$track->date,
'active'=>$track->active,
'user_id'=>$track->user_id,
));
EDIT ------ -----------------------
E qui c'è una statistica per l'inserimento di 1.097 oggetti :
save(): 0.86-0.94,
$command->insert(): 0.67-0.72,
$command->execute(): 0.46-0.48,
mysql_query(): 0.33-0.36
FINALMENTE risposta: Se si desidera utilizzare alcuni massicci INSERT o UPDATE metodi che si dovrebbe prendere in considerazione per creare le funzioni con chiamate dirette MYSQL, non ci si risparmia quasi il 70% del tempo di esecuzione.
saluti,
Edgar
Questo non suona giusto. Forse dovresti controllare le tue domande. Qual è la differenza tra gli utenti admin, ekuskov e doriwall? –
puoi pubblicare le tue strutture da tavolo? – DarkMukke
http://d.pr/i/P6zp La funzione aggiorna solo i tempi di equilibrio per ciascun utente. – ekussberg