mysql进阶(七)数据库锁

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 什么是锁?对数据操作的类型:1.表锁:偏向myISAM存储引擎,开销小,加锁块;无思索;锁定粒度大,发生锁冲突的概率最高,并发度最低;读锁:共享读操作,但是不能进行写操作-- 给表加锁 lock table 表名1 read,表名2 write;-- 查看表的加锁情况show open tables ;-- 解锁unlock tables;写锁:只能写,不能读 如何分析表锁定:可以通过下面状态变量来分析系统上的表锁定。

什么是锁?

对数据操作的类型:

1.表锁:

偏向myISAM存储引擎,开销小,加锁块;无思索;锁定粒度大,发生锁冲突的概率最高,并发度最低;

读锁:共享读操作,但是不能进行写操作


-- 给表加锁
 lock table 表名1  read,表名2 write;
-- 查看表的加锁情况
show open tables ;
-- 解锁
unlock tables;

写锁:只能写,不能读

 

如何分析表锁定:

可以通过下面状态变量来分析系统上的表锁定。

 show status like 'table%';

 Table_locks_immediate:产生表级锁定的次数,表示可以立即获取锁的查询次数,每立即获取锁值加1;
 Table_locks_waited:出现表级锁定争用而发生等待的次数(不能立即获取锁的次数,每等待一次锁值加1),此值高则说明存在着较严重的表级争用的情况

2.行锁

偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁粒度最小,发生锁冲突的概率最低,并发度也最高。

innodb和myisam最大的不同:是支持事务,采用行级锁

 脏读:

不可重复读:

幻读:

 

事务隔离级别:

 

涉及到的表:

create table test_innodb_lock(a int(11),b varchar(16)) engine=innodb;
insert into test_innodb_lock  values(1,'b2');
insert into test_innodb_lock  values(2,'3');
insert into test_innodb_lock  values(4,'40000');
insert into test_innodb_lock  values(5,'5000');
insert into test_innodb_lock  values(6,'6000');
insert into test_innodb_lock   values(7,'7200');
insert into test_innodb_lock  values(8,'8000');
insert into test_innodb_lock  values(9,'9000');
insert into test_innodb_lock  values(10,'1000');
insert into test_innodb_lock  values(1,'b1');

 create index test_innodb_b_ind on test_innodb_lock(b);
 create index test_innodb_a_ind on test_innodb_lock(a);

行锁变成表锁:varchar类型没有加,单双引号;session2阻塞了;

 

间隙锁 

 如何锁定一行:

 

 

行锁的分析:

通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况

show status like 'innodb_row_lock%';

总结:

 

页锁:

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
存储 关系型数据库 MySQL
MySQL的锁机制
MySQL的锁机制主要用于管理并发事务对数据的一致性和完整性的访问控制
21 4
|
7天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
8天前
|
关系型数据库 MySQL 数据库
Docker数据库Mysql
Docker数据库Mysql
|
8天前
|
存储 SQL 关系型数据库
mysql查询数据库表大小怎么操作
mysql查询数据库表大小怎么操作
|
8天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
9天前
|
关系型数据库 MySQL 数据库
【MySQL】:数据库事务管理
【MySQL】:数据库事务管理
23 0
|
9天前
|
SQL 关系型数据库 MySQL
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
18 0
|
9天前
|
SQL 关系型数据库 数据库
【MySQL】:DDL数据库定义与操作
【MySQL】:DDL数据库定义与操作
12 0