mysql的锁按粒度分为

烟碎雨落花甽醉 4个月前 117浏览 0评论

什么是锁按粒度分为

锁按粒度分为是指数据库管理系统中为了避免并发访问时数据的不一致性而设计的一种锁机制。按照锁的作用范围不同,锁可以分为行锁和表锁,而按照锁的作用范围不同,锁又可以分为粗粒度锁和细粒度锁。

粗粒度锁

粗粒度锁又称为表锁,其对整张表进行加锁,只要加上锁,整张表就无法被其他并发事务访问,所以粗粒度锁的并发度比较低,容易出现死锁。

细粒度锁

细粒度锁又称为行锁,其对每一行数据进行加锁,只有需要进行修改的行才会被加锁,这样可以提高并发度,降低死锁概率。细粒度锁需要数据库管理系统支持,MySQL支持行级锁,可以在事务中使用“SELECT...FOR UPDATE”或“SELECT...LOCK IN SHARE MODE”语句来使用行级锁。

行锁的优缺点

行锁的优点是提高并发度,降低死锁概率,因为只加锁需要修改的行,不用锁住整张表;缺点是行锁的开销比表锁大,在并发访问较高的情况下,大量的行锁会造成性能下降。

表锁的优缺点

表锁的优点是锁定整张表的代价最小,开销也最小;缺点是并发度低,容易产生死锁。在修改整个表的操作(如TRUNCATE TABLE)时,表锁比行锁更高效。