admin 管理员组

文章数量: 1086019


2024年4月14日发(作者:booth算法的原理)

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

数据库,高并发,死锁,解决方案

篇一:读《MySQL性能调优与架构设计》笔记之MySQL 数

据库锁定机制

1. MySQL锁定机制简介

MySQL 各存储引擎使用了三种类型(级别)的锁定机

制:行级锁定,页级锁定和表级锁定。下面我们先分析一下

MySQL 这三种锁定的特点和各自的优劣所在。

? 行级锁定(row-level)

行级锁定最大的特点就是锁定对象的颗粒度很小,也

是目前各大数据库管理软件所实现的锁定颗粒度最小的。由

于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,

能够给予应用程序尽可能大的并发处理能力而提高一些需

要高并发应用系统的整体性能。

虽然能够在并发处理能力上面有较大的优势,但是行

级锁定也因此带来了不少弊端。由于锁定资源的颗粒度很小,

所以每次获取锁和释放锁需要做的事情也更多,带来的消耗

自然也就更大了。此外,行级锁定也最容易发生死锁。 ? 表

级锁定(table-level)

和行级锁定相反,表级别的锁定是MySQL 各存储引擎

中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻

辑非常简单,带来的系统负面影响最小。所以获取锁和释放

锁的速度很快。由于表级锁一次会将整个表锁定,所以可以

1文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

很好的避免困扰我们的死锁问题。

当然,锁定颗粒度大所带来最大的负面影响就是出现

锁定资源争用的概率也会最高,致使并大度大打折扣。

? 页级锁定(page-level)

页级锁定是MySQL 中比较独特的一种锁定级别,在其

他数据库管理软件中

也并不是太常见。页级锁定的特点是锁定颗粒度介于行

级锁定与表级锁之间,所以获取锁定所需要的资源开销,以

及所能提供的并发处理能力也同样是介于上面二者之间。另

外,页级锁定和行级锁定一样,会发生死锁。

在数据库实现资源锁定的过程中,随着锁定资源颗粒

度的减小,锁定相同数据量的数据所需要消耗的内存数量是

越来越多的,实现算法也会越来越复杂。不过,随着锁定资

源颗粒度的减小,应用程序的访问请求遇到锁等待的可能性

也会随之降低,系统整体并发度也随之提升。

在MySQL 数据库中,使用表级锁定的主要是MyISAM,

Memory,CSV 等一些非事务性存储引擎,而使用行级锁定的

主要是Innodb 存储引擎和NDB Cluster 存储引擎,页级锁

定主要是BerkeleyDB存储引擎的锁定方式。

2. 合理利用锁机制优化MySQL

MyISAM表锁优化建议

对于MyISAM 存储引擎,虽然使用表级锁定在锁定实现

2文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.


本文标签: 锁定 并发 资源 颗粒 需要