数据库【MySQL】- 事务「Transaction」与锁「Lock」

1.应用场景

主要用于弄清楚数据库,尤其是MySQL中的事务与锁的关系,如何应用在项目开发中。

2.学习/操作

 

1.文档阅读

面试中的老大难-mysql事务和锁,一次性讲清楚! - 知乎 -- 推荐

【数据库事务与锁机制】- 事务隔离的实现-伙伴云

mysql事务与锁 | Z

Innodb中的事务隔离级别和锁的关系 - 美团技术团队

14 | 答疑篇:分布式事务与分布式锁相关问题-极客时间

将上面的内容都看过来,然后整理出来,整理为xmind

2.整理输出

TBD

后续补充

...

3.问题/补充

1. 如果没有事务,还要锁吗?简单说,锁就是为了解决事务问题而存在的吗?

我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。

简单说,事务时通过锁来解决一些并发访问的问题,也就是即使事务不存在,但是问题存在,也依然需要锁机制。

2. MySQL什么操作会加锁?

Redis-利用Redis的原子操作-Incr实现秒杀 | Code Ant's Blog

**结论 : **

MySQL对于UPDATE、DELETE、INSERT语句, 都会加锁, 导致其他的SQL语句阻塞( 也就是写写阻塞 ), 在高并发的情况下, 虽然保证了数据安全 , 但是数据库会承受大量的IO操作, 大量的操作就会阻塞, 可能会导致宕机等, 所以需要缓冲这些服务, 可以使用MQ来异步操作。

 

⚠️ 这里的死锁,并不一定是两个或者以上的进程/线程(事务)在相互等待对方释放资源。

也有可能只是其中一个事务等待资源释放【忘记释放锁,某种程度上就跟等待另外一个事务释放锁是一样的效果】,但是一直没有释放,从而还是导致僵局,产生死锁。

 

4.参考

参见上面文档列表

后续补充

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值