天天看点

mysql并发控制

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; 

本文转自 jin626889 51CTO博客,原文链接:http://blog.51cto.com/zuoshou/1751350,如需转载请自行联系原作者