我对交易的酸性性质感到困惑。
根据我的理解:
事务必须与兼容。确保一系列语句确实是一个事务的是ACID。到目前为止还好。
现在有不同的隔离级别(因为它完全是一种非事务性模式,所以我省略了读-未实现):读-共读、读-重复和SERIALIZABLE。
在我的理解中,每一个层次都提供了不同程度的隔离,也是一致的。
所以我不明白的是:
如果不同的隔离级别提供不同级别的先决条件酸特性,它们如何才能是有效/可接受的隔离级别?
或者,对于什么是事务的SQL定义是如此宽松/非正式/非严格以至于出现了这些差异?我找不到任何SQL标准文档来读取和查看实际定义是什么。
发布于 2013-10-14 21:16:01
酸是伟大的,酸是可取的,酸是可怕的。
但是酸是标准的。一个标准的存在并不会自动使所有实现者都依附。
如果RDBMS以任何方式提供了ACID行为,则RDBMS是符合ACID的。并非每一个DMBS都符合酸的要求(直到最近,MySQL还没有)。
酸是理想的世界。与世隔绝是现实世界。
发布于 2013-10-15 11:11:49
为什么我们有/接受不同的事务级别?
理论上,每个事务都应该单独执行(以实现ACID属性的I),但在实践中这没有多大意义。这都是关于性能的问题。高并发性应用程序的数据库无法以这种方式正确执行。
这样做的目的是实现隔离和性能之间的平衡。当隔离级别降低(例如,提交读取通常是默认的隔离级别)时,可能会出现一些问题:丢失更新、不可重复读取、幻影读取。通常,这种风险是可以接受的,而且它也可以被控制,只有在某些交易中才能提高隔离水平。
发布于 2013-12-13 12:40:31
我也觉得酸的性质令人困惑。在我看来,这些属性没有得到很好的定义.隔离特性似乎被描述为一种从原子性放松的特性。对于“真实”事务(隔离级别SERIALIZABLE),只有ACD属性感兴趣。这三种性质是格雷提出的。
在我的博客上看到更多关于这一点的信息,"ACID没有意义“。
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
https://stackoverflow.com/questions/19369405
复制相似问题