悲观锁和乐观锁的简单了解
悲观锁:悲观锁是由数据库提供的,用于防止数据库并发控制造成的异常。
实现悲观锁:在要进行加锁的事务中的sql语句末加上 for update。
悲观锁正如他的名字一样,比较悲观,他在加锁过程中,不允许任何事务进行查询或增删改。
乐观锁:乐观锁是由逻辑思维实现的,也是用于防止并发控制。
实现乐观锁:需要在数据表中加一个物理列version,还需要在加锁的sql语句加上where条件(根据你的id和version的值进行判断)。
SET autocommit=0;
START TRANSACTION;
UPDATE stock SET scount=scount-10,
`version`=`VERSION`+0.1
WHERE sid=1 AND `version`=1.1
SELECT * FROM stock;
COMMIT;
START TRANSACTION;
UPDATE stock SET scount=scount-10,
`version`=`VERSION`+0.1
WHERE sid=1 AND `version`=1.1
SELECT * FROM stock;
COMMIT;
乐观锁和他的名字也一样,他在加锁过程中,运行事务进行查看,但不允许进行增删改。
两者的优缺点:悲观锁比较安全,但是资费耗费比较大。
乐观锁性能比较好,但是安全性低,容易死锁。 两者可以分场景使用。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步