有关mysql的for update以及 死锁问题
一、先说锁的概念
锁级别:
1.行级锁: InnoDB引擎(也支持表级锁,默认是行级锁),开销大,加锁慢;会出现死锁。锁定粒度最小,发生锁冲突的概率最低,并发度最高。
2.表级锁:MylSAM引擎和Memory引擎,开销小,加锁快;不会出现死锁,锁定粒度最大,发生锁冲突的概率最高,并发度最低。
3.页级锁:BDB引擎(也支持表级锁),开销和加锁时间介于行锁和表锁之间;会出现死锁;粒度也介于行锁和表锁之间,并发度一般。
其中:锁粒度就是指锁等级
Record: RecordLock就是锁住某一行记录
Gap:GAPLOCK会锁住某一行范围的记录
Next-KeyLocks: 上面两者加起来的效果
行锁分为2中:
1.共享锁:S锁:select * from test where ... Lock in share mode; 一个事务对一行的共享只读锁
2.排他锁:X锁:select * from test where ... for update; 一个事务对一行的排他读写锁
二、
session 1:
select * from test where id = 1 for update;
session 2:
update test set name = "qq" where id =1;
当session1和session2同时运行的时候,session1中由于对id=1这行加锁(排它锁:在未解锁之前,其他事物不能对该行进行读写)。session2与session持有的行锁是冲突的。数据库需要避免这种冲突,就是说要让session2的申请被阻塞,直到session1释放了行锁。
有关mysql的for update以及 死锁问题的更多相关文章
- mysql SELECT FOR UPDATE语句使用示例
以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LO ...
- 转mysql 多表 update sql语句总结
mysql 多表 update 有几种不同的写法. 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductP ...
- mysql 多表 update sql语句总结
mysql 多表 update 有几种不同的写法. 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductP ...
- Mysql 批量更新update的表与表之间操作
Mysql 批量更新update的表与表之间操作 一.方法一 使用User2表数据更新User表: update User as a ,User2 as b set a.role_id=b.set_v ...
- select for update引发死锁分析
本文针对MySQL InnoDB中在Repeatable Read的隔离级别下使用select for update可能引发的死锁问题进行分析. 1. 业务案例 业务中需要对各种类型的实体进行编号,例 ...
- mysql中 for update 使用
解释: for update是在数据库中上锁用的,可以为数据库中的行上一个排它锁.当一个事务的操作未完成时候,其他事务可以读取但是不能写入或更新.例子: 比如一张表三个字段 , id(商品id), n ...
- 【MySQL】Merge Index导致死锁
水稻:最近有个朋友生产环境出现MySQL死锁问题,一听是死锁,那必须去看看啊,于是饶(si)有(qu)兴(huo)致(lai)的研究了好几天 菜瓜:MySQL死锁,赶紧分享一下 水稻:能否先让我装完X ...
- mysql知识点归纳-锁(死锁)
愿历尽千帆,归来仍是少年 所遇问题: MySql 更新死锁问题 Deadlock found when trying to get lock; try restarting transaction 场 ...
- MySQL 常用的UPDATE操作
标签:UPDATE 概述 测试环境:mysql 5.6.21 步骤 创建测试表 CREATE TABLE `product` ( `proID` ) NOT NULL AUTO_INCREMENT C ...
随机推荐
- Offcanvas 自适应窗口示例
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...
- JVM GC知识回顾
这两天刚好有朋友问到我面试中GC相关问题应该怎么答,作为java面试中热门问题,其实没有什么标准回答.这篇文章结合自己之前的总结,对GC做一个回顾. 1.分代收集 当前主流VM垃圾收集都采用" ...
- JavaScript判断对象是否含有某个属性
两种方式,但稍有区别 1,in 运算符 1 2 3 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('toStr ...
- CTF---Web入门第三题 这个看起来有点简单!
这个看起来有点简单!分值:10 来源: 西普学院 难度:易 参与人数:10515人 Get Flag:3441人 答题人数:4232人 解题通过率:81% 很明显.过年过节不送礼,送礼就送这个 格式: ...
- DP入门
数塔HDU2084 #include <iostream> #include <algorithm> #include <cstdio> #include < ...
- c# base 和this 继承
父类的构造函数总是在子类之前执行的.既先初始化静态构造函数,后初始化子类构造函数. public class BaseCircle { public BaseCircle() { Console.Wr ...
- [学习OpenCV攻略][010][写入AVI文件]
cvSize(文件宽度,文件高度) 通过图片或视频文件的宽高得到尺寸信息,返回值是CvSize cvCreateVideoWriter(输出文件名,编码格式,帧率,图像大小) 通过设置输出视频的格式信 ...
- POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
题目链接: http://poj.org/problem?id=2253 Description Freddy Frog is sitting on a stone in the middle of ...
- linux中的两个命令setfacl和chmod有什么区别
setfacl命令可以用来细分linux下的文件权限.chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 比较常用的用法如下:setfacl ...
- sublime text3怎么批量查找替换文件夹中的字符
在编写代码的时候,往往有些代码是重复的,但是如果要改一处代码,其他的地方也要改.那么怎么批量修改呢?下面小编就以sublime text3为例来讲解一下sublime text3怎么批量查找替换文件夹 ...