MySQL高级(二)——锁与事务
文章目录
一、MySQL锁机制**
1.1 锁与其应用场景
- MySQL的锁按照数据操作类型分为:读锁(共享锁)、写锁(独享锁)【读读共享,读写、写写互斥】
- 按照数据操作的粒度分为:行锁 和 表锁
锁的类型和适合的场景
- 表锁:适合读多场景,偏向MyISAM存储引擎,开销小,加锁快,锁粒度大,并发度低。
- 行锁:适合事务场景,偏向InnoDB存储引擎,开销大,加锁慢,锁粒度小,并发度高。
读阻塞写、写阻塞读
-
读阻塞写:当一个会话在一个表中加了读锁,那么其他会话也能读此表数据,但是其他表的写数据请求会被阻塞。并且当前表在未释放此表的读锁之前,不能对其他表进行操作,不能对自己读锁定的表进行写数据操作。
-
读阻塞写:当一个会话在一个表中加了写锁,那么其他会话 读写 此表数据阻塞。本会话可以读写此表。
总结一下就是:读锁阻塞写,写锁阻塞读写
手动锁定一行实现一个事务
begin;
select * from test where id=8