1. 概述
1.1 定义
锁时计算机协调多个进程或线程并发访问某一资源的机制。
在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
1.2 应用
当然这里是举个例子表达意思,事实更加复杂。
1.3 锁的分类
- 从对数据库操作的类型分,分为
读锁和写锁
读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响
写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁 - 从对数据操作的粒度分,分为
表锁和行锁
2. 三锁
2.1 表锁(偏读)
表锁偏向MyISAM存储引擎,开销小,加锁快,无思索,锁定粒度大,发生锁冲突的概率最高,并发度最低。
2.1.1 基本操作
- 建表SQL
CREATE TABLE `mylock` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- 插入数据
INSERT INTO `test`.`mylock` (`id`, `NAME`) VALUES ('1', 'a');
INSERT INTO `test`.`mylock` (