Mysql
文章平均质量分 57
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
Mysql中的锁
表锁意向锁:当你要加表锁时,势必要先遍历该表的所有记录,判断是否加有排他锁。这种遍历检查的方式显然是一种低效的方式,MySQL 引入了意向锁,来检测表锁和行锁的冲突。意向锁也是表级锁,也可分为读意向锁(IS 锁)和写意向锁(IX 锁)。当事务要在记录上加上读锁或写锁时,要首先在表上加上意向锁。这样判断表中是否有记录加锁就很简单了,只要看下表上是否有意向锁就行了。...原创 2021-01-10 00:47:07 · 68 阅读 · 0 评论 -
Mysql:事物的隔离级别
事务并发会出现的几个问题:丢失数据:解决:旺财update A时加一个排他锁。脏读解决:小强读A的数据时应该拥有一个共享锁(规定共享锁读完立刻释放),此时A被旺财的排他锁锁住了,小强没办法获得共享锁,读取不到数据只能阻塞等待。不可重复读解决:难道改成读数据完不立刻释放S锁,到事务结束才释放?这样效率也太慢了吧,,所以要用MVCC。脏读:比如A开启一个事务,B也开启一个事务。A:select * from where name=‘swt’ for update;然后B 插入了id=7,n原创 2021-01-10 00:28:37 · 115 阅读 · 0 评论 -
Mysql :undo log实现事务的原子性
比如旺财有200块钱, 小强有50 块钱,现在旺财要给小强转账,假设转100块吧, 你说说,你是怎么实现要么不做,要么全做的。(1) 开始事务 T1 (假设T1是个事务的内部编号)(2) 旺财余额 = 旺财余额 -100(3) 小强余额 = 小强余额 + 100(4) 提交事务 T1让我们分析一下几种情况:如果系统在4,5之间崩溃,那么undo日志看起来是这样的:[开始事务 T1][事务T1, 旺财原有余额,200]日志里面没有事务结束,所以会进行回滚,将旺财的余额恢复成200原创 2021-01-09 13:20:41 · 346 阅读 · 0 评论