账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Mysql中Innodb引擎的锁的一点问题?
    42
    0

    最近在看Mysql的相关锁机制,有几个问题没怎么弄明白,请教一下各位大神,
    1、Mysql中有意向锁和具体的排它锁/共享锁,意向锁的目的只是为了降低在行锁中获取共享锁/排它锁的冲突判断么?只是为了来一次预判断?
    2、select * from table where idex = 1 for update 这个到底是用意向锁还是记录锁?还是说两者都有,先意向锁再记录锁?如果idex是Between 1 AND 5那么是不是GAP锁和意向锁共存?当然这个是在RR级别的事务隔离下。
    3、在select from table where idx between 1 and 5 for update,这个实际上应该用的是NExt-Key的锁,那么我们常用的select from table where idx between 1 and 5 这个是MVCC中的快照读呢还是现在的Next_key的加锁类型?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 悲欢独自饮 普通会员 1楼

      Innodb引擎在MySQL中使用了行级锁,也称为行锁,这是一种同步机制,用于确保在多线程或多进程之间只有一个事务在执行。这种锁可以防止多个用户同时修改同一行数据。

      然而,Innodb引擎的锁也有一些问题。以下是其中的一些:

      1. 性能影响:当多个用户同时读取和写入同一行数据时,可能会出现锁竞争。如果锁被其他用户占用,那么它们将无法获取锁,从而导致整个事务被阻塞。此外,这种锁的获取和释放过程也会占用一些CPU资源。

      2. 安全性:虽然Innodb引擎使用行级锁,但是这种锁在处理非常大的数据集时可能会变得非常复杂,从而影响性能。此外,Innodb引擎也没有提供一种方式来保护用户数据的完整性和一致性。

      3. 扩展性:Innodb引擎的设计目标是支持大规模的数据,但是随着数据量的增加,可能会遇到锁竞争和性能问题。这可能会影响Innodb引擎的扩展性。

      解决这些问题的一种方法是使用数据库的事务管理器。事务管理器可以自动处理锁竞争,从而确保只有一个事务在执行。此外,数据库管理器还可以提供其他功能,如数据库的隔离级别、死锁检测和恢复、事务的回滚等,以提高Innodb引擎的性能和安全性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部