表锁案例

一、加读锁

建表

CREATE TABLE `mylock` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) ,
  PRIMARY KEY (`id`)
) engine myisam;

插入

INSERT INTO `test`.`mylock`(`id`, `name`) VALUES (1, 'a');
INSERT INTO `test`.`mylock`(`id`, `name`) VALUES (2, 'b');
INSERT INTO `test`.`mylock`(`id`, `name`) VALUES (3, 'c');
INSERT INTO `test`.`mylock`(`id`, `name`) VALUES (4, 'd');
INSERT INTO `test`.`mylock`(`id`, `name`) VALUES (5, 'e');

CREATE TABLE `book` (
  `bookid` int unsigned NOT NULL AUTO_INCREMENT,
  `card` int unsigned NOT NULL,
  PRIMARY KEY (`bookid`),
  KEY `Y` (`card`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (11, 2);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (17, 2);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (2, 3);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (6, 3);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (7, 3);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (5, 4);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (14, 4);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (16, 4);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (4, 5);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (8, 5);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (3, 7);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (20, 7);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (19, 9);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (13, 13);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (9, 14);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (1, 15);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (10, 17);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (15, 19);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (18, 19);
INSERT INTO `test`.`book`(`bookid`, `card`) VALUES (12, 20);

手动增加表锁
lock table 表名字 read(write),表名字2 read(wright),其它;
查看表是否上锁

show open tables;

给mylok上读锁,给book上写锁

lock table mylock read,book write;

解锁

unlock tables;
lock table mylock read

表锁案例_第1张图片

二、加写锁

lock table mylock write;

表锁案例_第2张图片

三、总结

读锁会阻塞写,但是不会阻塞读,而写锁则会把读写都阻塞。

你可能感兴趣的:(表锁案例)