存储引擎 支持的锁定
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. 使用Entity Framework通过code first方式创建数据库和数据表

    开发环境 WIN10 Entity Framework6.0  MVC5.0  开发工具 VS2015  SqlServer2012 1.创建上下文Context继承DbContext,并创建其他的业 ...

  2. Ubuntu GNOME 16.10 Beta 1问世了!

    导读 Ubuntu GNOME 16.10操作系统已经进入研发周期一段时间了,今天终于可以下载Beta 1版本进行测试了.作为Ubuntu官方flavor之一,Ubuntu GNOME团队非常努力的整 ...

  3. BMP文件格式

  4. python之路四

    内建函数 内建函数详解: 1. abs(x) abs()函数返回数字(可为普通型.长整型或浮点型)的绝对值.如果给出复数,返回值就是该复数的模.例如: >>>print abs(-2 ...

  5. 一个国家专利查询demo

    写了一下午,借鉴apache的 httpclient 源码 调用 写的,拿出来分享一下,可以用作其他不同平台的项目post/get数据上面. package cn.shb.test; import o ...

  6. SQLPULS : 密码中有特殊字符的处理方法

    前日在使用SQLPLUS访问oracle数据库时,系统提示密码过期,需要更新密码.于是不假思索的修改密码为xxx@2016(估计当时脑子抽风了),造成了杯具的开始. 再次进入SQLPLUS,输入用户名 ...

  7. 【XLL 框架库函数】 TempActiveColumn/TempActiveColumn12

    创建一个包含所有激活工作表列的 XLOPER/XLOPER12 LPXLOPER TempActiveColumn(BYTE col); LPXLOPER12 TempActiveColumn12(C ...

  8. 关于Ajax工作原理

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  9. Loadrunner监控Apache

    一.安装Apache yum -y install httpd 二.配置Apache 1.设置开机启动 chkconfig httpd on 2.开启Apache service httpd star ...

  10. VR的国内研究现状及发展趋势

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 一.国内研究现状 我国虚拟现实技术研究起步较晚,与发达国家还有一定的差距. 随着计算机图形学.计算机系统 ...