我正在开发一个具有典型CRUD web使用模式的网站:类似于用户创建/更新内容以及其他用户阅读内容的博客或论坛。
在本例中,将数据库的隔离级别设置为“读取未提交”(脏读)似乎是可以的。我对“读未提交”的一般缺点的理解是,读取器可能读取未提交的数据,这些数据稍后将被回滚。
在CRUD博客/论坛使用模式中,会有任何回滚吗?即使存在,读取未提交的数据有什么重大问题吗?
现在我不使用任何复制,但是将来如果我想使用复制(基于行的,而不是基于语句的),“未提交的读”隔离级别会阻止我这样做吗?
你认为如何?有人试过在RDBMS上使用“未提交的读”吗?
发布于 2010-01-08 18:02:21
可以安全地使用基于行的复制,但不能使用基于语句的复制。
发布于 2011-02-28 14:54:57
READ未提交的问题并不是可能出现回滚--至少,这不是主要问题。最主要的问题是您可能会得到部分数据。例如,使用一个博客,假设您有一个汇总表,其中包含存在的帖子数量。您还拥有一张每张帖子都有一行的桌子。很明显,我在这里做东西--这不是你应该拥有的结构。
无论如何,在一个线程中启动事务,将汇总表中的帖子数量从4更新到5,插入一个新的post行,并提交事务。效果很好。
在另一个线程中,您读取文章的数量,并将博客显示在一个屏幕上。此查询(非常快)发生在UPDATE语句和INSERT语句之间。文章的数量显示为"5“,如果你幸运的话,你有4篇博客文章。如果您在编写代码时运气不佳,并且实际上使用了摘要号,而不是仅仅显示它,则会出现数组溢出情况.
在大多数情况下,读提交是您想要提供适当的一致性。
https://serverfault.com/questions/100664
复制相似问题