mysql锁和事务

一、锁

行级锁是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锁和事务

上一篇:mysql 查询数据库大小


下一篇:windows下postgresql数据库备份和还原