千家信息网

如何理解数据库的并发操作与一致性

发表于:2025-11-19 作者:千家信息网编辑
千家信息网最后更新 2025年11月19日,这篇文章主要讲解了"如何理解数据库的并发操作与一致性",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解数据库的并发操作与一致性"吧!作为分布式强一
千家信息网最后更新 2025年11月19日如何理解数据库的并发操作与一致性

这篇文章主要讲解了"如何理解数据库的并发操作与一致性",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解数据库的并发操作与一致性"吧!

作为分布式强一致数据库的开发者, 被多次问到:

如果我在新加坡和欧洲同时修改一条记录, 如在新加坡 set a=1, 在欧洲 set a=2, 结果 a 是多少?

我的回答是:

可能是 a=1, 也可能是 a=2.

然后提问者会非常困惑和不满:

你不是说数据库是强一致的吗? 为什么结果不确定呢?

我非常理解他的困惑, 但是, 他所提到的"并发操作"和"一致性"并没有必然的联系.

并发

Martin Kleppmann 提到并发(Concurrency)的定义:

For defining concurrency, exact time doesn’t matter: we simply call two operations concurrent if they are both unaware of each other, regardless of the physical time at which they occurred.

要定义并发, 时间并不是一个影响因素: 如果两个操作不知道对方(的开始和结束以及结果), 无论物理时间上他们何时发生, 我们都称这两个操作是并发的.

有这样的例子:

于 00:00:00 时间, 向服务器发起请求 A, 服务器一直没有返回结果. 然后, 于 00:00:03 时间(显然在上一个请求发起"之后"), 再向服务器发起请求 B.

那么, 是不是我们就能说 B 是在 A 之后呢? 结论是不能, 这两个操作是并发操作! 虽然我们明确知道 B 是在 A 发起之后才发起, 但在 B 发起之时, (B)并不知道 A 的结果, 根据 Martin Kleppman 的定义, 两个操作是并发的.

从时间区间上面来理解并发, 可能会更好. 一个操作由开始时间点和结束时间点, 组成一个时间区间, 如果两个操作的时间区间有重叠, 则这两个操作无法区分先后.

另一种定义并发的方法是:

Martin Kleppmann:  An operation A happens before another operation B if B knows about A, or depends on A, or builds upon A in some way.

如果不属于此种情况, 即为并发.

一致性

一致性和3个因素密切相关:

  • 先后顺序

  • 时间

  • 空间

我所理解, 一致性便是唯一预期. 也就是给定输入条件, 能推导出唯一的结果. 对于某个操作场景, 无论我们重复验证多少次, 观察多少次(时间), 在哪里观察(空间), 结果都恒定.

如果读操作(观察)是在写操作之后, 那么观察结果就是我们所预期的那一个确定的结果.

如果读操作和写操作是并发的, 那么, 可能观察到旧值, 也可能观察到新值. 但是, 一旦观察到新值, 之后便不可能再观察到旧值(也即 Linearizable 的意思).

感谢各位的阅读,以上就是"如何理解数据库的并发操作与一致性"的内容了,经过本文的学习后,相信大家对如何理解数据库的并发操作与一致性这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

时间 一致 结果 一致性 观察 数据 数据库 两个 区间 是在 服务器 学习 服务 困惑 先后 内容 因素 就是 情况 空间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发基本费用 网络安全生产办法 灵寿高科技软件开发服务技术规范 计算机网络安全课心得 数据库系统的安全措施 dba数据库技巧 服务器uefi分区一般设置多大 英国留学数据库有哪几种 一流网络安全学院项目管理办法 怎么更新net数据库 江苏游戏软件开发创新服务 如何增加服务器内存 erp系统网络安全 彩虹3引擎数据库解密 通信网络技术基础工程施工流程 牛客网网络安全答题初赛没过 千驹网络安全海报 foxmail服务器怎样改变 数据库设备授权记录表的名称 2021领航杯网络安全知识竞赛 开源bi数据库架构 服务器端口993是什么意思 长沙雨花区学习软件开发培训 2kol是什么游戏服务器 福州数据库培训学费 河北大学网络安全专业招博士生吗 键入网络安全密匙不匹配什么意思 编程猫软件开发 广安黔城互联网科技有限公司 软件开发教学设计一等奖
0