2011-10-10 116 views
0

我们想从的MyISAM InnoDB的原因有几个开关,但我们不打算使用与交易BEGIN/COMMIT等即使我不使用事务,死锁是否会影响我?

是否有一个地方死锁可以使用SELECT,INSERT,UPDATE刚刚发生和删除任何情况下, ?我们使用一些JOIN,当然我们有很多INDEX。

如果我将所有的表格转换为InnoDB,我如何在真实生活模拟中测试该网站?如果只有几个人点击该网站,这不会像100位用户在线点击,添加,删除等时的情况。您是否推荐使用任何工具来执行此操作?

预先感谢您的任何提示! :)

+0

InnoDB中的死锁比MyISAM中的问题少**。 MyISAM使用表锁,InnoDB使用行锁。 – Johan

+0

看到这个答案:http://stackoverflow.com/questions/5970210/explain-inexplicable-deadlock –

回答

0

总之,可能会出现死锁,因为(默认设置为AUTOCOMMIT = ON,意思)的每一句话(SELECTUPDATEINSERTDELETE)被视为InnoDB的一个单独的事务 - 并执行后立即autocommitted。

参见:Implicit Transaction Commit and Rollback

但是,正如@Johan点,就应该少比的InnoDB MyISAM的一个问题,因为行级锁的使用,在可能的情况。

还要检查@ MarkR的回答在这个问题上,了解详情:Explain Inexplicable Deadlock


对于压力测试,我听说过,但没有用Super Smack,这是一个基准和压力针对MySQL和PostgreSQL的测试工具。

但是,由于大多数用户可能会使用您的Web界面,所以这种界面的压力测试工具可能足以满足您的需求。

1

你有两个非常不同的问题在这里。

1是的,即使没有显式使用事务,死锁也可能发生,因为所有插入/更新/删除语句都使用“底层”行级锁定。 Read more here

2一般来说,压力/性能测试不是一项简单的任务,并且没有很多通用工具可以很好地实现。你如何强调测试其他数据库的变化(添加/更改/删除索引,表格模式更改)?

+0

非常感谢,我会阅读上面的文档和其他答案。我们没有做过任何压力测试,只有手动测试。但是我们发现了一些名为http://loadimpact.com/和http://loadstorm.com/的工具,听起来可能有用。 – Niclas