正文开始 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 |