我们学习了数据库的事务及事务的隔离级别,但是数据库是怎样隔离事务的呢?这时候就牵连到了数据库锁。当插入数据时,就锁定表,这叫做”锁表”;当更新数据时,就锁定行,这叫做”锁行”。当多个用户对数据库进行操作时,会带来数据不一致的情况,所以,锁主要是在多用户情况下保证数据库数据完整性和一致性。本文是MySQL第四讲,分析MySQL的锁机制,将详细接收InnoDB 存储引擎对表中数据的锁定,同时分析InnoDB存储引擎会以怎样的粒度锁定数据。
文章目录
1、MySQL 的锁机制? 重难点 20201006 补充
- 问题背景:开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另一方面还要确保每个用户能以一致的方式读取和修改数据,因此有了锁机制。
1.1、什么是锁?
-
锁机制用于管理对共享资源的并发访问, 提供数据的完整性和一致性。InnoDB存储引擎会在行级别对表数据上锁。
- 对于MyISAM引擎,其锁为表锁设计,并发插入时性能会差一点
- 对于SQL Server数据库,2005版本之前都是页锁,到了2005版本,支持乐观并发和悲观并发,在乐观并发下开始支持行级锁。
- InnoDB存储引擎锁的实现和Oracle数据库非常类似,提供一致性的非锁定读、行级锁支持。行级锁没有相关额外的开销&#