首页 > 数据库技术 > 详细

Mysql锁

时间:2019-02-14 20:59:32      阅读:136      评论:0      收藏:0      [点我收藏+]

普通锁
1.使用普通锁保证数据一致性
普通锁使用最多
  (1)操作数据之前,锁住,实施互斥,不允许其他的并发任务操作;
  (2)操作完成后,释放锁,其他任务执行。

2.其他锁
普通锁的问题是太粗暴,锁住后其他任务连‘读任务’也不能并行,相当于执行任务过程是串行的,于是有以下锁
  (1)读-共享锁(Share Locks,记做S锁),读取数据时加S锁,恭喜锁直接不互斥,读操作可以并行
  (2)写-排他锁(eXclusive Locks,记做X锁),修改时间时加X锁,排他锁和其他锁互斥,记做写操作不能并行。


问题:一旦写操作没有完成,数据不能被其他任务读取,对并发有影响。
即使写任务没有完成,其他读任务也可能并发,这就引出了数据多版本。

3.数据多版本
数据多版本是一种能提高并发能力的方法,原理是
  (1)写任务发生时,将克隆一份,以版本号区分,记做V1版本,原始版本是V0
  (2)写任务操作版本V1直至提交
  (3)并发的读取任务继续操作V0版本的数据,不至于阻塞

总结:
提高并发的思路:

  1. 普通锁:本质是串行执行,所有操作不能并发
  2. 读写锁:实现读的并发
  3. 数据多版本:实现读写并发

Mysql锁

原文:https://www.cnblogs.com/vanoraxnc/p/10380570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!