対InnoDBは、私は疑問を持っている:私はYiiのInnoDBテーブルで大きなアプリケーションを構築し、問題に来ている、挿入/更新durate本当に長い時間が、ここに私のPHPのレポートであること:のYii Frameworkは - MyISAMの
INNODB: adminユーザーの更新55.247464895248秒 ekuskovユーザー更新13.282548904419秒 doriwallユーザー更新0.002094030380249秒
MYISAM: 管理者ユーザー更新7.8317859172821秒 ekuskovユーザー更新1.6304929256439秒 doriwallユーザー更新0.00208592414855 96秒
誰もが挿入/更新を高速化するいくつかのソリューションを提案できますか?
EDIT ---------------------------------------------項目が挿入 - 0.87537479400635: -
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";
}
となりましたINSERT時間は以下の通りです:::
InnoDBの72.269570827484秒
MyISAMの項目が挿入 -
は今、私はいくつかの非常に単純なインサートループを使用しました秒
[EDIT]そして今、私は全体のSAVE方法とYiiのモデルのための時間をカウントして "(保存)" 機能:
UPDATE:モデル - >(false)を保存 - 0.1096498966217秒
UPDATE :セーブ機能コントローラ() - 0.1302649974823秒
は、CREATE:モデル - >(false)を保存 - 0.052282094955444秒
CREATE:セーブ機能コントローラ() - 0.057214975357056秒
なぜsave()メソッドに時間がかかりますか?
[EDIT]私は命令対()保存テストしている()と彼らdurate同じ:
$track->save(false);
または
$command = Yii::app()->db->createCommand();
$command->insert('timeTracking', array(
'id'=>NULL,
'date'=>$track->date,
'active'=>$track->active,
'user_id'=>$track->user_id,
));
EDIT ------ -----------------------
ここに1,097個のオブジェクトを挿入するための統計情報:
save(): 0.86-0.94,
$command->insert(): 0.67-0.72,
$command->execute(): 0.46-0.48,
mysql_query(): 0.33-0.36
FINALLY答え:を、あなたが実行時間のほぼ70%を保存しますが、直接MYSQLコールで関数を作成するために検討すべきいくつかの大規模なINSERTまたはUPDATEメソッドを使用したい場合。あなたがそうのようなトランザクションであなたのコマンドをラップする必要がありYiiのInnoDBテーブルで
よろしく、
エドガー
これは正しくはありません。たぶんあなたはあなたの質問をチェックする必要があります。管理者、ekuskov、doriwallユーザーの違いは何ですか? –
テーブル構造を投稿できますか? – DarkMukke
http://d.pr/i/P6zp この関数は、各ユーザーの残高を更新するだけです。 – ekussberg