mysql的锁机制
一、读锁(共享锁/Share Locks,S锁)。
1、select * from table_name where ... lock in share mode。(事务A)
(1)这种方式是获取指定记录行的读锁,那么这些记录行可以被其他事务获取读锁,但是这些行一定会拒绝被其他事务获取写锁,如果其他事务尝试获取这些记录行的写锁,那么只有当这些记录行的所有读锁都释放了才能获取到写锁,这期间一直处于阻塞状态。因此只允许在所有会话之间共享,不能被任何会话独占;
(2)如果现在事务A执行更新update/删除delete这些被自己加了读锁的记录行时,是否更新update/删除delete成功根据情况而定。如果执行更新update/删除delete时这些记录行如果还没有被其他事务获取读锁,那么执行更新update/删除delete成功;如果执行更新update/删除delete时这些记录行已经被其他事务获取读锁,而且不释放,那么执行更新update/删除delete失败。
(3)因此,在事务A中添加指定记录行的读锁的作用:防止事务A执行期间这些记录行被修改update/删除delete,同时事务A在执行期间没有更新/删除这些记录行的需求。
二、写锁(排他锁/Exclusive Locks,X锁)。
1、select * from table_name where ... for update。(事务A)
(1)这种方式是获取指定记录行的写锁,那么这些记录行就不能被其他事务获取读锁和排他写锁。如果事务A需要对这些记录行进行更新/删除操作。
三、
mysql的锁机制的更多相关文章
- MySQL- 锁机制及MyISAM表锁
锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许 多用户 共享的资源.如何保证数据并发访问的一致性.有效性是所 ...
- mysql insert锁机制【转】
最近再找一些MySQL锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...
- 说一说MySQL的锁机制
锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则. 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁. 表锁就是把 ...
- 关于MySQL的锁机制详解
锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则. 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁. 表锁就是把 ...
- MySQL InnoDB锁机制
概述: 锁机制在程序中是最常用的机制之一,当一个程序需要多线程并行访问同一资源时,为了避免一致性问题,通常采用锁机制来处理.在数据库的操作中也有相同的问题,当两个线程同时对一条数据进行操作,为了保证数 ...
- mysql的锁机制详解
这段时间一直在学习mysql数据库.项目组一直用的是oracle,所以对mysql的了解也不深.本文主要是对mysql锁的总结. Mysql的锁主要分为3大类: 表级锁:存储引擎为Myisam.锁住整 ...
- mysql的锁机制,以及乐观锁,悲观锁,以及热点账户余额问题
mysql的简单锁机制. myisam 1.只支持表级锁,所以经常更新的表结构不适宜用. 2.select也会产生锁表 innodb 1.支持事务,行级锁,表级锁,执行行级锁的前提是sql语句的索引有 ...
- MySQL:锁机制和隔离事务级别
在mysql中的锁看起来是很复杂的,因为有一大堆的东西和名词:排它锁,共享锁,表锁,页锁,间隙锁,意向排它锁,意向共享锁,行锁,读锁,写锁,乐观锁,悲观锁,死锁.这些名词有的博客又直接写锁的英文的简写 ...
- MySQL 高级—— 锁机制
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.锁的概述 1.锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除传统的计 ...
- 一文详解MySQL的锁机制
一.表级锁.行级锁.页级锁 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则. MySQL数据库由于其自身架构的特点,存在多种数据存储引擎, ...
随机推荐
- CF 434C Tachibana Kanade's Tofu[数位dp+AC自动机]
Solution //本代码压掉后两维 #include<cstdio> #define max(a,b) (a<b?b:a) using namespace std; inline ...
- 【转】CCScale9Sprite和CCControlButton
转自:http://blog.csdn.net/nat_myron/article/details/12975145 在2dx下用到了android下的.9.png图片,下面是原图 查了一下2dx ...
- 关于电信宽带wan口地址变成100.64网段的问题解决
由于之前笔者一直在使用动态域名连接公司vpn.今天在连接vpn的时候总是失败,因动态域名及vpn配置都从未更改过. 于是首先排查动态域名,是否已更新为公司宽带对外的IP.这里笔者先通过nslookup ...
- 判断String 中文混输 长度
extends:http://www.tuicool.com/articles/EB36Jv public static int calculateLength(String etString) { ...
- Windows 8.1 100% 磁盘使用率解决方案
前段时间我的win8电脑爆卡!动不动就卡死,一点都动不了. 好不容易打开了任务管理器,发现disk usage: 100%,实在是不理解,磁盘使用率100%怎么会影响流畅度?如果是CPU或内存还好理解 ...
- python代码实现stack和queue
栈stack 后进先出 class Stack(object): def __init__(self): self.stack = [] def push(self, value): # 进栈 sel ...
- WF的简单使用
WWF(Windows Workflow Foundation):是微软提供的工作流技术,工作流就是对工作流程的规范和抽象.主要有三个部分Activity(活动).Runtime(工作流运行时)和To ...
- .Net Identity OAuth 2.0 SecurityStamp 使用
起源: 近期帮别人做项目,涉及到OAuth认证,服务端主动使token失效,要使对应用户不能再继续访问,只能重新登陆,或者重新授权. 场景: 这种场景OAuth2.0是支持的,比如用户修改了密码,那所 ...
- DDOS hulk,rudy
HULK (HTTP Unbearable Load King) HULK HULK是另一个DOS攻击工具,这个工具使用UserAgent的伪造,来避免攻击检测,可以通过启动500线程对目标发起高频率 ...
- .windows安装使用这些偏底层的Python扩展太
.windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat呢? 1.不要按网上说的,安装MinGW,然后在“.. ...