我目前正在开发一个非常专业的PHP框架,可能需要处理大型数据库传输。
例如: 占用整个用户数的一半;这应该是每天框架的工作空间。
因此,如果大型项目需要我的框架,是否建议使用具有多个查询的单个事务(例如,使用JOIN(?)在1个查询中执行许多操作),或者是首选自动提交?
如果可能的话,发布一些讨论过这个问题的博客文章。
谢谢。 ;)
答案 0 :(得分:3)
MyISAM
是无交易的,因此自动提交不会影响它。
对于InnoDB
,自动提交会使重复查询数百次的速度变慢。
最好的决定当然是做基于设置的所有事情,但是如果你必须在循环中进行查询,请关闭自动提交。
另请注意,“多个查询”和“使用JOIN
在一个查询中执行多项操作”是完全不同的事情。
后者是一个原子操作,即使在MyISAM
上也会立即成功或失败。
Autocommit不会影响其性能:此查询中的所有内容始终在单个事务中完成。
在一个查询中做很多事情实际上是做很多事情的首选方法。
答案 1 :(得分:1)