MySQL——锁

全局锁

全局锁是一种数据库锁定机制,它可以锁定整个数据库,阻止其他会话对数据库的读写操作。在MySQL中,全局锁定可以使用**FLUSH TABLES WITH READ LOCK**命令来实现。执行这个命令后,MySQL将获取一个全局读锁,直到当前会话释放锁为止。

全局锁通常用于数据库备份和恢复操作。在执行数据库备份时,可以使用全局锁来确保备份的一致性,防止备份过程中数据发生变化。在执行数据库恢复操作时,可以使用全局锁来防止其他会话对数据库的写操作,以免影响恢复过程。

使用全局锁需要谨慎,因为它会阻塞其他会话的写操作 ,可能会影响数据库的正常运行。在使用全局锁时,应该尽量减少锁定时间,避免对数据库的影响。另外,全局锁只能阻止写操作,不能阻止读操作,因此在备份或恢复过程中,可能会出现数据不一致的情况,需要注意处理。

表级锁

表锁是数据库管理系统(DBMS)中的一种锁定机制,用于控制对数据库表的并发访问。语句是LOCK TABLES...READ/WRITE。当一个会话获取了表锁之后,其他会话就无法对该表执行写操作,直到表锁被释放。表锁通常用于管理对整个表的并发访问。

页级锁

页级锁是一种数据库锁定机制,用于管理数据库中的数据页。在数据库系统中,数据通常以页的形式存储在磁盘上,每个页包含多条记录。页级锁是针对数据页而不是单独的记录或表进行锁定的。

页级锁可以提高并发性能,因为它允许多个事务在同时操作不同的数据页,而不会发生锁竞争。只有当两个事务试图同时修改同一个数据页时,才会发生锁竞争,其中一个事务会被阻塞,直到另一个事务释放锁。

行级锁

行级锁是数据库管理系统(DBMS)中的一种锁定机制,用于管理数据库表中的单个数据行。与页级锁不同,行级锁仅锁定表中的某一行或多行数据,而不是整个数据页。这种锁定粒度更细,使得多个事务可以同时访问同一张表的不同行数据,从而提高了数据库的并发性能。

行级锁可以提高数据库的并发性能,因为它允许多个事务同时对同一张表的不同行进行操作,而不会发生锁竞争。只有当两个事务试图修改同一行数据时,才会发生锁竞争,其中一个事务会被阻塞,直到另一个事务释放锁。

MySQL中只有InnoDB支持行级锁,行级锁分为共享锁和排他锁。

相关推荐
GBASE1 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr2 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫3 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8783 天前
5.Mysql事务隔离级别与锁机制
mysql
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
元Y亨H3 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql