1

我正在开发一个 Grails Web 应用程序,该应用程序的访问模式与 StackOverflow 或 MyLifeIsAverage 类似——用户可以对条目进行投票,他们的投票用于根据投票数对条目列表进行排序。在执行排序的选择查询时可以进行投票。

由于选择会锁定表的大部分,因此似乎正常的事务锁定会导致更新永远需要(给定足够的流量)。有没有人开发过具有此类数据访问模式的应用程序,如果是,您是否找到了一种方法来允许这些更新和选择或多或少同时发生?有谁知道像 SO 这样的网站是如何处理这个问题的?

我的想法是使排序选择脏读,因为如果它们不是一直都是最新的,这是可以接受的。这是我可能提高这些选择和更新性能的唯一想法,但我认为有人可能知道更好的方法。

4

1 回答 1

1

不要过多地推断您的数据库 - 数据库是极其复杂的动物,几乎总是不会按照您的想法工作。MVCC 数据库,它是任何现代数据库(即不是 myisam 表),将执行表扫描,而不会重度锁定。MVCC 的整个概念是写入不会阻塞读取,反之亦然。但是这里不会进行表扫描。为了有效地回答查询,可能有一个关于投票的索引。该索引将用于 1) 限制从表中检索的行数 2) 按排序顺序检索它们(即不执行排序。)

于 2010-05-19T15:26:19.837 回答