如上述 SQL 所示,该方案逻辑清晰,代码也易于编写。但是,劣势也很明显:由于需要对主键或者唯一索引进行排序,越靠后的页面参与排序的行数就会越多,相应地扫描数据过程中对 TiKV 的压力也会线性增长。这导致整体处理效率偏低,尤其当批量处理涉及的数据体量较大时,可能会占用过多计算资源,甚至引发性能问题,影响线上业务。

    这里我们假定的业务需求是,要在一小时内完成 200 万行数据的并发处理。下面我们来初始化一张表 ,表结构如下所示;该表初始状态即包含约 200 万行数据。

    接下来,只需要使用 查询每个分片的数据即可。

    总体而言,改进方案由于规避了频繁的数据排序操作造成的性能损耗,显著改善了批量处理的效率。