毕业设计做网站还是系统好,seo服务器配置,微购物网站建设,wordpress下载类主题系统主题总结
MySQL数据库中的锁机制主要用于管理并发操作#xff0c;以确保数据的一致性和完整性。MySQL支持多种类型的锁#xff0c;按粒度和使用场景主要分为以下几类#xff1a; 全局锁#xff1a; 全局锁#xff08;如FLUSH TABLES WITH READ LOCK#xff09;可以锁定整个数…总结
MySQL数据库中的锁机制主要用于管理并发操作以确保数据的一致性和完整性。MySQL支持多种类型的锁按粒度和使用场景主要分为以下几类 全局锁 全局锁如FLUSH TABLES WITH READ LOCK可以锁定整个数据库实例阻止所有表的写入操作常用于数据备份等场景。 表级锁 表锁锁定整张表包括MyISAM引擎默认使用的表级锁它在同一时刻只允许一个事务对表进行读取或写入。MDLMetadata Lock元数据锁在InnoDB中自动加上的轻量级锁用于保护表的结构变更操作不影响DML语句但在DDL操作时会阻塞其他事务对表的操作。 行级锁 共享锁Shared Lock/S锁多个事务可同时获取同一行记录的共享锁用于读取操作互不阻塞。排他锁Exclusive Lock/X锁一个事务对一行记录加排他锁后其他任何事务不能对该行再加任何类型的锁用于更新或删除操作。间隙锁Gap Lock在范围查询条件下InnoDB会在索引记录之间的间隙加上锁防止其他事务插入新的记录造成幻读问题。临键锁Next-Key Lock结合了行锁和间隙锁不仅锁定记录本身还锁定其前后的间隙。 意向锁 意向共享锁Intention Shared Lock/IS锁事务打算在某一行上加共享锁时先在表级别加意向共享锁。意向排他锁Intention Exclusive Lock/IX锁事务打算在某一行上加排他锁时先在表级别加意向排他锁。
在实际应用中选择何种锁取决于业务需求和存储引擎特性
对于读多写少且不需要高并发的场景表级锁简单易用开销较小。InnoDB存储引擎因其支持行级锁在需要高并发处理和事务安全的应用中表现优秀能够提供更好的并发性能和更细粒度的数据控制。
例子 熊大代表事务A“光头强我正在看森林里某一棵果树的数据你别动它”
光头强代表事务B“好的熊大那我就给你这棵树的数据加个‘共享锁’咱们都能查看但都不能砍。” 熊大“我要给苹果树挂牌子光头强你先别碰这棵树。”
光头强“明白熊大我现在要给它加个‘排他锁’这样你就只能看我挂牌子其他人暂时不能做任何操作。” 熊二代表事务C“嘿我也要看果树林里的某个地方是否有新长出的小树苗。”
熊大“哦熊二我已经查过那里没有树苗并且为了防止光头强突然种下新树我连空隙都上了‘间隙锁’。” 光头强“哼我要把这片区域的所有树木信息全部更新为了避免你们误读我会先加一个‘意向排他锁’告诉你们我接下来可能要对这一片林子的每棵树都上排他锁。”