MySQL中的S锁(共享锁)是一种锁定机制,用于控制多个事务对同一资源的并发访问,当一个事务对某个资源加上S锁后,其他事务仍然可以对该资源加S锁或读锁,但不能加X锁(排他锁),当所有事务释放S锁后,该资源上的S锁才会被解除。
以下是关于MySQL S锁的一些详细信息:
1、作用
防止其他事务修改数据
允许其他事务读取数据
2、使用场景
读多写少的场景
需要保证数据的一致性和隔离性
3、使用方法
在事务开始时,使用SELECT ... LOCK IN SHARE MODE
语句对数据加S锁
在事务结束时,使用COMMIT
或ROLLBACK
语句释放S锁
4、示例
开启事务 START TRANSACTION; 对表table_name加S锁 SELECT * FROM table_name WHERE id = 1 FOR UPDATE; 执行其他操作,如查询、插入、更新等 ... 提交事务,释放S锁 COMMIT;
5、S锁与X锁的比较
S锁(共享锁) | X锁(排他锁) | |
作用 | 防止其他事务修改数据,允许其他事务读取数据 | 防止其他事务修改数据,也不允许其他事务读取数据 |
使用场景 | 读多写少的场景 | 写多读少的场景 |
加锁方式 | SELECT ... LOCK IN SHARE MODE | SELECT ... FOR UPDATE |
释放方式 | 提交事务或回滚事务 | 提交事务或回滚事务 |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/640834.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复