MySQL数据库锁


MySQL数据库锁



目录
1 MYSQL数据库锁简介 1
1.1 MYSQL数据库锁机制简介 1
2 MYSQL数据库锁分类 1
2.1 行级锁定(ROW-LEVEL) 1
2.2 表级锁定(TABLE-LEVEL) 1
2.3 页级锁定(PAGE-LEVEL) 1



1 MySQL数据库锁简介
1.1 MySQL数据库锁机制简介
在大数据并发操作的今天,为了保证数据一致完整性,任何一个数据库都存在锁机制。锁机制的优劣直接影响到一个数据库的并发能力和性能,所以锁机制的实现也是数据库的核心技术之一。
MySQL数据库由于其自身架构的特点,存在多种数据库存储引擎,每种存储引擎所针对的应用场景都不同,为了满足各种特定使用场景的需求,每种存储引擎的锁机制都是有所不同的。下面主要是对数据库使用最为频繁的存储引擎MyISAM,BDB和Innodb各自的锁机制进行一些简单的分析。

2 MySQL数据库锁分类
总的来说,MySQL各种存储引擎使用了三种级别的锁机制:行级锁定(Innodb),页级锁定(BDB),表级锁定(MyISAM)。

2.1 行级锁定(row-level)
行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前数据库管理软件所实现锁定粒度最小的。由于锁定粒度很小,所以发生锁定资源争用的概率也是最小的,能够给予应用程序尽可能并发处理能力而提高一些需求高并发应用系统的整体性能。
虽然能够在并发处理能力上面有较大的优势,但是行级锁定也因此带来了不少弊端。由于锁定资源的颗粒度很小,所以每次获取锁和释放锁想要做的事情也更多,带来的消耗自然也就更大,另外,行级锁定也是最容易发生死锁的。

2.2 表级锁定(table-level)
和行级锁定相反,表级锁定时MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点就是逻辑非常简单,带来的消耗和负面影响最小,所以获取锁和释放锁的速度很快。由于表级锁定一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。
当然,锁定粒度大带来的最大负面影响就是出现锁定资源争用的概率也会最高,致使并发度和性能大大下降。

2.3 页级锁定(page-level)
页级锁定时MySQL中比较特别的一种锁定级别,在其他数据库管理软件中也是不太常见的,它的特点就是锁定的颗粒度介于行级和表级之间,所以获取锁定需求的资源开销,以及所能提供的并发处理能力也同样介于两者之间。另外页级锁定和行级锁定一样,也会发生死锁。
在数据库实现资源锁定的过程中,随着锁定资源颗粒度的减小,锁定相同数据量的数据所需要的内存数量也会越来越多,实现的算法也会越来越复杂。不过,随着锁定资源颗粒度的减小,应用程序的访问请求遇到锁等待的可能性也会随之降低,系统整体的并发度也会随之提升。




猜你喜欢

转载自xmong.iteye.com/blog/1563769