zoukankan      html  css  js  c++  java
  • Mysql锁

    普通锁
    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. 数据多版本:实现读写并发
  • 相关阅读:
    WTM
    Spring Cloud
    Dapper
    Linux 常用命令
    JsonNetResult
    百度 副文本编译器
    GIT使用—一些概念
    GIT使用—创建一个版本库
    GIT使用—安装配置及工作流程
    灰度发布
  • 原文地址:https://www.cnblogs.com/vanoraxnc/p/10380570.html
Copyright © 2011-2022 走看看