如何加表锁

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 语句 , 立即执行 ;

MySQL高级 - 锁 - MyISAM表锁 - 读锁相关推荐

  1. MySQL高级 - 锁 - MyISAM表锁 - 小结

    锁模式的相互兼容性如表中所示: 由上表可见: ​ 1) 对MyISAM 表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求: ​ 2) 对MyISAM 表的写操作,则会阻塞其他用户 ...

  2. MySQL高级 - 锁 - MyISAM表锁 - 查看锁争用情况

    查看锁的争用情况 In_user : 表当前被查询使用的次数.如果该数为零,则表是打开的,但是当前没有被使用. Name_locked:表名称是否被锁定.名称锁定用于取消表或对表进行重命名等操作. s ...

  3. MySQL高级 - 锁 - MyISAM表锁 - 写锁

    写锁案例 客户端 一 : 1)获得tb_book 表的写锁 lock table tb_book write ; 2)执行查询操作 select * from tb_book ; 查询操作执行成功: ...

  4. MySQL:行锁、表锁、乐观锁、悲观锁、读锁、写锁

    1.锁的分类 1.1从对数据操作的类型来分 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响. 结论1: --如果某一个会话 对A表加了read锁,则 该会话 可以对A表进行读操作 ...

  5. MySQL中的锁机制、MyISAM表锁、MyISAM表级锁争用情况、MyISAM并发插入Concurrent Inserts、MyISAM的锁调度

    前言: 关于读锁.写锁.乐观锁.悲观锁.行锁.表锁的理解可以看看以前我写的: 读锁.写锁.乐观锁.悲观锁.行锁.表锁 内部锁:在MySQL服务器内部执行的锁,以管理多个会话对表内容的争用.这种类型的锁 ...

  6. MySQL(二):详解MyIsam表锁

    1.MySQL锁基本介绍 锁是计算机协调多个进程或线程并发访问某一个资源的机制.在数据库层面,除传统的计算机资源(CPU.RAM.I/O等)的争用之外,数据也是一种供多用户共享的资源.如何保证数据并发 ...

  7. Mysql高级部分--索引、锁等详解

    1.索引 1.1.概念 1.2.索引的优势和劣势 1.3.索引的分类 1.4.mysql索引结构 1.4.1.B树的检索原理 1.初始化介绍: 一颗B+树,浅蓝色的块我们称之为一个磁盘块,可以看到每个 ...

  8. MySQL中的锁(表锁、行锁)

    锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数 ...

  9. mysql某个表被行锁了_MySQL中的锁(表锁、行锁)

    锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数 ...

最新文章

  1. unity球体添加光源_Unity渲染路径——光源种类
  2. poj 1556 (Dijkstra + Geometry 线段相交)
  3. 【转】Java开发必须要知道的知识体系
  4. 软件测试除了边界值还有什么,在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值...
  5. import com.google.common.* 出错,找不到
  6. Python是最好的编程语言,Locust是最好的压测工具,不服来辩!
  7. 使用Zabbix2.2自带的Mysql监控模板监控数据库
  8. Memory Monitor
  9. UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 0: ordinal not in range(128)
  10. 小米8SE如何安装google框架-之 chrome 手机安装 没有可安装该应用的设备
  11. 白话讲解RPC调用和HTTP调用的区别
  12. nack fec心得
  13. numpy转str python_python-numpy数组上的str()方法并返回
  14. 青少年计算机等级测试内容,青少年人工智能技术水平测试一级等级考试介绍
  15. 如何给excel的单元格添加斜线并在对角线
  16. 数学建模复习——代码记录
  17. win7更新错误0x800b0109_win7更新漏洞后产生0x0000006B蓝屏的解决方法图解
  18. mysql xtrabackup安装_xtrabackup安装及使用
  19. 实现一个简单的trim函数,用于去除一个字符串,头部和尾部的空白字符
  20. AnalyticDB for PostgreSQL

热门文章

  1. [书籍分享]0-003.你的灯亮着吗:发现问题的真正所在
  2. 测试的艺术:测试用例的设计
  3. 【剑指offer】数字在排序数组中出现的次数
  4. 二分查找法的实现和应用汇总
  5. Win API记录点滴
  6. C# 编码约定(C# 编程指南)
  7. POJ--2449--Remmarguts#39; Date【dijkstra_heap+A*】第K短路
  8. web项目实现mysql增删改查并从前端页面操作
  9. 理解Linux虚拟文件系统VFS
  10. Eclipse 中隐藏的 5 个非常有用的功能