乐趣区

关于数据库:Mysql锁机制

1.Mysql 锁的根本介绍

锁是计算机协调多个过程或线程并发拜访某一资源的机制 在数据库中,除传统的计算资源(CPU,IO,RAM)的竞争外,数据也是许多用户共享的资源,如何保证数据并发拜访的一致性,是所有数据库必须解决的一个问题,锁抵触也是影响数据库并发拜访的一个重要因素,从这个角度而言,锁对于数据库显得尤为重要,也更加简单。
Mysql 因为本身架构问题,最显著的特点是不同的存储引擎反对不同的锁机制。比方,MyISAM 和 MEMORY 存储引擎采纳的是表级锁(table-level locking)。InnoDB 存储引擎即反对行级锁(row-level locking),也反对表级锁,然而默认状况下,采纳行级锁。

表级锁:开销小,加锁快;不会呈现死锁;锁的粒度大,产生锁抵触的概率最高,并发度最低。
行级锁:开销大,加锁慢;会呈现死锁;锁的粒度小,产生锁抵触的概率最低,并发度也最高。

从上述特点可见,很难抽象的说哪种锁更好,只能就具体的利用场景来说哪种锁更适合!仅从锁的角度来说:表级锁更适宜以查问为主,只有大量按索引条件更新数据的利用,如 web 利用;而行级锁则更适宜于大量按索引条件并发更新大量不同数据,同时又有并发查问的利用,如一些在线事务处理零碎(OLTP)。

2.MyISAM 表锁

退出移动版