• 技术文章 >数据库 >MySQL

    mysql表级锁的介绍

    小妮浅浅小妮浅浅2021-08-31 17:04:52原创168

    1、MySQL里面表级别的锁有两种:一种是表锁,一种是元数据锁(meta data lock,MDL)。

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

    如果在某个线程A中执行lock tables t1 read,t2 wirte;这个语句,则其他线程写t1、读写t2的语句都会被阻塞。同时,线程A在执行unlock tables之前,也只能执行读t1、读写t2的操作。连写t1都不允许。

    另一种表级锁是MDL。


    2、MDL不需要显示使用,访问一个手表时会自动添加。

    MDL的作用是保证读写的正确性。如果一个查询正在通过一个表中的数据,而另一个线程在执行过程中改变了该表的结构并删除了一列,那么查询线程得到的结果肯定不符合表的结构。

    MDL引入MySQL5.5版本,当对表进行增删改查时,加MDL读锁;当对表进行结构变更时,加MDL写锁。

    读锁不互斥,所以可以有多个线程同时对一个表格进行增删改查。

    读写锁和写锁相互排斥,以确保变更表结构操作的安全性。因此,如果有两个线程,一个应该在一个表中添加字段,其中一个应该等到另一个执行完成。

    在表格中添加字段,或修改字段,或添加索引,需要扫描整个表格的数据。操作大型手表时,应特别小心,以免影响在线服务。

    以上就是mysql表级锁的介绍,希望对大家有所帮助。更多mysql学习指路:MySQL

    本文转载于php中文网,如有侵犯联系作者修改。

    专题推荐:mysql表级锁
    品易云
    上一篇:mysql全局锁是什么 下一篇:mysql索引的创建场景

    相关文章推荐

    • mysql修改视图的方法• mysql视图如何使用• mysql存储过程的特点• mysql错误日志是什么• mysql自增值保存的位置• mysql自增值如何修改• mysql自增主键用完的处理办法• mysql中InnoDB的MVCC实现• mysql中undo log的两种类型• mysql行锁的特点• mysql间隙锁的危害• mysql死锁产生有哪些条件• mysql事务启动的两种方法• mysql全局锁是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网