MySQL数据库锁定

时间:2011-03-10 18:22:18

标签: php mysql

这是一个普遍的问题。如果我运行SQL查询并循环结果。在循环查看这些结果时是否会锁定数据库并阻止进一步的查询/插入?

另外,如果我要同时向数据库发送5或6个插入语句(通过不同的调用),会有锁定吗?

我遇到的问题是我要插入数据库的某些日志不在那里,所以我想研究这条路线。

我正在使用PHP 5和最新的MySQL(不记得版本)。

感谢。

2 个答案:

答案 0 :(得分:1)

它可以取决于引擎。 MyISAM执行表锁定,而InnoDB执行行锁定。

http://dev.mysql.com/doc/refman/5.0/en/table-locking.html

答案 1 :(得分:1)

“锁定”和“腐败”之间存在差异

数据库锁是数据库为防止数据损坏而做的事情。当数据库遇到两个同时发生的DML(插入/更新/删除)查询时,它将锁定相关的表。现在,可能存在“行级”锁定或“表级”锁

锁定中发生的情况是表被锁定,所有后续查询都排队,直到数据库执行当前查询。如果它的行级别锁定,则根据数据库同时允许多个更新。

SELECT查询:

循环结果集时,不再对数据库进行调用(在循环中)。结果已经生成。因此,它不会影响数据库