我在MySQL数据库中有一个带InnoDB引擎(注释)的表,我有以下场景:
有两个用户试图同时访问同一个评论表:
用户1:
INSERT INTO comments (comment) VALUES ('HELLO WORLD');
用户2:
SELECT * FROM comments;
我希望澄清以下几点:
注意:
用户1:
SET AUTOCOMMIT=0;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
INSERT INTO comments (comment) VALUES ('HELLO WORLD');
COMMIT;
用户2:
SELECT * FROM comments;
用户1:
SET AUTOCOMMIT=0;
START TRANSACTION;
INSERT INTO comments (comment) VALUES ('HELLO WORLD');
COMMIT;
用户2:
SELECT * FROM comments;
最大的问题是 当其他用户插入或更新行时,我的用户如何阅读?
答案 0 :(得分:0)
您正在从表中选择所有内容,因此行级锁定根本不会帮助您,因为您要求所有行。 添加“where id = 5”或类似的东西,一切都很好。
在这里您可以找到不同锁定机制的一些解释: http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html