2011-03-10 63 views
1

这是一个相当普遍的问题。如果我运行SQL查询并遍历结果。数据库在我循环访问这些结果时是否会被锁定,并阻止进一步的查询/插入?另外,如果我要同时发送5或6个插入语句到数据库(通过不同的调用),会不会有锁定?MySQL数据库锁定

我有一个问题,我打算插入到数据库中的一些日志不在那里,所以我想调查这条路线。

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

谢谢。

+0

您使用的是哪种表格类型? MyISAM数据? InnoDB的? – Brad 2011-03-10 18:23:08

+0

您的脚本在插入日志时可能会遇到错误。检查Web服务器日志文件?或者错误被吞噬了? – Bittrance 2011-03-10 18:36:50

+0

@Brad:我正在使用MyISAM。 – webnoob 2011-03-10 18:45:09

回答

1

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

数据库锁的差别是什么哪个数据库做以防止数据损坏。当数据库遇到两个同时的DML(插入/更新/删除)查询时,它将锁定相关的表。现在,可能会出现“行级”锁或“表级”锁

在锁定中会发生什么情况是表被锁定,并且所有后续查询都会排队,直到数据库执行当前查询为止。如果它的行级锁定,取决于数据库多个更新是同时允许的。

SELECT查询:

当你通过你的结果集循环,有没有对数据库正在取得更多的呼叫(而在循环)。结果已经生成。因此,它不会影响数据库