丢失修改与数据库的一致性
丢失修改问题在什么情况下不影响数据库的一致性?在什么情况下影响数据库的一致性?
看到这个问题的第一反应,影响数据库的并发一致性不是有四种吗?
丢失修改、读脏数据、不可重复读、幻影读
怎么问什么时候影响,什么时候又不影响?
我也一脸懵。
下面说说我的看法。
假设有事务 T1、T2,数据库中数据 A=100;
t1 时刻:T1 读取 A=100;
t2 时刻:T2 读取 A=100;
t3 时刻:T1修改A=A-20,写入数据库(此时,数据库中A=80);
t4 时刻:T2修改A=A-10,写入数据库(此时,数据库中A=90);
用图表示如下:
最终,A=90,显然数据是错误的(正确值 A=70),发生了数据丢失,所以,就影响了数据库的一致性。
那什么时候不影响呢?
我只能想到极端例子。
如果T1的修改是无用功呢?
如下图所示
最后的结果A=90,显然是正确的,这样的丢失修改就没有影响数据库的一致性;
这些极端的例子还有很多,不再赘述。
换一种思路,我们给事务加上排它锁,如下图:
这样,丢失修改就解决了,进而也就不影响数据库的一致性;
另外,
分别执行不同的事务对象,并行性都没有了,就更不会影响数据库的一致性了。
丢失修改与数据库的一致性相关推荐
- 事务(ACID)、并发一致性问题(丢失修改、读脏数据、不可重复读、幻影读)、封锁(封锁粒度、类型、协议、MySQL 隐式与显示锁定)
1. 事务 1.1 概念 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚. 1.2 ACID 1.2.1 原子性(Atomic ...
- 数据库并发一致性的问题
在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性问题. 使用隔离级别来防止产生的并发一致性问题 1)丢失修改 2) 读脏数据 3)不可重复读 即每次读取的结果可能不一致 4)幻影读 举个 ...
- 修改mysql数据库名方法_安全快速修改Mysql数据库名的5种方法
1. RENAME DATABASE db_name TO new_db_name 这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了. 据说有可能丢失数据.还是不要用的好 ...
- 缓存与数据库的一致性:先操作缓存还是先操作数据库?
数据缓存 在我们实际的业务场景中,一定有很多需要做数据缓存的场景,比如售卖商品的页面,包括了许多并发访问量很大的数据,它们可以称作是是"热点"数据,这些数据有一个特点,就是更新频率 ...
- 两次被裁之后,我终于解决了数据库缓存一致性问题
一 我是一名毕业两年的程序员. 算上实习,工作三年了,正是一个程序员的黄金时代,这让我普通而自信. 但是从实习期,我就被辞退两次了. 今天是我的又一场面试,而且是大厂面试.我要一洗前耻,证明自己. 好 ...
- 共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据...
作者:T-Birds blog.csdn.net/weixin_36634753/article/details/90815755 共享锁(S锁): 又称为读锁,可以查看但无法修改和删除的一种数据锁. ...
- 服务器数据库密码修改了,服务器密码修改后数据库
服务器密码修改后数据库 内容精选 换一换 将GaussDB(DWS)提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用.配置数据源需要配置"odbc.ini&qu ...
- 快狗打车CTO沈剑:数据库架构一致性最佳实践
本文根据沈剑在2018年10月18日[第十届中国系统架构师大会(SACC2018)]现场演讲内容整理而成. 讲师介绍: 沈剑,快狗打车CTO,互联网架构技术专家,"架构师之路"公众 ...
- 三种方式修改 MySQL 数据库名
原文:三种方式修改 MySQL 数据库名 在 Innodb 数据库引擎下修改数据库名的方式与 MyISAM 引擎下修改数据库的方式完全不一样,如果是 MyISAM 可以直接去数据库目录中 mv 就可以 ...
最新文章
- 为什么使用依赖注入?
- C语言结构联合位字段知识体系总结大学霸IT达人
- 贪心算法解决跳马问题_算法浅谈——怪盗基德的珠宝选择问题与贪心算法
- ftp的主动模式(port)与被动模式(PASV)
- unity怪物攻击玩家减血_热血传奇:游戏里要千万小心的小怪,玩家稍有不慎就要吃大亏...
- python 基础 列表
- NiFi导出自己模板和导入别人模板
- 安装Visual Studio 2005 SP1时遇到1718错误
- 快速行进算法(fast_marching_kroon)的matlab代码
- 百度搜索大数据:“摆摊技巧”搜索热度暴涨655%;中国电信:将逐步关闭3G网络业务;IntelliJ IDEA新版发布|极客头条...
- 在文件保存中 os.getcwd() os.listdir() os.makedirs() os.mkdir() xx.join() ... 等函数 的使用介绍...
- Levenberg-Marquardt算法简介和C++实现
- 豆瓣 音乐和读书的搜索页的 window.__DATA__ 的解密
- Vs2010激活 系统延长期限
- Jdk8 中文 api(百度网盘免费下载)
- 四元数、欧拉角、旋转矩阵、旋转向量之间的转换
- kylin build过程详解
- Eclipse中LogCat打印出错信息分析
- Linux学习笔记(管道)
- vue-router 判断是否登陆,未登录跳转登陆页面