目录

程序员子悠 · 好记性不如烂笔头

技术人生 X 人生技术

存档: 2019 年 06 月 (1)

面试你应该知道的 MySQL 的锁

背景 数据库的锁是在多线程高并发的情况下用来保证数据稳定性和一致性的一种机制。MySQL 根据底层存储引擎的不同,锁的支持粒度和实现机制也不同。MyISAM 只支持表锁,InnoDB 支持行锁和表锁。目前 MySQL 默认的存储引擎是 InnoDB,这里主要介绍 InnoDB 的锁。 InnoDB 存储引擎 使用 InnoDB 的两大优点:一是支持事务;二是支持行锁。 MySQL 的事务 在高并发的情况下事务的并发处理会带来几个问题 脏读:**指在事务 A 处理过程里读取到了事务 B 未提交的事务中的数据。**比如在转账的例子中:小 A 开了一个事务给小 B 转了1000 块,还没提交事务的时候就跟小 B 说,钱已经到账了。这个时候小 B 去看了一下余额,发现果真到账了(然后就开开心心刷抖音去了),这个时候小 A 回滚了事务,把 1000 块又搞回去了。小 B 刷完抖音再去看下余额,发现钱又不见了。 不可重复读:**指在一个事务执行的过程中多次查询某一数据的时候结果不一致的现象,由于在执行的过程中被另一个事务修改了这个数据并提交了事务。**比如:事务 A 第一次读小明的年龄是 18 岁....