首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LockModeType.PESSIMISTIC_WRITE锁是结果还是整个表?

LockModeType.PESSIMISTIC_WRITE锁是结果还是整个表?
EN

Stack Overflow用户
提问于 2020-03-10 21:44:31
回答 1查看 317关注 0票数 0

在寻找了一段时间后,我放弃了,因为我在任何地方都找不到这个答案,所以我在这里尝试。

我使用Spring Boot和CrudRepository从我的oracle数据库中获取实体。但是,我不确定这段在@Transaction内调用的代码是否会锁定我的整个表,或者只是锁定findAllByStatusAndCreatedBetween返回的结果实体

代码语言:javascript
复制
@Repository
public interface MyRepository extends CrudRepository<MyEntity, Long> {
    @Lock(LockModeType.PESSIMISTIC_WRITE)
    List<MyEntity> findAllByStatusAndCreatedBetween(Status status, Date from, Date to);
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-10 21:58:46

LockModeType.PESSIMISTIC_WRITE在内部执行select for update语句。

SELECT FOR UPDATE锁定行和任何关联的索引项,就像为这些行发出UPDATE语句一样。其他事务被阻止更新这些行,无法执行SELECT ...LOCK IN SHARE模式,或在某些事务隔离级别下读取数据。一致读取将忽略在read视图中存在的记录上设置的任何锁定。(旧版本的记录不能被锁定;它们是通过在记录的内存副本上应用撤消日志来重建的。)

请查看https://docs.oracle.com/cd/E17952_01/mysql-5.1-en/innodb-locking-reads.html

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

https://stackoverflow.com/questions/60618908

复制
相关文章

相似问题

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