什么是锁机制?
锁机制是数据库管理系统(DBMS)的核心并发控制手段,用于在多个事务同时访问和修改数据时,维护数据的一致性和完整性。其核心思想是:当某个事务访问数据资源时,根据操作类型(读或写)先对数据加锁,从而防止其他事务进行冲突操作,直到该事务释放锁。这确保了并发事务能够“有序”地访问数据,避免产生脏读、不可重复读、幻读等问题。不同的数据库锁(如行锁、表锁)和不同的锁模式(如共享锁、排他锁)共同构成了复杂的锁体系,旨在平衡数据安全性与系统并发性能。
按锁级别分类,可分为共享锁、排他锁和意向锁。也可以按锁粒度分类,可分为行级锁、表级锁和页级锁。
本节主要介绍三种核心锁类型:共享锁、排他锁和意向锁:
特性 | 共享锁 (S Lock) | 排他锁 (X Lock) | 意向锁 (I Lock) |
---|---|---|---|
名字 | Shared Lock (S Lock) | Exclusive Lock (X Lock) | Intention Lock (I Lock) |
主要作用 | 保证读取数据时,数据不被其他事务修改。 | 保证写入数据时,数据被独占访问,不被读取或修改。 | 表级信号锁,声明事务意图,用于高效协调行锁与表锁的冲突。 |
生动类比 | 共享阅读:多人可同时读同一份报纸,但不能涂改。 | 独家写作:一人独占黑板书写,他人既不能看也不能写。 | 仓库指示灯:红灯亮起表示内部正作业,提醒叉车(表锁)勿入。 |
兼容性 | 兼容其他S锁 不兼容X锁 | 不兼容其他X锁 不兼容S锁 | 自我兼容:IX与IX、IS与IS兼容。 不兼容表锁:与欲加的表级S/X锁互斥。 |
性能影响 | 低开销。允许多个读操作并发,对性能影响较小。 | 高开销。强制串行化写入,并发度最低,易成为性能瓶颈。 | 正收益。大幅提升性能,通过避免全表扫描检查行锁,减少阻塞。 |
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程