|
前段时间把数据库的部分myisam表转变成了innodb了,感觉慢了好多。我知道autocommit对innodb性能有一定的影响,但不知道影响有这么大。如何关闭autocommit,请参考mysql禁用autocommit,以及遇到的问题,为了解决这个问题,我做了一些测试,包括autocommit对myisam,innodb影响。
一,测试autocommit对myisam的影响 1,准备测试表和数据
2,测试autocommit开启的情况
这样我连续做了三次测试,平均一下插入10000的数据差不多要0.86秒。关于optimize来优化表,请参考optimize table在优化mysql时很重要 3,autocommit关闭的情况下
这样我连续做了三次测试,平均一下插入10000的数据差不多要0.83秒。为了使init_connect='SET autocommit=0'启作用,我是换了个用户测试的。如果在执行储存过程的时候遇到这样的问题, ERROR 1370 (42000): execute command denied to user 'mysql'@'localhost' for routine 'test.p_test' 解决办法是:grant execute on procedure p_test to 'mysql'@localhost; 由上面的测试数据我们可以看出,autocommit对myisam没有多大的影响。 二,测试autocommit对innodb的影响 1,测试autocommit开启的情况
查看复制打印?
我也做了3次测试,都是在16点几秒。myisam插入10000条数据,都不到一秒,而innodb要十几秒,差了20多倍,太杯具了。 2,测试autocommit关闭的情况
我也测试了3次,第一次测试的时候,我以为我只插入了1000条,不然怎么会差距这么大呢。我又测试了二次,测试用时差不多,都是在0.6秒左右。autocommit对innodb的影响太大了,差了快30倍。我汗 所以我的建议是把mysql的autocommit自动提交功能关闭,这样可以提高mysql的性能,特别是innodb表比较多的情况下,不是提高一点点。如果关闭了autocommit,不要忘了commit。不然mysql服务器挂掉了,或者重起了,数据就丢失了。 |
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
瘾23398617