DBMS 中的事务和可序列化 - 冲突

Posted

技术标签:

【中文标题】DBMS 中的事务和可序列化 - 冲突【英文标题】:Transaction and Serializability on DBMS - Conflicts 【发布时间】:2013-07-04 15:58:40 【问题描述】:

任何人都可以解释一下,为什么它如此重要,以至于我调查了与数据库一起使用冲突的事务计划。 Transaction之间的冲突是什么意思,DBMS将如何处理。

我希望任何人都可以帮助我...谢谢:D

【问题讨论】:

这不是一个问题,而是你问的一章 【参考方案1】:

当您对数据库进行插入或更新时,事务很有用。 您不希望只有一部分数据被插入(或更新)!您只对两种情况感兴趣:什么都没有或什么都没有。

所以,这就像一个“try-catch”(在 java 中)......如果一切正常,你“提交”! ...否则你“回滚”!

【讨论】:

【参考方案2】:

一个事务由许多动作组成。考虑两个动作:T1 的动作 A1 和 T2 的动作 A2。如果

    A1 和 A2 都写入同一个对象 V:在调度中更改 A1 和 A2 的顺序可能会影响结果,那么 A1 和 A2 就会发生冲突。 A1 写入 V,A2 读取 V(反之亦然):更改 A1 和 A2 会影响结果,则 A1 和 A2 会发生冲突。 A1 和 A2 都读取同一个对象:A1 和 A2 的顺序不重要,所以 A1 和 A2 不冲突 A1 读/写到 V1 和 A2 读/写到 V2(!= V1):A1 和 A2 的顺序并不重要。因此 A1 A2 不冲突。

【讨论】:

以上是关于DBMS 中的事务和可序列化 - 冲突的主要内容,如果未能解决你的问题,请参考以下文章

什么是冲突可序列化?

为啥 PostgreSQL 可序列化事务认为这是冲突?

dbms中锁定方法的特点

redis事务和锁机制

关于分布式事务

关于分布式事务