企业官方网站模板下载,如何跟客户沟通网站建设,创建网站站点,网站建设首选一、按锁的粒度划分 全局锁 定义#xff1a;锁定整个数据库实例#xff0c;阻止所有写操作#xff0c;确保数据备份一致性。加锁方式#xff1a;通过FLUSH TABLES WITH READ LOCK实现#xff0c;释放需执行UNLOCK TABLES。应用场景#xff1a;适用于全库逻辑备份#xf…一、按锁的粒度划分 全局锁 定义锁定整个数据库实例阻止所有写操作确保数据备份一致性。加锁方式通过FLUSH TABLES WITH READ LOCK实现释放需执行UNLOCK TABLES。应用场景适用于全库逻辑备份但会阻塞所有数据变更。 表级锁 分类
表锁分为读锁共享锁和写锁排他锁由LOCK TABLES ... READ/WRITE显式控制。元数据锁MDL 自动在访问表时添加防止表结构变更与读写冲突事务提交后释放。意向锁InnoDB特有分为意向共享锁IS和意向排他锁IX用于快速判断表中是否有行级锁。 特点开销小、加锁快但并发度低易引发锁冲突。存储引擎支持MyISAM仅支持表锁InnoDB支持表锁与行锁。
行级锁 实现机制由InnoDB引擎支持基于索引实现。若SQL未使用索引行锁会退化为表锁。具体类型
记录锁Record Lock 锁定单行记录。间隙锁Gap Lock 锁定索引记录间的间隙防止其他事务插入数据。临键锁Next-Key Lock 记录锁间隙锁的组合锁定左开右闭的区间解决幻读问题。 特点开销大、加锁慢可能引发死锁但并发度高。 二、按锁的属性划分 共享锁S锁 定义允许其他事务读取但禁止写入。加锁方式通过SELECT ... LOCK IN SHARE MODE或SELECT ... FOR SHARE实现。应用场景适用于多事务并发读取同一数据。 排他锁X锁 定义禁止其他事务读写锁定对象。加锁方式通过SELECT ... FOR UPDATE或更新语句如UPDATE自动添加。应用场景数据修改或需要独占访问的场景。 三、按加锁机制划分 悲观锁 原理假定并发冲突必然发生操作前先获取锁如共享锁或排他锁。实现方式通过数据库内置锁机制如FOR UPDATE实现。 乐观锁 原理假定冲突较少通过版本号或时间戳校验数据是否被修改。实现方式使用WHERE条件检查数据版本若冲突则重试或回滚。