SQL优化之锁机制

锁机制解决因资源共享造成的并发问题示例:某网购平台平台仅剩一件衣服X两个Women :WA、 WBWA : X 抢购 X加锁===>下单===>付款===>卖家收到订单===>抢购完成WB : X 抢购 X已经加锁===>等待阻塞中===>WA付款之后===>提示已经售空锁分类按照操作类型分1. 读锁(共享锁)===>对于同一个数据(衣服X),多个操作可以同时进行,互不干扰。2. 写锁(互斥锁)===>
摘要由CSDN通过智能技术生成

锁机制

解决因资源共享造成的并发问题

示例:某网购平台平台仅剩一件衣服X
两个Women :WA、 WB
WA : X 抢购 X加锁===>下单===>付款===>卖家收到订单===>抢购完成
WB : X 抢购 X已经加锁===>等待阻塞中===>WA付款之后===>提示已经售空

锁分类

按照操作类型分

1. 读锁(共享锁)===>对于同一个数据(衣服X),多个操作可以同时进行,互不干扰。
2. 写锁(互斥锁)===>若当亲操作没有完成(WA准备对X下手),WB不能进行读写操作。(甚至不能看了)

按照操作范围分

1. 表锁(一次操作锁一张表)MyISAM存储引擎用的是表锁
	1.1. 优势分析: 开销小,加锁快,无死锁.
	1.2. 不足分析:粒度粗,容易放生锁的冲突,并发度低
2. 行锁(一次操作锁一条数据)InnoDB存储引擎使用行锁(MySQL默认)
	2.1. 优势分析:锁的使用粒度细,不容易放生锁冲突,并发度高
	2.2.不足分析:开销大,加锁慢,易死锁。
	2.3 小概率问题:很小概率 发生高并发问题:脏读、幻读、不可重复度、丢失更新等问题
3. 页锁

数据准备

表锁

读锁特性


create table tablelock
(
id int primary key auto_increment , 
name varchar(20)
)engine myisam;


insert into tablelock(name) values('a1');
insert into tablelock(name) values('a2');
insert into tablelock(name) values('a3');
insert into tablelock(name) values('a4');
insert into tablelock(name) values('a5');
commit;
-- 增加所的语法
lock table1 read/write ,2 read/write
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值