存储引擎 支持的锁定
MyISAM 表级锁
MEMORY 表级锁
InnoDB 行级锁
BDB 页面锁

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

锁定方式 执行锁定的线程 读 其他线程 读 执行锁定的线程 写 其他线程 写
读锁 可读 可读 不可写 不可写
写锁 可读 不可读 可写 不可写

涉及工具:Navicat和SQLyog(不能使用phpMyAdmin)

测试代码

测试一:读锁。说明:自己与其他线程只能读取该表

在Navicat中执行以下代码

mysql> lock table `cat` READ;
Query OK, rows affected mysql> SELECT * FROM `cat` WHERE ;
+----+--------+
| id | remark |
+----+--------+
| | ceshi |
| | |
| | |
+----+--------+
rows in set mysql> UPDATE `cat` SET remark= 'Navicat' WHERE id=;
- Table 'cat' was locked with a READ lock and can't be updated

在SQLyog中执行

mysql> SELECT * FROM `cat` WHERE ;
+----+--------+
| id | remark |
+----+--------+
|  1 | ceshi  |
|  2 | 22222  |
|  3 | 33333  |
+----+--------+
3 rows in set
mysql> UPDATE `cat` SET remark= 'SQLyog' WHERE id=

SQLyog执行UPDATE时,一直都是执行中。当解锁时,执行成功。

在Navicat中执行解锁操作

mysql> unlock tables;

执行后,SQLyog的UPDATE执行成功。

测试结果:

当进行读锁时,锁定线程可进行查询操作,不可进行写入操作。其他线程可进行查询操作,不可进行写入操作。


测试一:写锁。说明:只有当前线程能够对表进行写入操作(其他线程也无法读这部分数据)

在Navicat中执行以下代码

mysql> LOCK TABLE cat WRITE;
Query OK, rows affected mysql> select * from `cat` where ;
+----+--------+
| id | remark |
+----+--------+
| | SQLyog |
| | |
| | |
+----+--------+
rows in set mysql> update `cat` set remark= 'Navicat' where id=;
Query OK, row affected
Rows matched: Changed: Warnings:

然后在SQLyog中执行

mysql> select * from `cat` where ;

mysql> update `cat` set remark= 'Navicat' where id=;

可见都是一直是执行状态。只有解锁后,SQLyog才能执行成功

在Navicat中执行解锁操作

mysql> unlock tables;

SQLyog执行成功。

测试结果:

写锁后,执行写锁的线程可进行读和写,其他线程不可进行读和写

mysql锁 实战测试代码的更多相关文章

  1. mysql数据库连接的测试代码语句片断

    手动连接数据库 的代码片断, 用于各种数据库的测试... $conn = mysql_connect('localhost', 'root', '') or die('failed to connec ...

  2. php7连接mysql测试代码

    php7连接mysql测试代码 <?php $mysqli = new mysqli("localhost", "root", "passwor ...

  3. MySQL测试代码

    MySQL测试代码 # 注释内容 -- 注释内容 -- 创建maizi数据库 CREATE DATABASE IF NOT EXISTS `maizi` DEFAULT CHARACTER SET ' ...

  4. 使用 TypeScript & mocha & chai 写测试代码实战(17 个视频)

    使用 TypeScript & mocha & chai 写测试代码实战(17 个视频) 使用 TypeScript & mocha & chai 写测试代码实战 #1 ...

  5. 测试MySQL锁的问题

    测试MySQL锁的问题 目录 测试MySQL锁的问题 1 Record Lock 2 Next-Key Lock 2 死锁测试 InnoDB支持三种行锁: Record Lock:单个行记录上面的锁 ...

  6. MySQL锁系列3 MDL锁

    http://www.cnblogs.com/xpchild/p/3790139.html   MySQL为了保护数据字典元数据,使用了metadata lock,即MDL锁,保证在并发的情况下,结构 ...

  7. mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  8. mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  9. Mysql锁机制--乐观锁 & 悲观锁

    Mysql 系列文章主页 =============== 从 这篇 文章中,我们知道 Mysql 并发事务会引起更新丢失问题,解决办法是锁.所以本文将对锁(乐观锁.悲观锁)进行分析. 第一部分 悲观锁 ...

随机推荐

  1. ZOJ 3703 Happy Programming Contest

    偏方记录背包里的物品.....每个背包的价值+0.01 Happy Programming Contest Time Limit: 2 Seconds      Memory Limit: 65536 ...

  2. Mac Pro 利用PHP导出SVN新增或修改过的文件

    先前在 Windows 操作系统下,习惯用 TortoiseSVN 导出新增或修改过的文件([相当实用]如何让TortoiseSVN导出新增或修改过的文件 ),最近换成了 Mac Pro 笔记本电脑, ...

  3. 【Go入门教程6】interface(interface类型、interface值、空interface{}、嵌入interface、反射)

    interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...

  4. Asp.Net Core--自定义基于策略的授权

    翻译如下: 在封面下,角色授权和声明授权使用需求,需求的处理程序和预配置的策略. 这些构建块允许您在代码中表示授权评估,从而允许更丰富,可重用和容易测试的授权结构. 授权策略由一个或多个需求组成,并在 ...

  5. php项目整理之no1

    1.login.php <head></head> 2.check_login.php 3.user.php 4.getData.php

  6. html5页面打包成App - Android或Iphone安装程序

    下载安装前端开发工具:HBuilder 官网下载:http://www.dcloud.io/ 根据官网说明安装 * 打开登录HBuilder,把做好的H5页面通过添加app项目把H5的文件夹加入进来( ...

  7. OpenVpn简单架设

    首先Wget wget http://swupdate.openvpn.org/as/openvpn-as-2.0.24-CentOS6.i386.rpm wget http://swupdate.o ...

  8. 【转载总结】jQuery和HTML5全屏焦点图

    选项设置与说明 Slider Revolution提供了很多参数选项设置: delay: 滑动内容停留时间.默认9000毫秒 startheight: 滑动内容高度,默认490像素. startwid ...

  9. dex文件格式一

    一.生成dex文件 我们可以通过java文件来生成一个简单的dex文件 编译过程: 首先编写java代码如下: (1) 编译成 java class 文件 执行命令 : javac Hello.jav ...

  10. ACM-ICPC退役选手的发言——满满的正能量(短视频)

    这是我在北京林业大学ACM-ICPC竞赛说明会上发言的录像 希望能激励大家在奋斗的道路上披荆斩棘,勇往直前!