大气医院网站模板,青岛网页搜索排名提升,可以做专利聚类分析的免费网站,网站建设免费制作mysql中包含的锁分为#xff1a; 一、全局锁 二、表锁 三、行锁 一、全局锁 全局锁的力度是最大的#xff0c;全局锁对整个数据库实例加锁#xff0c;加锁后整个实例就处于只读状态#xff0c;后续的DML的写语句#xff0c;DDL语句#xff0c;已经更新操作的事务提交语句…mysql中包含的锁分为 一、全局锁 二、表锁 三、行锁 一、全局锁 全局锁的力度是最大的全局锁对整个数据库实例加锁加锁后整个实例就处于只读状态后续的DML的写语句DDL语句已经更新操作的事务提交语句都将被阻塞。 其典型的使用场景是做全库的逻辑备份对所有的表进行锁定从而获取一致性视图保证数据的完整性 加全局锁 flush tables with read lock; 数据备份: mysqldump -uroot -p1234 itcast itcast.sql 该命令并不是sql语句是mysql提供的一个工具 释放全局锁unlock tables;
特点全局锁其他客户端可以进行查询不能写入和修改
问题 1.如果在主库上备份那么在备份期间都不能执行更新业务基本上就停摆 2.如果在从库上备份南无在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟 在InnoDB引擎中我们在备份时可以加上参数 --single-transaction参数来完成不加锁的一致性数据备份。(底层通过快照图实现的) 二、表级锁
表级锁每次操作锁住整张表。锁定粒度大发生锁冲突的概率最高并发度最低。应用在MYSAM,InnoDB,DBD等存储引擎中
分为三类 1.表锁 2.元数据锁meta data lock,MDL 3.意向锁
表锁 1.表共享读锁read lock 特点阻塞自身和其他客户端的写不阻塞自身和其他客户端的读 2.表独占写锁write lock特点阻塞其他客户端的读和写自身可以读和写 语法 1.加锁lock tables 表名... read/write 2.释放锁unlock tables/客户端断开连接
元数据锁(meta data lock,MDL) MDL加锁过程是系统自动控制无需显式使用在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性在表上有活动事务的时候不可以对元数据进行写入操作。为了避免DML与DDL冲突保证读写的正确性 意向锁 为了避免DML在执行时加的行锁与表锁的冲突在InnoDB中引入了意向锁使得表锁不用检查每行数据是否加锁使用意向锁来减少表锁的检查。 1.意向共享锁IS由语句select ... lock in share mode添加,与表锁共享锁兼容与表锁排他锁互斥 2.一项排他锁IX由语句insert、delete、update、select ... for update添加与表锁共享锁和排他锁都排斥但是意向锁之间兼容
三、行锁 每次操作锁住对应的行数据锁定颗粒度最小发生锁冲突的概率最低并发度最高应用在InnoDB存储引擎中。 1.行锁Record Lock锁定单个行记录的锁防止其他事务对此行进行update和delete在RC,RR隔离级别下都支持共享锁和排他锁 默认情况下InnoDB在 REPEATABLE READ事务隔离级别运行InnoDB使用 next-key锁进行搜索和索引扫描以防止幻读。 1.针对唯一索引进行检索时对已存在的记录进行等值匹配时将会自动优化为行锁。 2.InnoDB的行锁是针对于索引加的锁不通过索引条件检索数据那么InnoDB将对表中的所有记录加锁此时 就会升级为表锁。 2.间隙锁Gap Lock锁定索引记录的间隙不包含记录确保索引记录间隙不变防止其它事务在这个间隙进行Insert产生寒毒。在RR隔离级别下都支持
默认情况下InnODB在 REPEATABLE READ事务隔离级别运行InnoDB使用 next-kev锁进行搜索和索引扫描以防止幻读。 1.索引上的等值查询(唯一索引)给不存在的记录加锁时,优化为间隙 2.锁索引上的等值查询(普通索引)向右遍历时最后一个值不满足查询需求时next-keylock 退化为间隙锁 3.索引上的范围查询(唯一索引)--会访问到不满足条件的第一个值为止。 3.临键锁Next-Key Lock行锁和间隙锁组合同时锁住数据并锁住数据前面的间隙Gap。在RR隔离级别下支持。