锁的类型
基于锁的属性分类:共享锁、排他锁。
基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、 MYISAM)、 页级锁(BDB引擎)、 记录锁、间隙锁、临键锁。
基于锁的状态分类:意向共享锁、意向排它锁。
●共享锁(Share Lock)
共享锁又称读锁,简称S锁; 当:一个事务为数据加上读锁之后,其他事务只能对该数据加读锁,而不能对数据加写锁,直到所有的读锁释放之后其他事务才能对其进行加持写锁。共享锁的特性主要是为了支持并发的读取数据,读取数据的时候不支持修改,避免出现重复读的问题。
●排他锁(eXclusive Lock)
排他锁又称写锁,简称X锁; 当一个事务为数据加上写锁时,其他请求将不能再为数据加任何锁,直到该锁释放之后,其他事务才能对数据进行加锁。排他锁的目的是在数据修改时候,不允许其他人同时修改,也不允许其他人读取。避免了出现脏数据和脏读的问题。
●表锁
表锁是指上锁的时候锁住的是整个表,当下:一个事务访问该表的时候,必须等前一个事务释放了锁才能进行对表进行访问;
特点:粒度大, 加锁简单,容易冲究:
●行锁
行锁是指上锁的时候锁住的是表的某一-行或多行记录, 其他事务访问同一张表时,只有被锁住的记录不能访问,其他的记录可正常访问;
特点:粒度小,加锁比表锁麻烦,不容易冲突,相比表锁支持的并发要高;
- 意向共享锁:事务想要获得一张表中某几行的共享锁
- 意向排他锁:事务想要获得一张表中某几行的排他锁