1.Mysql锁的基本介绍
锁是计算机协调多个进程或线程并发访问某一资源的机制在数据库中,除传统的计算资源(CPU,IO,RAM)的竞争外,数据也是许多用户共享的资源,如何保证数据并发访问的一致性,是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问的一个重要因素,从这个角度而言,锁对于数据库显得尤为重要,也更加复杂。
Mysql由于自身架构问题,最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking)。InnoDB存储引擎即支持行级锁(row-level locking),也支持表级锁,但是默认情况下,采用行级锁。
表级锁:开销小,加锁快;不会出现死锁;锁的粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁的粒度小,发生锁冲突的概率最低,并发度也最高。
从上述特点可见,很难笼统的说哪种锁更好,只能就具体的应用场景来说哪种锁更合适!仅从锁的角度来说:表级锁更适合以查询为主,只有少量按索引条件更新数据的应用,如web应用;而行级锁则更适合于大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理系统(OLTP)。
2.MyISAM表锁
文章来源: segmentfault.com,作者:MackingJay,版权归原作者所有,如需转载,请联系作者。
原文链接:segmentfault.com/a/1190000038706025