mysq 排它锁x 和 共享锁s

本文详细解析了在事务中共享锁与排它锁的工作原理及兼容性。共享锁通过lockinsharemode实现,允许多个事务读取但阻止写入;排它锁在update、insert、delete操作中自动加锁,阻止其他事务读写。S锁兼容S锁,X锁不兼容S锁和X锁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先排它锁 共享锁 都有一个前提 必须是事务开启状态

都是在事务中发生的。。。。

#共享锁 需要加 lock in share mode

select * from table where .....lock in share mode

#一致性非锁定读

select * from table where ......

#排它锁

update ,insert ,delete 自动的会加上排它锁 

select * from table_name where .....for update



举例

共享锁兼容共享锁 

图一

图二

图一开启s锁 图二也可以使用共享锁。。。这就代表了s锁 是可以兼容的 共享锁


举例 

排它锁 不 兼容共享锁 排它锁

图一 排它锁 x锁

图二 共享锁 s锁  此时因为有图一的x锁 所以s锁 不兼容

图三 排它锁 x锁 也不兼容

结论 s锁和s锁可以相互兼容  x锁和(x锁,s锁)相互不兼容



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30127122/viewspace-2649854/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30127122/viewspace-2649854/

特殊条件查询通常是指在SQL查询中使用某些非常规或高级功能的查询。例如,在MySQL中,你可能会遇到以下情况: - **模糊匹配**:使用`LIKE`关键字进行部分字符串匹配,如查找名字包含"John"的用户: ```sql SELECT * FROM users WHERE name LIKE '%John%'; ``` - **自连接查询**:用于在一个表中引用自身,比如查找拥有最多订单的用户: ```sql SELECT a.user_id, COUNT(b.order_id) as order_count FROM users a INNER JOIN orders b ON a.id = b.user_id GROUP BY a.user_id ORDER BY order_count DESC LIMIT 1; ``` - **子查询**:嵌套在其他查询内部,比如找出价格高于平均价格的产品: ```sql SELECT * FROM products WHERE price > (SELECT AVG(price) FROM products); ``` 多表查询(也称为JOIN查询)涉及两个或更多表之间的数据整合,以便获取关联的数据。常见的JOIN类型有INNER JOIN、LEFT JOIN、RIGHT JOINFULL OUTER JOIN。 - **INNER JOIN**: 返回两个表中有匹配数据的行,如查找用户及其订单信息: ```sql SELECT users.name, orders.product_id FROM users INNER JOIN orders ON users.id = orders.user_id; ``` - **LEFT JOIN**: 返回左表的所有行,如果右表无对应则返回NULL值,如查看所有用户及他们的订单(如果有),包括未下单用户: ```sql SELECT users.*, IFNULL(orders.product_id, 'No Order') as product_id FROM users LEFT JOIN orders ON users.id = orders.user_id; ``` 这些特殊条件多表查询都是为了从多个源中提取所需信息,并允许更复杂的分析报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值