锁机制
锁是计算机协调多个进程或线程并发访问某一资源的机制。
在数据库中,除传统的计算机资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤为重要,也更加复杂。
锁的分类
从对数据操作的类型
- 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会相互影响
- 写锁(排他锁):当前写操作没有完成前,它会阻断其他写锁和读锁
对数据操作的粒度
- 表锁: 偏向MyISAM存储引擎,开销小,加速快;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
- 行锁: 偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生冲突的概率最低,并发度也最高。
InnoDB与MyISAM的最大不同有两点:
- 一是支持事务(TRANSACTION)
- 二是采用了行级锁