出于几个原因,我们希望从MyISAM切换到InnoDB,但我们不打算将事务与BEGIN/COMMIT等一起使用。
是否存在仅使用SELECT、INSERT、UPDATE和DELETE就会发生死锁的情况?我们使用了一些连接,当然,我们有很多索引。
如果我将所有的表都转换为InnoDB,我如何在真实的模拟中测试站点?如果只有几个人在网站周围点击,就不会像100多个用户在线点击、添加、删除等一样。你有推荐的工具来做这件事吗?
提前感谢您的任何提示!:)
发布于 2011-10-10 21:22:45
简而言之,死锁的发生是因为(默认设置为AUTOCOMMIT = ON,即)每条语句(SELECT、UPDATE、INSERT、DELETE)在InnoDB中都被视为单独的事务-并在执行后立即自动提交。
请参阅:
但是,正如@Johan指出的那样,它们在InnoDB中应该比MyISAM中的问题更少,因为在任何可能的地方都使用行级锁定。
另请查看@MarkR在此问题中的答案,以了解更多详细信息:
对于压力测试,我听说过但还没有使用过Super Smack,它是一个针对MySQL和PostgreSQL的基准测试和压力测试工具。
但由于大多数用户可能会使用您的web界面,因此任何针对此类界面的压力测试工具都可能足以满足您的需求。
发布于 2011-10-10 21:17:07
你在这里有两个完全不同的问题。
1是的,即使您不显式使用事务,也可能发生死锁,因为所有insert/update/delete语句都使用“幕后”行级锁定。Read more here。
2一般来说,压力/性能测试不是一项微不足道的任务,没有多少通用工具可以很好地完成这项任务。如何对其他数据库更改(添加/更改/删除索引、表模式更改)进行压力测试?
https://stackoverflow.com/questions/7713236
复制相似问题