自动提交与单一交易(小项目与大项目)

时间:2009-10-13 13:30:30

标签: php sql mysql transactions frameworks

我目前正在开发一个非常专业的PHP框架,可能需要处理大型数据库传输。

例如: 占用整个用户数的一半;这应该是每天框架的工作空间。

因此,如果大型项目需要我的框架,是否建议使用具有多个查询的单个事务(例如,使用JOIN(?)在1个查询中执行许多操作),或者是首选自动提交?

如果可能的话,发布一些讨论过这个问题的博客文章。

谢谢。 ;)

2 个答案:

答案 0 :(得分:3)

MyISAM是无交易的,因此自动提交不会影响它。

对于InnoDB,自动提交会使重复查询数百次的速度变慢。

最好的决定当然是做基于设置的所有事情,但是如果你必须在循环中进行查询,请关闭自动提交。

另请注意,“多个查询”和“使用JOIN在一个查询中执行多项操作”是完全不同的事情。

后者是一个原子操作,即使在MyISAM上也会立即成功或失败。

Autocommit不会影响其性能:此查询中的所有内容始终在单个事务中完成。

在一个查询中做很多事情实际上是做很多事情的首选方法。

答案 1 :(得分:1)

除了最简单的数据结构之外,联接不仅仅是有用的。考虑在没有它们的情况下编写,显示出对关系数据库设计和访问权限的基本缺乏理解。不使用联接通常会导致在选择中得到错误的答案。您可以在插入,更新和删除时不加入,但它们通常也会在那里使用和使用。