首页 > 数据库 >MySQL间隙锁、行锁的读写阻塞实验

MySQL间隙锁、行锁的读写阻塞实验

时间:2023-01-12 11:13:40浏览次数:37  
标签:username 2334 行锁 读写 阻塞 查询 MySQL select 233

目录

结论

普通查询 查询(加共享锁) 查询(加排它锁) 插入/更新
间隙锁 不阻塞 不阻塞 不阻塞 阻塞
行锁 不阻塞 阻塞 阻塞 阻塞

MySQL版本:5.7.26

实验过程

  1. 写一个程序模拟实际代码:
@SneakyThrows
@Transactional
public String testPessimisticWrite(String username) {
    log.info("start query");  
    // select * where testtable0_.username=:username for update;
    TestTable testTable1 = testTableDao.findPessimisticWriteByUsername(username).orElse(null);
    log.info("finished query" + testTable1);

    // (1)
    TimeUnit.SECONDS.sleep(6000);
    return "ok";
}
  1. TestTable表结构及数据:

  • 启用一个线程调用1.中方法查询username:233
  • 启用一个线程调用1.中方法查询username:2334
    以上两个线程都会在(1)处阻塞。

此时用数据库管理工具去查询一下这两条数据:

  1. 使用普通查询语句:select * from test_table where username = <username>

    • 查询233不会阻塞
    • 查询2334不会阻塞
  2. 使用lock in share mode查询语句:select * from test_table where username = <username> lock in share mode

    • 查询233会阻塞
    • 查询2334不会阻塞
  3. 使用for update查询语句:select * from test_table where username = <username> for update

    • 查询233会阻塞
    • 查询2334不会阻塞
  4. 插入2334:会阻塞

标签:username,2334,行锁,读写,阻塞,查询,MySQL,select,233
From: https://www.cnblogs.com/daheww/p/17045857.html

相关文章

  • MySQL的group_concat函数--实现查询结果 按列拼接
    MySQL的group_concat函数实现结果集的按列拼接成字符串输出例子:TEST表SELECTGROUP_CONCAT(valid_start_time)FROMtest当然,我们也可以对此结果先进行排序然后在输出......
  • ubuntu下配置django+apache+mysql+mod_python+Python
    网上有N种安装方法,我都试过,没有一个最后能成功,浪费了一下午的时间,终于搞定,1.installPython最新的Ubuntu操作系统是含有Python的,可以通过Python--version查看的:lab@lab:~......
  • Python3操作mysql
    Python3操作mysqlMySQL的安装没有sql基础的话可以看这个链接,sql学习实例:数据库连接importpymysql#打开数据库连接参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数......
  • Mysql之将查询结果插入到其它表中
    学习目标能够写出将查询结果插入到其它表中的SQL语句1.思考目前只有一个goods表,我们想要增加一个商品分类信息,比如:移动设备这个分类信息,只通过goods表无法完成商品分类的添......
  • MySQL数据库技术实战
    MySQL数据库技术实战 一,安装mysql很早之前就知道mysql提供了一套数据库样本(github地址),用于测试你的应用程序和数据库服务器。今天分享下使用过程并......
  • 04 图像像素的读写操作
    04图像像素的读写操作opencv知识点:获取/改变图像的某个像素-Mat::at图像像素-数组遍历图像像素-指针遍历本课所解决的问题:如何获取/改变图像的某个像素?......
  • (8)go-micro微服务Mysql配置
    目录一gorm介绍二gorm安装1.1下载依赖1.2使用MySQL驱动三CURD操作1.查询1.1单行查询1.2多行查询2.插入数据3.更新数据4.删除数据四初始化连接五使用六最后......
  • arm mysql8.0 docker-compose
    version:"3"services:mysql:image:beercan1989/arm-mysql:latestcontainer_name:data_exchange_databaseports:-3306:3306environment......
  • 系统性能排查方略及大型银行MySQL性能管控
    分享概要一、系统性能问题五大特性二、系统性能排查方略三、MySQL开发规范和常见调优策略四、MySQL性能管控体系五、未来展望 一、系统性能问......
  • mysql 优化select or set记录
    1 原始sql SELECT*FROMst_voltage_r_202301WHEREemtcIN(SELECTemtcFROMsw_statistics_infoWHEREmanufacturer_name='中电科27所')oremtcin......