2012-02-10 16 views
3

私はmagentoを使用しており、サイトでは速度が非常に遅いです。サーバーには非常に軽い負荷があります。私はCPU、ディスクのI/Oを確認しており、メモリは常に30%以下の軽度です。 APCキャッシングが有効になっています - 私は新しい遺物を使ってサーバーを監視しています。問題は非常にはっきりと挿入/更新されています。スローMySQL InnoDB挿入と更新

すべての挿入および更新ステートメントに対する遅さを切り分けました。 SELECTは高速です。私のアプリケーションやコマンドラインmysqlから実行された場合でも、テーブルへの非常に単純な挿入/更新は2-3秒かかります。

例:

UPDATE `index_process` SET `status` = 'working', `started_at` = '2012-02-10 19:08:31' WHERE (process_id='8'); 

この表は、9行、主キー、及びその上に1つの指数を有します。

すべての挿入/更新で遅さが発生します。私はmysqltunerを実行して、すべてが良く見える。また、innodb_flush_log_at_trx_commitを2に変更しました。

このサーバのアクティビティは淡々としています.1GB RAMのdvボックスです。私は同じようなセットアップで5倍の負荷で100倍のスピードで動作するmagentoをインストールしました。

すべてのクエリを2秒間ログに記録するようになりました。すべての挿入と全文検索のようです。

誰でもお勧めしますか?ここ

はテーブル構造である:

CREATE TABLE IF NOT EXISTS `index_process` ( 
    `process_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `indexer_code` varchar(32) NOT NULL, 
    `status` enum('pending','working','require_reindex') NOT NULL DEFAULT 'pending', 
    `started_at` datetime DEFAULT NULL, 
    `ended_at` datetime DEFAULT NULL, 
    `mode` enum('real_time','manual') NOT NULL DEFAULT 'real_time', 
    PRIMARY KEY (`process_id`), 
    UNIQUE KEY `IDX_CODE` (`indexer_code`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ; 
+1

EAVモデルの場合、Magentoは設計が遅いです。 – FMaz008

+0

私はEAVモデルの遅さを知っています。この問題はEAVテーブルとは関係ありません。私はmagentoを他のサーバでうまく動かせています。 – Brian

+0

それは私の金曜日のトロルでした;)遅いと思われるクエリでEXPLAINを実行しようとしましたか? – FMaz008

答えて

0

まず:(process_id='8')から'8'char/varcharではなく、intので、MySQLの変換値を第一。

私のシステムでは、users.last_active_timeを更新するのに長い時間(1秒以上)がかかっていました。

私は、実行するのに長い時間がかかりました。私はusersテーブルのためにそれらを結合しました。これにより、読み取るテーブルがブロックされました。 SELECTによるデッドロック。

次のクエリを次のように書き直しました。JOIN to:サブクエリとporblemはなくなりました。

関連する問題