首页 > 数据库技术 > 详细

mysql锁和事务

时间:2021-08-14 16:56:26      阅读:17      评论:0      收藏:0      [点我收藏+]

一、锁

行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大

表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支

二、乐观锁 悲观锁

乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。

  • 乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。
  • 悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。

三、事务

事务就是指逻辑上的一组sql语句操作,组成这组操作的sql语句,要么全成功要么全失败。

-- 从id=1的账户给id=2的账户转账100元
-- 第一步:将id=1的A账户余额减去100
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- 第二步:将id=2的B账户余额加上100
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

上述两条sql操作,要么都执行,要么都不执行,不然钱就对不上了。这就是事务的原子性(Atomicity)。

事务的四大特性:

1.原子性:事务时不可分割的单位,要么一起发生,要么一起失败。

2.一致性:事务发生前后,数据的完整性保持一致。

3.隔离性:多个并发事务之间的数据使相互隔离的。

4.持久性:事务一旦提交,他对数据库的改变就是永久的。事务不能撤销。

 

 

mysql锁和事务

原文:https://www.cnblogs.com/dzwclimber/p/15141076.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!