zoukankan      html  css  js  c++  java
  • 简论数据库乐观悲观锁与并发编程中的CAS

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。

    http://www.cnblogs.com/shijiaqi1066/p/5783205.html 

    1. 数据库悲观锁

    加锁;

        操作(增删改查);

    解锁;

    2. 数据库乐观锁

    updateset 列 = newValue where [条件] and 列 = 旧值;

    注意:set 与 where 是合并在一起的,即原子执行的

    解决ABA问题

    对每张表引入版本号version

    改进:

     updateset 列 = newValue , version = oldVersion+1  where [条件] and version = oldVersion; 

    update失败怎么办?读取当前值,再次update,直到指定次数,或永远。

    3. CAS

    compare and swap,swap的意思虽然为“交换”,但实际编程中swap其实可以理解为set。

    相当于数据库乐观锁中使用的update语句。比较与交换是一个连在一起的操作,即比较交换是一个原子操作。

    比较失败怎么办?不交换,自旋

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。

    http://www.cnblogs.com/shijiaqi1066/p/5783205.html 

  • 相关阅读:
    导出表结构
    smarty cache
    浏览器插件
    互联网技术网站介绍
    目录拷贝
    sphinx搜索不到
    powerdesigner 导出数据库表结构
    PowerDesigner 连接 mysql
    update join
    ClipboardJS的坑,
  • 原文地址:https://www.cnblogs.com/shijiaqi1066/p/5783205.html
Copyright © 2011-2022 走看看