首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锁定共享模式

锁定共享模式
EN

Database Administration用户
提问于 2012-01-02 10:41:21
回答 1查看 3.5K关注 0票数 3

在开发mysql锁的共享模式被描述为..。

SELECT ... LOCK IN SHARE MODE sets a shared mode lock on the rows read. A shared mode lock enables other sessions to read the rows but not to modify them. The rows read are the latest available, so if they belong to another transaction that has not yet committed, the read blocks until that transaction ends.

这是否意味着如果我直接打电话给

代码语言:javascript
复制
$dbc -> beginTransaction();

或者是commit还是rollback,那么读取的数据将是最新的吗?因为它还说使用FOR UPDATE会阻止LOCK IN SHARE MODE阅读(即确保它是最新的信息)。

但是,如果我在事务中包装了所有重要的更新和删除,那么是否仍然需要锁行,上面说LOCK IN SHARE MODE将等待事务完成?当然,如果它等待事务完成,那么本质上,我将始终拥有可用的最新鲜的数据,只需使用事务,而不必在执行更新和删除时锁定?

EN

回答 1

Database Administration用户

发布于 2012-01-02 16:52:14

执行SELECT...LOCK IN SHARE MODE可以阻止UPDATE...LOCK IN SHARED MODE。死锁仍有可能发生。SELECT或UPDATE所需的行仍然可以引入您从未打算发出的锁。我什么意思?

为了您自己的利益,有时需要内部锁定主键条目。

我曾经写过三篇文章,帮助开发人员意识到这一点:InnoDB死锁是否仅用于插入/更新/删除?

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/10010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档