文章目录
前言
本篇文章将对MySQL的表锁和行锁进行详细介绍,以及分析对比之间的区别,希望对大家起到参考作用。
一、MySQL 行锁和表锁最主要的区别
1.行锁
支持的存储引擎:Innodb;特点:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高
2.表锁
支持的存储引擎:Innodb、MyIsam;特点:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低
二、细分表锁
对于表级锁,主要分为以下三类: 表锁 元数据锁(meta data lock,MDL) 意向锁
1.表锁:
表锁分为:表共享读锁(read lock)和 表独占写锁(write lock)其中读锁不会阻塞其他客户端的读,但是会阻塞写。写锁既会阻塞其他客户端的读,又会阻塞其他客户端的写。
2.元数据锁
meta data lock , 元数据锁,简写MDL。MDL加锁过程是系统自动控制,无需显式使用,在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作