大数据WEB阶段(二十)更新丢失
更新丢失
一、更新丢失概述
- 两个并发的事务 , 基于同一个查询进行更新操作 ,后提交的事务忽略了先提交的事务对数据库的影响 , 结果造成了数据库操作失误的问题, 称之为更新丢失。
二、实例
- 重复充值
- 秒杀抢购
- 商品删除
三、解决方案
- 将数据库隔离级别提升为serializable级别防止更新丢失的问题
- 效率极低 , 不推荐使用
- 悲观锁
- 悲观的认为每次查询都会造成更新丢失问题 , 所以在查询时 , 手动添加排它锁 , 排斥后续其他事务的更新操作 。
- 在查询时关键查询语句后加 for update; 。
- 乐观锁
- 乐观的认为每次查询都不会有更新丢失问题 , 在修改时 , 人为地检测更新丢失的发生 。
- 在更新 操作时带上查询结果 , 把查询结果作为条件之一 , 如果影响行数为0 , 则发生更新丢失 , 此时需要回滚事务重新执行(是否需要重新执行看具体的场景)。
- 悲观锁和乐观锁都不是数据库中真正存在的锁 , 而是两种解决方案的思想
- 如果更新多而查询少, 使用悲观锁
- 如果更新少而查询多, 使用乐观锁
大数据WEB阶段(二十)更新丢失相关推荐
- 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别
会话技术 – Cookie与Session及其两者的区别 (一)会话技术 一.概述 1. 一个浏览器为了实现某一个功能对服务器产生了多次请求响应.从第一个请求开始访问服务器,会话开始,到最后一个页面访 ...
- 大数据WEB阶段 (十)Response、ServletConfig、ServletContext、资源跳转三种方式
Response.ServletConfig.ServletContext.资源跳转三种方式 - (一)Response 一.Response概述 在doGet和doPost方法的参数中,HttpSe ...
- 大数据WEB阶段(十八)数据库事务
数据库事务 一.概述 事务的概念 事务是指逻辑上的一组操作 , 组成这组操作的各个单元 , 要么全部成功 , 要么全部失败 . 如:银行转账.. 转账核心操作其实就是两条sql ,两条都执行成功才算成 ...
- 大数据WEB阶段(十六)JavaEE三大 核心技术之监听器Listener
Listener监听器 一.概述 Servlet三大核心技术之一 Servlet.Filter.Listener Servlet技术规范中定义了八种监听器用来监听web应用开发中对应的事件. 监听器可 ...
- 大数据WEB阶段(十五)JavaEE三大核心技术之过滤器
Filter过滤器 一.Filter 过滤器概述 Filter是JavaEE三大核心技术(Servlet . Filter . Listener)之一 FIlter作用是拦截对资源的访问 , 拦截下来 ...
- 大数据WEB阶段(十九)Threadlocal
ThreadLocal 一.ThreadLocal概述 本地线程变量 本质上是一种利用线程的执行由程序的上游向下游传递信息的机制 Thread对象内置了一个Map来存取消息 , 但是这个 Map外界无 ...
- 大数据WEB阶段(十四)JavaEE开发模式
JavaEE开发模式 零.目录 开发模式发展历程 MVC设计思想的出现 JavaEE经典三层架构 经典三层架构解耦 一.开发模式发展历程 Servlet是JavaEE开发中一种动态web资源开发技术 ...
- 2021年大数据Hadoop(二十二):MapReduce的自定义分组
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...
- 2021年大数据Hadoop(二十九):关于YARN常用参数设置
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 关于yarn常用参数设置 设置container分配最小内 ...
- 2021年大数据Hadoop(二十六):YARN三大组件介绍
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...
最新文章
- 操作系统学习笔记 第五章:文件管理(王道考研)
- python执行系统命令后获取返回值的几种方式集合
- IOC和DI 控制反转和依赖注入
- live555 源码分析:MediaSever
- 刷新:重新发现.NET与未来
- 全美杰出的技术MBA专业
- Mac下图像标注工具labelImg的安装
- hibench测试出现问题--zookeeper
- 在哪里学python-学Python从哪里开始?
- 【CSP】第20届CCF CSP计算机软件能力认证划水贴
- 【Android笔记】Android引用第三方依赖包library报错解决方法
- js获取文件的后缀名
- 深度时空3D卷积神经网络用于交通预测(文末附数据链接)
- 生活随记-很有意思的评论
- 计算机科学 杂志 撤稿,哈佛教授2篇顶刊遭撤稿:相同样品花样“复用”,伪装成不同实验结果...
- vue+animation实现翻页动画
- 记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器
- 吉林大学 十佳歌手 计算机科学与工程学院,贾海洋 - 吉林大学 - 计算机科学与技术学院...
- python 求向量模长(一范二范)
- Python--Opencv:errorFindContours supports only CV_8UC1 images when mode = CV_RETR_FLOODFILL otherw