Sql 如果执行更改操作,请保持分页可重复
如果要对来自支持分页的数据源的结果进行分页,则必须执行以下过程:Sql 如果执行更改操作,请保持分页可重复,sql,pagination,Sql,Pagination,如果要对来自支持分页的数据源的结果进行分页,则必须执行以下过程: 定义页面大小-即每页显示的结果数 使用偏移量=页码(基于0)*页面大小获取用户请求的每页 显示获取的页面的结果 所有这一切都很好,没有考虑到一个操作可能会影响后端系统,从而导致分页发生错误。我说的是有人在页面抓取或删除数据之间插入数据 page_size = 10; get page 0 -> results from 0 to 9; user inserts a record that due to the query b
page_size = 10;
get page 0 -> results from 0 to 9;
user inserts a record that due to the query being executed goes to page 0 - the one just shown;
get page 1 -> results from 10 to 19 - the first results on the page is the result on the old page 0.
所描述的行为可能会使查看者感到困惑。你知道解决这个问题的任何切实可行的办法吗。对此有一些学派的看法
.关于这一点,有几个学派
.如果您关心的更新主要是新的插入(例如,在对问题进行分页时,StackOverflow本身似乎存在此问题,并且出现了新问题),则处理此问题的一种方法是在发出第一个分页查询时捕获时间戳,然后将后续页面请求的结果限制为在该时间戳之前存在的项目。如果您所关心的更新主要是新插入(例如,在查询问题和新问题时,StackOverflow本身似乎会遇到此问题)处理它的一种方法是在发出第一个分页查询时捕获时间戳,然后将后续页面请求的结果限制为在该时间戳之前存在的项目。只要用户了解底层数据总是在变化,他们就不会感到困惑。所以,就用直截了当的方式去做吧
您可以缓存结果的前几页并将其用于后续视图,但结果将与数据库不同步,这更令人困惑。只要用户了解基础数据总是在变化,他们就不会感到困惑。所以,就用直截了当的方式去做吧
您可以缓存结果的前几页并将其用于后续视图,但结果将与数据库不同步,这更令人困惑。我正要问同样的问题。最近我注意到Stackoverflow和Twitter上经常出现这种情况,我正准备问同样的问题。我注意到最近在Stackoverflow和Twitter上经常发生这种情况。