gpt4 book ai didi

java - 事务隔离和并发

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:10 24 4
gpt4 key购买 nike

我正在尝试使用 Connector/J 和 MySql 在 Java (JDK1.8) 中构建应用程序。听说Serializable是最高级别的,但是影响性能,所以Serializable不常用。

但考虑一下这种情况:

有两个提交将更新同一行的字段(提交 A 和提交 B)。如果A和B同时发生,隔离级别不是Serializable,就会出现data race,导致字段不一致。但是在 Serializable 级别,这两个更新不会同时发生,所以要么 A 在 B 之前发生,要么 B 在 A 之前发生,并且该行要么在版本 A 中,要么在版本 B 中,但不会是 A 和 B 的某种混合B.

我认为 ACID 的原子性保证了 A 和 B 的同步。但似乎原子性的定义只保证一个事务发生“全部或全部”,它没有说明并发提交。

那么我应该使用 Serializable 来防止数据竞争吗?哪一个 ACID 实际上保证了一次更新的原子性?

最佳答案

没有。为避免您描述的问题,您不需要“可序列化”。还有其他隔离级别。你害怕的事情只会发生在“未提交的阅读”的情况下。对于任何其他隔离级别,单个记录中的字段将始终保持一致。

关于java - 事务隔离和并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com