欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mysql锁问题

程序员文章站 2022-04-24 07:54:46
mysql锁问题锁的概述Mysql锁MylSAM锁如何加表锁InnoDB锁问题锁的概述注意:数据库中所有关于锁的一些问题,都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的! 因此,对于Innodb存储引擎,必须先将自动提交功能关闭 set autocommit=0Mysql锁MylSAM锁MyISAM存储引擎只支持表锁,这也是MSQL开始几个版本中唯一支持的锁类型如何加表锁Myl...

锁的概述

Mysql锁问题
注意:数据库中所有关于锁的一些问题,都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的!都是在事务中讨论的! 因此,对于Innodb存储引擎,必须先将自动提交功能关闭 set autocommit=0

Mysql锁

Mysql锁问题

MylSAM锁

MyISAM存储引擎只支持表锁,这也是MSQL开始几个版本中唯一支持的锁类型

如何加表锁

MylSAM在执行查询语句( SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作( UPDATE、 DELETE、 INSERT等)前,会自动给
涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用 LOCK TABLE命令给MSAM表员式加锁

显示加表锁语法

加读锁
lock table table name read:
加写锁
lock table table name write i

522读锁案例
准备环境



--注意啊!!!建表的时候表名和字段名都不要加引号,要用英文封号;结尾
create database demo_001 default charset=utf8mb4;
use demo_001;
CREATE TABLE tb_book(
id INT (11) auto_increment,
name VARCHAR(50) DEFAULT NULL,
publish_time DATE DEFAULT NULL,
status CHAR(1) DEFAULT NULL,
PRIMARY KEY (id)
)ENGINE=myisam DEFAULT CHARSET=utf8;


INSERT INTo tb_book (id, name, publish_time, status) VALUES(NULL, 'javasE3A8','2088-08-01', '1');
INSERT INTO tb_book (id, name, publish_time, status) VALUES (NULL, 'solrsE', '2088-08-08','0');



CREATE TABLE tb_user (

id INT(11) auto_increment,
name VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (id)

) ENGINE=myisam DEFAULT CHARSET=utf8;

INSERT INTO tb_user(id, name) VALUES(NULL,'令狐冲');
INSERT INTO tb_user(id, name) VALUES(NULL,'田伯光');

共享的意思就是这个表加了读锁,这个读锁也共享给了其他的表,所以其他的表也能够读, 加了读锁,写的操作一概不能执行,自己也不能执行写的操作,更不要提其他的表了

排他锁,就是独自占有的意思,不会共享给其他人,自己一个人拥有,自己可以写操作,也可以读操作,其他的线程不会拥有这个写锁,所以就更不要提读了
Mysql锁问题Mysql锁问题
Mysql锁问题Mysql锁问题Mysql锁问题

InnoDB锁问题

Mysql锁问题Mysql锁问题Mysql锁问题

create table test(

id int(11) ,

name varchar(16),

sex varchar (1)

)engine = innodb default charset=utf8;

insert into test values(1, '100','1');
insert into test values(3,'3','1');
insert into test values(4, '400','0');
insert into test values(5, '500','1');
insert into test values(6,'600' , '0' );
insert into test values(7, '700','0');
insert into test values(8,'800','1');
insert into test values(9, '900', '1');
insert into test values(1, '200','0');

create index idx_test_id on test(id);

create index idx_test_name on test(name);


Mysql锁问题Mysql锁问题
当索引失效的时候,行锁就会变为表锁

Mysql锁问题Mysql锁问题Mysql锁问题Mysql锁问题

本文地址:https://blog.csdn.net/qq_42350785/article/details/107624054