请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师您好, 关于乐观锁。。。

  1. 读数据时在InnoDB是否也是跟随事务去执行的, 就是说读的时候是否有事务。
    => 你说MYSQL默认是给行数据会加上排它锁的
    => 那么按照您说的, 那么执行读操作的时候, 是不是排他锁不会对读操作进行反应, 只会对写操作进行反应呢

我在想, 如果对读操作在读完后, 读事务未提交, 那么也算是排它锁锁住的啊。 虽然可以读,那么所有读操作都可以存在读完不提交的情况,那不也是锁住了。 当然如果读操作是事务开始与提交算完成那当我没说。 如果是锁住了, 那么就不用了乐观锁了啊?还有就是如果读事务不存在有锁的情况也当我没说。

简单来说 读操作是不受锁影响的吗?

正在回答

1回答

排它锁是不允许其它事务对数据加锁。比如insert、delete、update都是要加排它锁的,但是select默认是不加锁的,所以加排它锁的数据是可以被select读取到的

0 回复 有任何疑惑可以回复我~
  • 提问者 燎丶Trance #1
    那Select默认不加 也就是可以加 是吧? 那直接加读锁不就不用使用乐观锁了。
    回复 有任何疑惑可以回复我~ 2020-12-01 22:41:15
  • 神思者 回复 提问者 燎丶Trance #2
    如果你的业务需要先查询,根据查询结果判定是不是可以改数据,这时候就要加乐观锁。比如秒杀不能一上来就把库存减一,万一库存是0,你不做判断,把库存减成负数怎么办?
    回复 有任何疑惑可以回复我~ 2020-12-01 23:42:35
  • 提问者 燎丶Trance 回复 神思者 #3
    谢谢老师 我明白了 这不是锁的问题 是并发的问题。
    回复 有任何疑惑可以回复我~ 2020-12-02 14:05:37
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信