mysql锁和事务
2021/8/14 19:05:58
本文主要是介绍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锁和事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南