赞
踩
mysql并发控制
当有多个查询需要同时修改同一个数据,就会产生并发控制的问题。mysql可以在两个层面进行并发控制:服务器层和存储引擎层。
mysql通过加锁实现并发控制:
⑴锁有两类:
读锁:共享锁,即一个读锁不会阻塞其它读锁,多个用户可同时读取同一个资源,而不互相干扰。
写锁:排他锁,即一个写锁会阻塞其它读写锁,在给定时间内,只有一个用户能执行写入。
⑵锁粒度:
表级锁:锁定整张表
行级锁:并发程度更高,但维护较麻烦,会增加系统开销,易产生死锁。行级锁只能在存储引擎级别实现,MyISAM存储引擎不支持行级锁
⑶锁分类:
隐式锁:由存储引擎自动完成
显式锁:用户可手动施加锁(表级锁)
⑷手动加解锁:服务器级别
LOCK TABLES tb_name {READ|WRITE},...;
UNLOCK TABLES;
FLUSH TABLES WITH READ LOCK; #全局施加读锁
InnoDB存储引擎也支持另外一种显式锁(只锁定挑选出的行):
SELECT ... LOCK IN SHARE MODE;
SELECT ... FOR UPDATE;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。