MySQL——锁

全局锁

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

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

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

表级锁

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

页级锁

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

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

行级锁

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

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

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

相关推荐
一只叫煤球的猫3 小时前
MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
后端·sql·mysql
寒山李白3 小时前
MySQL安装与配置详细讲解
数据库·mysql·配置安装
文牧之4 小时前
PostgreSQL 的扩展pg_freespacemap
运维·数据库·postgresql
deriva4 小时前
某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量
数据库·sql
Leo.yuan5 小时前
数据库同步是什么意思?数据库架构有哪些?
大数据·数据库·oracle·数据分析·数据库架构
zhangzhangkeji5 小时前
(33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
mysql
Kookoos5 小时前
ABP VNext 与 Neo4j:构建基于图数据库的高效关系查询
数据库·c#·.net·neo4j·abp vnext
云之兕6 小时前
MyBatis 的动态 SQL
数据库·sql·mybatis
gaoliheng0066 小时前
Redis看门狗机制
java·数据库·redis