MySQL之4--Innodb锁分析

栏目: 数据库 · 发布时间: 6年前

内容简介:MySQL之4--Innodb锁分析

现在 MySQL 的默认存储引擎是InnoDB,其提供了一个很强大的功能就是行级锁。可以通过 show status like 'innodb_row_lock%'; 来查看当前系统的行锁争用情况。如果 Innodb_row_lock_waitsInnodb_row_lock_time_avg 两个值比较高,则说明锁争用比较严重。

概述

InnoDB提供了两种类型的行锁:

  • 共享锁:对于一行已经加了共享锁的记录,可以允许其他共享锁的存在,却不允许其他排他锁的存在。这个可以对比读锁来理解。 SELECT * FROM table WHERE id=1 LOCK IN SHARE MODE
  • 排他锁:对于一行已经加了排他锁的记录。既不允许其他的共享锁存在,也不允许其他排他锁的存在。这个可以对比写锁来理解。 SELECT * FROM table WHERE id=1 FOR UPDATE
    InnoDB行锁是通过对索引进行加锁来执行的,如果没有索引,InnoDB将通过隐藏的聚族索引来对记录进行加锁。InnoDB的行锁分为三种情况:
  • Record Lock : 对唯一索引进行加锁。
  • Gap Lock :
  • Next Key Lock :是 Record LockGap Lock 的合集。

    注意:如果对表的某一行没有任务索引的列进行加锁,那么并不会只对这一行加锁。而是对全表加锁

加锁分析

create table lock_test(
   id int primary key not null auto_increment ,
   name varchar(32) not null ,
   age int not null default 0 ,
   key  `idx_name`(`name`)
);
insert into lock_test(name,age)values('gcl',26);
insert into lock_test(name,age)values('lisi',54);
insert into lock_test(name,age)values('ww',12);
insert into lock_test(name,age)values('zl',9);
insert into lock_test(name,age)values('sq',20);
insert into lock_test(name,age)values('hh',18);
insert into lock_test(name,age)values('zh',15);
insert into lock_test(name,age)values('mm',23);

其中 id 字段加唯一索引。 name 字段加非唯一索引。age字段无索引。 MySQL之4--Innodb锁分析

共享锁与排它锁

建表语句如下:

session1 session2 session3
set autocommit=0; set autocommit=0;
对id=1的事物加共享锁
select * from lock_test where id = 1 lock in share mode;
MySQL之4--Innodb锁分析
其他事物仍然可以对id=1的记录加共享锁
select * from lock_test where id = 1 lock in share mode;
MySQL之4--Innodb锁分析
其他事物对id=1的记录加排它锁,则报错
select * from lock_test where id = 1 for update;
MySQL之4--Innodb锁分析

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

免费

免费

[美] 克里斯·安德森 / 蒋旭峰、冯斌、璩静 / 中信出版社 / 2009-9 / 39.00

在《免费:商业的未来 》这本书,克里斯·安德森认为,新型的“免费”并不是一种左口袋出、右口袋进的营销策略,而是一种把货物和服务的成本压低到零的新型卓越能力。在上世纪“免费”是一种强有力的推销手段,而在21世纪它已经成为一种全新的经济模式。 究竟什么是免费商业模式?根据克里斯·安德森的说法,这种新型的“免费”商业模式是一种建立在以电脑字节为基础上的经济学,而非过去建立在物理原子基础上的经济学。......一起来看看 《免费》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具