【建议收藏】MySQL 三万字精华总结 —锁机制和性能调优(四)
七、MySQL锁机制 ❝ 数据库的乐观锁和悲观锁? MySQL 中有哪几种锁,列举一下? MySQL中InnoDB引擎的行锁是怎么实现的? MySQL 间隙锁有没有了解,死锁有没有了解,写一段会造成死锁的 sql 语句,死锁发生了如何解决,MySQL 有没有提供什么机制去解决死锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。 打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?这里肯定要用到事物,我们先从库存表中取出物品数量,然后插入订单,付款后插入付款表信息,然后更新商品数量。在这个过程中,使用锁可以对有限的资源进行保护,解决隔离和并发的矛盾。 锁的分类 从对数据操作的类型分类 : 读锁 (共享锁):针对同一份数据,多个读操作可以同时进行,不会互相影响 写锁 (排他锁):当前写操作没有完成前,它会阻断其他写锁和读锁 从对数据操作的粒度分类 : 为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资源的事情