MySQL高级 - 锁 - MyISAM表锁 - 读锁
生活随笔
收集整理的這篇文章主要介紹了
MySQL高级 - 锁 - MyISAM表锁 - 读锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何加表鎖
MyISAM 在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行更新操作(UPDATE、DELETE、INSERT 等)前,會自動給涉及的表加寫鎖,這個過程并不需要用戶干預,因此,用戶一般不需要直接用 LOCK TABLE 命令給 MyISAM 表顯式加鎖。
顯示加表鎖語法:
加讀鎖 : lock table table_name read;加寫鎖 : lock table table_name write;讀鎖案例
準備環境
create database demo_03 default charset=utf8mb4;use demo_03;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,'java編程思想','2088-08-01','1'); INSERT INTO tb_book (id, name, publish_time, status) VALUES(NULL,'solr編程思想','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,'田伯光');客戶端 一 :
1)獲得tb_book 表的讀鎖
lock table tb_book read;2) 執行查詢操作
select * from tb_book;可以正常執行 , 查詢出數據。
客戶端 二 :
3) 執行查詢操作
select * from tb_book;?
客戶端 一 :
4)查詢未鎖定的表
select name from tb_seller;?
客戶端 二 :
5)查詢未鎖定的表
select name from tb_seller;?
可以正常查詢出未鎖定的表;
客戶端 一 :
6) 執行插入操作
insert into tb_book values(null,'Mysql高級','2088-01-01','1');?
執行插入, 直接報錯 , 由于當前tb_book 獲得的是 讀鎖, 不能執行更新操作。
客戶端 二 :
7) 執行插入操作
insert into tb_book values(null,'Mysql高級','2088-01-01','1');?
當在客戶端一中釋放鎖指令 unlock tables 后 , 客戶端二中的 inesrt 語句 , 立即執行 ;
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的MySQL高级 - 锁 - MyISAM表锁 - 读锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL高级 - 锁 - MySQL对
- 下一篇: MySQL高级 - 锁 - MyISAM