一、MySQL的并发控制
1、MySQL的并发控制在 服务器层和存储引擎层完成
锁:lock
读锁:共享锁,可以几个用户同事读取,但不能写
写锁:独占锁,
锁粒度:锁表时锁表的范围(比如一个用户读前三行,一个用户写入最后一行)
表级锁:innodb表级锁
行级锁:myisa行级锁(锁控制复杂)
死锁:A请求B,B请求A (自己能协商解锁)
锁分类:
隐式锁:由存储引擎自动完成
显式锁:用户可手动施加锁,表级锁
手动加锁:服务器级别实现
LOCK TABLES tb1 {READ|WRITE},……
UNLOCK TABLES;释放锁
例:>use hellodb;
>LOCK TABLES students READ;
FLUSH TABLES WITH READ LOCK; 关闭表并全局执行读锁
UNLOCK TABLES;
InnoDB存储引擎也支持另外一种显式锁(只锁定挑选的行)
SELECT... LOCK IN SHARE MODE;
SELECT...FOR UPDATE;
2、事务:ACID
一个事务就是一个执行单元:多个sql语句,要么都执行,要么都不执行。
时间: 2024-10-13 21:06:07