【发布时间】:2014-11-25 12:35:43
【问题描述】:
我知道这个问题已经回答过很多次了。 其实如果你参考http://www.percona.com/files/presentations/ppc2009/PPC2009_mysql_pagination.pdf 你会得到答案。
但是我对这种常见的方法有如下疑问。
如果您参考幻灯片 18,请考虑以下事件顺序:
- 客户端获取“首页”
- “第三页”中存在 ID=19 的帖子,其 thumb_up 计数增加到 98,从而将其推到“第一页”
- 客户端获取“第二页”
然后客户将错过帖子 ID=19。我正在做一个移动应用程序,其中项目缓存在客户端(想象一个无限滚动列表)。如果缓存不定期更新,那么这篇文章会错过一段时间!
有什么聪明的方法可以确保客户端永远不会错过任何项目,尤其是在客户端正在获取可能由其他用户同时更新的项目的情况下?
我想为表中的每个项目设置一个唯一的“更新时间戳”作为解决方案。但是,这将需要某种形式的序列化来保持时间戳的唯一性,并且对于大量更新而言表现不佳。我们还需要确保时间戳是单调递增的,否则项目也可能会丢失。
【问题讨论】:
标签: mysql pagination