深入浅出理解数据库s锁和x锁

简介: 深入浅出理解数据库s锁和x锁

1.s锁

       英文为 shared lock,叫共享锁,我们也称为读锁,即 read lock。s锁之间是共享的,或者说是互不阻塞的。

       顾名思义,当事务读取一条记录时,需要先给该记录添加s锁,当另一条事务也要读取该记录时,一样可以继续给该条记录添加s锁,但是此时不能添加写锁,也就是x锁,只有前一个事务的s锁释放了,才能加上x锁。

2.x锁

       英文为exclusive lock,叫排他锁,我们也常称之为写锁,即write lock。x锁是具有排他性的,即一个写锁会阻塞其他的x锁和s锁

       当一个事务需要修改一条记录时,需要先获取改记录的x锁。当事务对一条记录加上了x锁,那么事务即可以读取该条事务也可以修改,而其他事务则不能该条记录再添加任何锁,直到x锁被释放。

相关文章
|
4月前
|
SQL 存储 关系型数据库
【MySQL 数据库】11、学习 MySQL 中的【锁】
【MySQL 数据库】11、学习 MySQL 中的【锁】
113 0
|
4月前
|
供应链 数据库 开发者
深入了解数据库锁:类型、应用和最佳实践
深入了解数据库锁:类型、应用和最佳实践
|
4月前
|
存储 关系型数据库 MySQL
了解MySQL 数据库的锁机制
了解MySQL 数据库的锁机制。
55 0
|
4月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
863 0
|
存储 关系型数据库 MySQL
Mysql数据库—事务和锁
Mysql数据库—事务和锁
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库进阶第五篇(锁)
MySQL数据库进阶第五篇(锁)
|
1月前
|
SQL 存储 关系型数据库
"MySQL增列必锁表?揭秘InnoDB在线DDL,让你的数据库操作飞一般,性能无忧!"
【8月更文挑战第11天】在数据库领域,MySQL凭借其稳定高效的表现深受开发者喜爱。对于是否会在给数据表添加列时锁表的问题,MySQL的行为受版本、存储引擎等因素影响。从5.6版起,InnoDB支持在线DDL,可在改动表结构时保持表的可访问性,避免长时间锁表。而MyISAM等则需锁表完成操作。例如,在使用InnoDB的表上运行`ALTER TABLE users ADD COLUMN email VARCHAR(255);`时,通常不会完全锁表。虽然在线DDL提高了灵活性,但复杂操作或大表变更仍可能暂时影响性能。因此,进行结构变更前应评估其影响并择机执行。
48 6
|
4月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之密码输入错误次数多被锁了如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
1月前
|
SQL 数据库
无法获得数据库 'model' 上的排他锁。请稍后重试该操作
无法获得数据库 'model' 上的排他锁。请稍后重试该操作
60 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库——锁-行级锁(行锁、间隙锁和临键锁)
MySQL数据库——锁-行级锁(行锁、间隙锁和临键锁)
53 0