广西省河池建设局网站,此网站不支持下载视频怎么办,h5个人网页设计心得,wordpress cos腾讯云一.MySQL锁的分类 二.全局锁
全局锁对整个数据库加锁#xff0c;可以执行如下命令#xff0c;整个数据库都将处于只读状态。
Flush tables with read lock ;我们可以执行 unlock table进行解锁
unlock table ;读操作 非读操作#xff08;阻塞#xff09; 全局锁的典型使…一.MySQL锁的分类 二.全局锁
全局锁对整个数据库加锁可以执行如下命令整个数据库都将处于只读状态。
Flush tables with read lock ;我们可以执行 unlock table进行解锁
unlock table ;读操作 非读操作阻塞 全局锁的典型使用场景 – 全库逻辑备份
当执行 命令后整个库都将处于只读状态在只读状态下对整个数据库做备份但这样做是有风险的
Flush tables with read lock ;如果在主库上做备份那么在整个备份期间都不能做更新操作业务无法进行。如果在从库上做备份那么从库将不能执行从主库同步更新过来的binlog日志导致主从延迟
虽然加全局锁有风险但是如果不在全局锁因为不同表之间的执行顺序不同进而备份的时间不同。如果某个表在这个时间差中进行了更新并且成功被备份而与其有关联的表已经在之前备份完毕已无法更新。此时就发生备份库与被备份库数据不一致。
三.表级锁
MySQL在表级别的锁有两种分别是表锁与元数据锁Meta data lock MDL
表锁
表锁的语法是 lock tables … read/write。与 FTWRL 类似可以用 unlock tables 主动释放锁也可以在客户端断开的时候自动释放。需要注意lock tables 语法除了会限制别的线程的读写外也限定了本线程接下来的操作对象。
元数据锁
元数据锁 不需要显式使用在访问一个表的时候会被自动加上。MDL 的作用是保证读写的正确性。
元数据锁是server层的锁表级锁主要用于隔离DMLData Manipulation Language数据操纵语言如select和DDLData Definition Language数据定义语言如改表头新增一列操作之间的干扰。每执行一条DML、DDL语句时都会申请MDL锁DML操作需要MDL读锁DDL操作需要MDL写锁MDL加锁过程是系统自动控制无法直接干预读读共享读写互斥写写互斥
另外最近重温操作系统时发现了一个免费精品好课闪客的《Linux0.11源码趣读》这个课给我感觉像在用看小说的心态学操作系统源码写的确实挺牛的通俗易懂直指本源我自己也跟着收获了很多。这个课在极客时间上是免费的口碑很不错看评论下很多人在催更和重温强烈推荐戳此链接领取
https://time.geekbang.org/opencourse/intro/100310101?utm_sourcelinux_dkutm_termlinux_dk