您好,登录后才能下订单哦!
本篇内容主要讲解“mysql中表级别的锁有几种”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中表级别的锁有几种”吧!
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中表级别的锁有几种”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。