mysql的各种锁简单总结

匿名 (未验证) 提交于 2019-12-02 22:02:20

表总体上分为三种:

  1、表锁 Myisam  开销小,并发低,加锁快,不会出现死锁问题;锁粒度大,发生锁冲突的概率最高。

  3、页面锁     开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。(不常用)

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

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

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

MyIsam锁模式:

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

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

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

InnoDb锁模式:

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

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

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!