存储引擎 innoDB

事务和锁共存(事务本身就是利用锁机制来完成)

1、共享锁:

①当前事务可以进行查询和修改操作,其他事务(线程)必须等当前事务提交后才能进行操作,查询可以查,但是结果并不是当前事务提交前结果(两者数据不同步),修改必须等当前事务提交后才能正常操作

②如果给当前事务加了共享锁,其他事务(线程)也可以加共享锁,但是不能加排他锁

2、排他锁

①给当前事务(线程)加上排他锁后,其他事务(线程)既不能加共享锁也不能加排他锁,只有当前事务提交后才能操作

②当前事务可以进行查询和修改操作,其他事务(线程)必须等当前事务提交后才能进行操作,查询可以查,但是结果并不是当前事务提交前结果(两者数据不同步),修改必须等当前事务提交后才能正常操作

3、备注:

在高并发情况下,事务和行锁一起使用

共享锁【S锁】

又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

排他锁【X锁】

又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。

共享锁与排它锁区别

1.共享锁只用于表级,排他锁用于行级。

2.加了共享锁的对象,可以继续加共享锁,不能再加排他锁。加了排他锁后,不能再加任何锁。

3.比如一个DML操作,就要对受影响的行加排他锁,这样就不允许再加别的锁,也就是说别的会话不能修改这些行。同时为了避免在做这个DML操作的时候,有别的会话执行DDL,修改表的定义,所以要在表上加共享锁,这样就阻止了DDL的操作。

4.当执行DDL(写操作)操作时,就需要在全表上加排他锁

mysql innodb排他锁_mysql 中innoDB引擎的事务喝共享锁喝排他锁相关推荐

  1. mysql innodb 间隙锁_MySQL中InnoDB的间隙锁问题

    在为一个客户排除死锁问题时我遇到了一个有趣的包括InnoDB间隙锁的情形.对于一个WHERE子句不匹配任何行的非插入的写操作中,我预期事务应该不会有锁,但我错了.让我们看一下这张表及示例UPDATE. ...

  2. mysql innodb4大特征_MYSQL中InnoDB特性浅谈

    许久没有更新博客,上周末放假把网易大牛姜sir的著作MYSQL技术内幕InnoDB存储引擎又翻阅了一番,对当前工作的InnoDB特性有了一些新的认识,下面谈谈自己的读后感. 1. InnoDB的体系架 ...

  3. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  4. mysql innodb 排他锁_MySQL 针对 InnoDB 引擎锁的种类:行锁(共享锁和排他锁)和表锁(意向共享锁和意向排他锁)...

    InnoDB 锁快速到底 行锁:共享锁(S).排他锁(X) 表锁:意向共享锁(IS).意向排他锁(IX) 下面主要针对 MySQL 中行级锁中的共享锁(S)与排他锁(X)进行分析 共享锁又称为读锁,简 ...

  5. 阿里云mysql不让锁表_MySQL中InnoDB锁不住表的原因

    MySQL中InnoDB锁不住表是因为如下两个参数的设置: mysql> show variables like '%timeout%'; +-------------------------- ...

  6. mysql+跨服务器+写入_MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问

    跨数据库服务器,跨实例访问是比较常见的一种访问方式,在Oracle中可以通过DB LINK的方式来实现.对于MySQL而言,有一个FEDERATED存储引擎与之相对应.同样也是通过创建一个链接方式的形 ...

  7. mysql默认乐观锁悲观锁_MySQL中悲观锁和乐观锁到底是什么?-阿里云开发者社区...

    索引和锁是数据库中的两个核心知识点,隔离级别的实现都是通过锁来完成的 按照锁颗粒对锁进行划分 ? 锁用来对数据进行锁定,我们可以从锁定对象的粒度大小来对锁进行划分,分别为行锁.页锁和表锁. 行锁就是按 ...

  8. mysql中的乐观锁_MySQL中悲观锁和乐观锁到底是什么?

    索引和锁是数据库中的两个核心知识点,隔离级别的实现都是通过锁来完成的 按照锁颗粒对锁进行划分 ? 锁用来对数据进行锁定,我们可以从锁定对象的粒度大小来对锁进行划分,分别为行锁.页锁和表锁.行锁就是按照 ...

  9. mysql清除旧版本_MYSQL使用INNODB时及时清理旧版本数据

    InnoDB's tablespace can grow very large in a writeheavy environment. If transactions stay open for a ...

最新文章

  1. 3D曲面重建之移动最小二乘法
  2. tortoisesvn的安装
  3. asp.net 页面全生命周期
  4. java消息幂等性实现_探讨一下实现幂等性的几种方式
  5. 放置奇兵 算法 月度活动 破碎时空记录 第五关 丁丁(瓦伦丁)+杰赫拉
  6. 北斗导航 | 利用模拟卫星星座估计GNSS接收机位置
  7. MapXtreme实用技巧
  8. android读取主板数据恢复,重磅干货!高通9008模式与数据提取用于恢复数据
  9. linux 批量监控软件,Linux/Unix/Windows批量管理监控服务器软件
  10. win10安装虚拟机(Virtualbox + vagrant)
  11. 被虐日記----开心并快乐着的求各种虐
  12. 【前端学习笔记—canvas标签和使用canvas画哆啦A梦案例】
  13. 记录从指尖悄悄流逝的时间
  14. C# 面向对象学习笔记
  15. mysql sql 多表更新语句_MySQL跨表、多表更新SQL语句总结
  16. 【渝粤题库】广东开放大学 公司金融 形成性考核
  17. php笔试面试题大全
  18. matlab 对矩阵取整的函数
  19. day08Java-继承
  20. C++ pthread cond_wait 和 cond_broadcast的使用

热门文章

  1. linux内网发现登录设备,LINUX 内网设备将服务映射到公网地址
  2. php 环境优化,Nginx与PHP-fpm环境在大流量下的优化配置
  3. alpine linux安装java,alpinelinux安装openjre
  4. php框架进入命令行,swoole为何要用命令行来启动_PHP开发框架教程
  5. Cron 触发器及相关内容 (第三部分)
  6. android 版本更新
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线论坛管理系统
  8. Sublime Text 3使用技巧总结--快捷键及常用插件
  9. 使用RAID进行磁盘管理
  10. Window.ShowModalDialog使用手册