代码之家  ›  专栏  ›  技术社区  ›  Kaleb Brasee

站点的数据访问策略,比如排序的SQL查询和影响排序的同步更新?

  •  1
  • Kaleb Brasee  · 技术社区  · 16 年前

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

    由于selects会锁定表的很大一部分,所以正常的事务锁定似乎会导致更新花费很长时间(给定足够的通信量)。是否有人在使用这样的数据访问模式的应用程序上工作过?如果是,您是否找到了允许这些更新和选择或多或少同时发生的方法?有人知道这样的网站是如何做到这一点的吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Eloff    16 年前

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