mysql锁有哪些意思
mysql锁机制是数据库为了包管数据的一致性,而使各种同享资源在被并发拜访变得有序所设计的一种规则。mysql各储备引擎使用了三品种型的锁定机制,离别是:表级锁定、行级锁定、页级锁定。
锁详解
(引荐教程:mysql教程)
数据库锁机制简便来说就是,数据库为了包管数据的一致性,而使各种同享资源在被并发拜访变得有序所设计的一种规则。
关于任何一种数据库来说都需要有响应的锁定机制,所以MySQL天然也不克不及例外。MySQL数据库由于其本身架构的特点,存在多种数据储备引擎,每种储备引擎所针对的利用场景特点都不太一样,为了知足各自特定利用场景的需求,每种储备引擎的锁定机制都是为各自所面临的特定场景而优化设计,所以各储备引擎的锁定机制也有较大不同。
MySQL各储备引擎使用了三品种型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。
具体介绍:
1、表级锁定(table-level)
表级别的锁定是MySQL各储备引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简便,带来的系统负面影响最小。所以猎取锁和开释锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的幸免困扰我们的死锁问题。
当然,锁定颗粒度大所带来最大的负面影响就是显现锁定资源争用的概率也会最高,致使并大度大打折扣。
使用表级锁定的主如果MyISAM,MEMORY,CSV等一些非事务性储备引擎。
2、行级锁定(row-level)
行级锁定最大的特点就是锁定对象的颗粒度很小,也是当前各大数据库治理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予利用程序尽大概大的并发处置能力而提高一些需要高并发利用系统的团体机能。
虽然能够在并发处置能力上面有较大的优势,但是行级锁定也因此带来了不少弊端。由于锁定资源的颗粒度很小,所以每次猎取锁和开释锁需要做的事情也更多,带来的耗损天然也就更大了。此外,行级锁定也最容易发生死锁。
使用行级锁定的主如果InnoDB储备引擎。
3、页级锁定(page-level)
页级锁定是MySQL中比力奇特的一种锁定级别,在其他数据库治理软件中也并不是太常见。
页级锁定的特点是锁定颗粒度介于行级锁定与表级锁之间,所以猎取锁定所需要的资源开销,乃至所能供给的并发处置能力也一样是介于上面二者之间。别的,页级锁定和行级锁定一样,会发生死锁。
在数据库实现资源锁定的历程中,随着锁定资源颗粒度的减小,锁定雷同数据量的数据所需要耗损的内存数目是越来越多的,实现算法也会越来越复杂。不外,随着锁定资源颗粒度的减小,利用程序的拜访恳求碰到锁等候的大概性也会随之落低,系统团体并发度也随之晋升。
使用页级锁定的主如果BerkeleyDB储备引擎。
总结:
MySQL这3种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会显现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
行级锁:开销大,加锁慢;会显现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;
页面锁:开销和加锁时间界于表锁和行锁之间;会显现死锁;锁定粒度界于表锁和行锁之间,并发度一样。
适用:从锁的角度来说,表级锁更适合于以查询为主,只要少量按索引前提更新数据的利用,如Web利用;而行级锁则更适合于有大量按索引前提并发更新少量不一样数据,同时又有并发查询的利用,如一些在线事务处置(OLTP)系统。
以上就是mysql锁是啥意思的具体内容,更多请关注百分百源码网其它相关文章!