例如,假设您运行以下查询。
UPDATE `user`
SET point=30
WHERE id=1;
SELECT nickname
FROM `user`
WHERE id=1;
在这种情况下,第二个 SELECT 查询是否应该等待 UPDATE 查询的锁,即使它没有读取点列?
如果是这样,将频繁更新的列 - point - 分离到单独的表 user_point 中是否是一个好的设计?
例如,假设您运行以下查询。
UPDATE `user`
SET point=30
WHERE id=1;
SELECT nickname
FROM `user`
WHERE id=1;
在这种情况下,第二个 SELECT 查询是否应该等待 UPDATE 查询的锁,即使它没有读取点列?
如果是这样,将频繁更新的列 - point - 分离到单独的表 user_point 中是否是一个好的设计?
不。
此外,如果两个语句位于同一事务中,则将继续强制执行行锁——这会影响其他线程。
(非默认事务隔离模式的行为可能有所不同。)