2012-04-12 88 views
6

我插入一個簡單的小表5點的屬性和1000行。MySQL的:插入性能INNODB VS MYISAM

我觀察到當發動機INNODB,每個插入件正在0.03 - 0.05秒。 我將引擎更改爲MYISAM,然後插入更快。它需要0.001 - 0.003。

有什麼問題。 innodb_flush_log_trx_commit = 1默認情況下。我就是這樣。 這是我的innodb設置。

innodb_log_buffer_size : 1MB 
innodb_log_file_size : 5MB 
innodb_buffer_pool_size: 8MB 
innodb_flush_log_trx_commit = 1 

我不能能夠計算出了什麼錯。 在此先感謝。 Regards, UDAY

+0

你應該嘗試http://dba.stackexchange.com/或http://serverfault.com – 2012-04-12 05:36:05

+0

感謝邁克張貼本。我做的。 – Uday 2012-04-12 05:39:50

+0

沒問題的人,祝你好運。 – 2012-04-12 05:40:09

回答

3

innodb_flush_log_at_trx_commit = 1表示每個事務都寫入日誌緩衝區。

設置爲0,以獲得更好的性能,甚至更好的嘗試做一個交易(不要忘了到底commiting)中的所有刀片。

你可以看一下http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html上的innodb_flush_log_at_trx_commit更多的細節和其他變量

+0

嗨阿杰曼,在這裏我很關心爲什麼這個變量設置爲1,它顯示了一些非常低的通過像120K插入每小時。保持一個側面改變這個值設置爲2,什麼可能是這個值設置爲1 – Uday 2012-04-25 11:28:53

+0

之所以這樣糟糕的表現的原因是每個交易被寫入日誌緩衝區。如果現在插入時沒有手動將它們放入一個事務中,則每個都作爲事務執行,導致寫入磁盤。在正常的旋轉磁盤上寫入磁盤需要大約10-50ms ...如果在RAID控制器或SSD上有電池備份緩存,這可能會更好 – Argeman 2012-04-25 11:57:02

+0

您是否真的認爲它就像comodity服務器上的單個事務10 - 50毫秒。我不這麼認爲。沒有人能接受。我只在幾臺服務器上的所有服務器上都沒有這種性能。 – Uday 2012-04-26 04:28:27