【SQL】MySQL 的乐观锁和悲观锁
乐观锁和悲观锁是数据库管理中用于处理并发写入冲突的两种方法。
悲观锁:
悲观锁通常使用
SELECT ... FOR UPDATE
语句实现,它会在读取数据时锁定数据行。当其他事务尝试访问这些行时,它们将等待直到悲观锁被释放。
-- 开启事务
START TRANSACTION;
-- 选择需要更新的行,并对其加锁
SELECT * FROM your_table WHERE condition LIMIT 1 FOR UPDATE;
-- 执行更新操作
UPDATE your_table SET column = value WHERE condition;
-- 提交事务
COMMIT;
乐观锁:
乐观锁通常使用版本号或时间戳字段实现。更新数据时,会检查版本号或时间戳是否有变化,如果没有变化,则执行更新。
-- 更新时,同时比较版本号
UPDATE your_table
SET column = value, version = version + 1
WHERE condition AND version = old_version;
乐观锁和悲观锁各有优势,乐观锁通过减少锁竞争提高了系统性能,而悲观锁在事务处理中保持数据的独占性。在选择锁策略时,应根据实际需求和系统负载来权衡使用。
评论已关闭