当前位置:Gxlcms > 数据库问题 > mysql的各种锁简单总结

mysql的各种锁简单总结

时间:2021-07-01 10:21:17 帮助过:16人阅读

 

共享锁(读锁)/排它锁(写锁)

  共享锁又叫读锁,是读取操作创建的锁。其他用户可以同步读取数据,但是不能够写数据。

  排它锁又叫写锁,是更新操作创建的锁。其他用户不可以同步读取数据更不能写数据。

 

MyIsam锁模式:

  MyIsam引擎在执行查询语句前,会自动给涉及到的表添加读锁;在更新操作前会自动给涉及到的表加写锁。

  a、对MyIsam中的表进行读取操作,其他用户可以进行读取,但是不能修改;

  b、对MyIsam中的表进行更新操作,其他用户不能进行读取,更不能进行操作。

 

InnoDb锁模式:

  对于insert、update、delete,InnoDB会自动给涉及的数据加排他锁(X);对于一般的Select语句,InnoDB不会加任何锁,事务可以通过以下语句给显示加共享锁或排他锁。
共享锁: SELECT ... LOCK IN SHARE MODE;
排他锁: SELECT ... FOR UPDATE;

InnoDb是根据索引加行锁的,如果没有索引的话依然是加表锁。因此如果多行数据都使用同一个索引,会出现锁冲突。

 

乐观锁:不加锁,更新数据时需要查看该数据是否在更新期间被更改过,如果有被更改过就放弃本次更新。否则将更新提交。适合多为查询的场景。当出现大量更新操作时,可能会造成大量冲突的情况。

悲观锁:每次获取数据时都要对数据进行加锁,确保自己使用该数据时,该数据不会被别人修改。适用于多为更新操作的场景。当出现大量读操作时,每次读取都会加锁,会造成堵塞。

  

mysql的各种锁简单总结

标签:排它锁   适合   family   出现   情况   大量   行操作   upd   lock   

人气教程排行