美文网首页
数据库基础4:锁一

数据库基础4:锁一

作者: chf041 | 来源:发表于2020-09-17 13:20 被阅读0次

    根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁、行锁

    全局锁

    当需要让整个库处于只读状态的时候,需要对整个数据库实例加锁,典型场景是做全库逻辑备份。
    MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)

    表锁

    表锁有两种

    • 表锁
      lock tables … read/write。与 FTWRL 类似,可以用 unlock tables 主动释放锁,也可以在客户端断开的时候自动释放。需要注意,lock tables 语法除了会限制别的线程的读写外,也限定了本线程接下来的操作对象。

    • 元数据锁
      在 MySQL 5.5 版本中引入了 MDL,当对一个表做增删改查操作的时候,加 MDL 读锁;当要对表做结构变更操作的时候,加 MDL 写锁。
      MDL 不需要显式使用,在访问一个表的时候会被自动加上。
      MDL 会直到事务提交才释放,在做表结构变更的时候,你一定要小心不要导致锁住线上查询和更新。

    相关文章

      网友评论

          本文标题:数据库基础4:锁一

          本文链接:https://www.haomeiwen.com/subject/tirlyktx.html