mysql锁 实战测试代码
来源:互联网 发布:今日头条mac客户端 编辑:程序博客网 时间:2024/05/16 12:12
mysql锁 实战测试代码
存储引擎支持的锁定MyISAM表级锁MEMORY表级锁InnoDB行级锁BDB页面锁
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
涉及工具:Navicat和SQLyog(不能使用phpMyAdmin)
测试代码
测试一:读锁。说明:自己与其他线程只能读取该表
在Navicat中执行以下代码
mysql> lock table `cat` READ;Query OK, 0 rows affectedmysql> SELECT * FROM `cat` WHERE 1;+----+--------+| id | remark |+----+--------+| 1 | ceshi || 2 | 22222 || 3 | 33333 |+----+--------+3 rows in setmysql> UPDATE `cat` SET remark= 'Navicat' WHERE id=1;1099 - Table 'cat' was locked with a READ lock and can't be updated
在SQLyog中执行
mysql> SELECT * FROM `cat` WHERE 1;+----+--------+| id | remark |+----+--------+| 1 | ceshi || 2 | 22222 || 3 | 33333 |+----+--------+3 rows in setmysql> UPDATE `cat` SET remark= 'SQLyog' WHERE id=1
SQLyog执行UPDATE时,一直都是执行中。当解锁时,执行成功。
在Navicat中执行解锁操作
mysql> unlock tables;
执行后,SQLyog的UPDATE执行成功。
测试结果:
当进行读锁时,锁定线程可进行查询操作,不可进行写入操作。其他线程可进行查询操作,不可进行写入操作。
测试一:写锁。说明:只有当前线程能够对表进行写入操作(其他线程也无法读这部分数据)
在Navicat中执行以下代码
mysql> LOCK TABLE cat WRITE;Query OK, 0 rows affectedmysql> select * from `cat` where 1;+----+--------+| id | remark |+----+--------+| 1 | SQLyog || 2 | 22222 || 3 | 33333 |+----+--------+3 rows in setmysql> update `cat` set remark= 'Navicat' where id=1;Query OK, 1 row affectedRows matched: 1 Changed: 1 Warnings: 0
然后在SQLyog中执行
mysql> select * from `cat` where 1;
和
mysql> update `cat` set remark= 'Navicat' where id=1;
可见都是一直是执行状态。只有解锁后,SQLyog才能执行成功
在Navicat中执行解锁操作
mysql> unlock tables;
SQLyog执行成功。
测试结果:
写锁后,执行写锁的线程可进行读和写,其他线程不可进行读和写
0 0
- mysql锁 实战测试代码
- myecplise+mysql代码测试
- java连接mysql 测试代码
- 测试批量插入mysql代码
- maven3实战之maven使用入门(编写测试代码)
- 第十二讲、jmeter性能测试实战-mysql数据库
- Java MySQL Oracle数据库 连接测试代码
- java连接mysql数据库测试类代码
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql分库分表实战及php代码操作完整实例
- mysql 实战
- 实战MySQL
- kernel 启动流程之 【设备驱动加载】 学习笔记
- Toast show的时候崩溃的问题
- Shell输入输出重定向:Shell Here Document,/dev/null文件
- Java常用GoF设计模式之一模板模式
- 优化反射性能的总结(中)
- mysql锁 实战测试代码
- Android 微信支付
- Word每页插入一张图片相关问题
- iOS SQLite加密之SQLCipher
- hdu2082找单词(背包)
- phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
- teamtalk简介
- 从零开始学_JavaScript_系列(33)——dojo 的 tree
- 神经病院Objective-C Runtime出院第三天——如何正确使用Runtime