⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL 锁与并发控制

SQL锁:共享锁(S)/排他锁(X)/意向锁(IS/IX)、乐观锁(version字段CAS)、悲观锁(SELECT FOR UPDATE)、死锁排查(SHOW ENGINE INNODB STATUS/LOCK WAIT依赖图) · 难度:入门 · +10XP

SQL 锁与并发控制

当多个用户同时修改同一数据时,需要锁机制来防止数据错乱。理解乐观锁和悲观锁的区别,是设计高并发系统的关键。

悲观锁 —— SELECT FOR UPDATE

START TRANSACTION;
SELECT stock FROM products WHERE id=1 FOR UPDATE; -- 锁定该行
UPDATE products SET stock = stock - 1 WHERE id=1;
COMMIT; -- 释放锁

乐观锁 —— 版本号CAS

-- 读取时记录版本号
SELECT stock, version FROM products WHERE id=1;
-- 更新时检查版本号是否变化
UPDATE products SET stock=stock-1, version=version+1
WHERE id=1 AND version=当前版本号;
-- 如果affected rows=0,说明数据被其他人改过了,重试

动手练习

  1. 基础练习:用SELECT FOR UPDATE模拟两个会话同时扣减库存。
  2. 进阶应用:用乐观锁实现一个简单的并发安全计数器。
  3. 项目实战:评估项目中的并发场景,选择合适的锁策略。
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0