高并发情况下,MYSQL的锁等待问题分析和解决方案

问题描述

在进行高并发性能调优的时候发现了如下的一个问题:

1. 在一个事务中同时包括了SELECT,UPDATE语句

2. SELECT和UPDATE涉及到的数据为同一张表中的同一记录

3. 在并发为10的情况下就会触发数据库锁等待和死锁的情况

问题分析

在问题分析之前引入几个概念

事务隔离级别

参考文章《事务的ACID特性》

共享锁(S锁)

SELECT 语句时对查询行加的锁类型为共享锁。

共享锁的特性为:不允许其他事务对该记录加排他锁,但是允许加共享锁。

保持时间:可重复度级别中共享锁会保持到事务结束。

排他锁(X锁)

MYSQL的默认隔离级别(可重复度)中,UPDATE,INSERT和DELETE语句对操作语句加的锁类型为排他锁

排他锁的特性为:不允许其他事务对该记录加共享锁和排他锁

保持时间:会保持到事务结束。

更新锁(U锁)

UPDATE语句在更新前需要对整表上更新锁,在找到记录后对需要操作记录上排他锁并释放更新锁

更新锁特性为:用来预定要对此页施加排他锁,它允许其他事务加共享锁,但不允许再施加更新锁或排他锁

保持时间:会保

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大叔比较胖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值