2012-04-12 79 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