MySQL中锁的种类

正文开始

https://www.jianshu.com/p/fe708aad6113 MySQL锁粒度 表级锁 是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MyISAM与InnoDB都支持表级锁定。表级锁分为表共享读锁与表独占写锁。 行级锁 是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁 和 排他锁。 作者:紫葡萄0 链接:https://www.jianshu.com/p/fe708aad6113 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 乐观锁和悲观锁是一种思想,不是具体实现,在MySQL中,有锁的具体的实现方式 (文中的线程在MySQL中可以视作MySQL的连接) 共享锁 一个线程在持有锁时,其他的线程可以查询被锁的数据,但是不能修改,不能删除。实现方式 SELECT * FROM table_name WHERE id =? lock in share mode; 排它锁 一个线程在持有锁时,其他的线程不能查询,不能更新,不能删除被锁的数据,直到锁被释放. SELECT * FROM table_name WHERE id =? for update 总结一下:共享锁类似于java中的读锁,一个线程在持有乐观锁的时候,其他的线程也可以对被锁的数据进行读操作,但是不能对被锁的数据进行删除和更新操作;排他锁类似于java的写锁,一个线程持有写锁的时候,其他的线程不能再对被锁的数据进行任何查询,更新,删除操作。 重点 InnoDB的行锁是基于索引实现的,如果在查询中不使用索引,会锁表。 作者:紫葡萄0 链接:https://www.jianshu.com/p/fe708aad6113 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

正文结束

Mysql Innodb 引擎优化 参数 lnmp重启mysql