这是一个普遍的问题。如果我运行SQL查询并循环结果。在循环查看这些结果时是否会锁定数据库并阻止进一步的查询/插入?
另外,如果我要同时向数据库发送5或6个插入语句(通过不同的调用),会有锁定吗?
我遇到的问题是我要插入数据库的某些日志不在那里,所以我想研究这条路线。
我正在使用PHP 5和最新的MySQL(不记得版本)。
感谢。
答案 0 :(得分:1)
它可以取决于引擎。 MyISAM执行表锁定,而InnoDB执行行锁定。
答案 1 :(得分:1)
“锁定”和“腐败”之间存在差异
数据库锁是数据库为防止数据损坏而做的事情。当数据库遇到两个同时发生的DML(插入/更新/删除)查询时,它将锁定相关的表。现在,可能存在“行级”锁定或“表级”锁
锁定中发生的情况是表被锁定,所有后续查询都排队,直到数据库执行当前查询。如果它的行级别锁定,则根据数据库同时允许多个更新。
SELECT查询:
循环结果集时,不再对数据库进行调用(在循环中)。结果已经生成。因此,它不会影响数据库