2012-02-10 157 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.

此服務器上的活動非常輕 - 這是一個帶有1 GB RAM的dv盒。我有一個magento安裝,運行速度比同類設置的負載高出5倍。

我開始記錄所有查詢超過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 2012-02-10 19:49:40

+0

我知道EAV模型的慢度。此問題與EAV表格無關。我有magento在其他服務器上運行得非常好。 – Brian 2012-02-10 20:06:28

+0

這只是我的星期五巨魔;)你是否試圖對你懷疑速度慢的查詢做一個解釋? – FMaz008 2012-02-10 20:38:48

回答

0

第一:(process_id='8') - '8'char/varchar,不int,因此MySQL轉換價值第一。

在我的系統上,我花了很長時間(大於一秒)更新users.last_active_time。

原因是我有幾個查詢需要很長時間才能執行。當我加入他們的用戶表。這導致表格阻塞讀取。通過SELECT進行死鎖。

我重寫了查詢:JOIN:子查詢和圖標消失了。