分页保序功能

最近更新时间:2025-01-22 15:02:32

我的收藏
分页保序功能是只读分析引擎为了避免在并行执行数据查询时,因为 order by 字段存在重复,导致分页查询结果不稳定的解决方法。本文介绍如何使用分页保序功能。详细的功能介绍,请参考 分页保序能力

保序场景

无 order by 操作符,仅仅有 limit 的场景。
order by 字段存在重复值,仅仅对输出结果部分字段进行排序。
子查询中包含排序,但是外层查询中未进行排序。

使用说明

默认开启全局分页保序功能
使用 设置实例参数 功能,修改只读分析引擎的参数“libra_preserve_order_for_pagination”。此参数默认值为 OFF,修改为 ON 则对整实例开启了分页保序能力。
注意:
因为分页保序功能会默认对查询的输出结果添加隐式排序,所以输出结果集较大的场景下会导致性能损耗。建议在 SQL 执行中对需要此功能的 SQL 指定显式开启分页保序功能。
在 session 会话中开启分页保序功能
在访问至只读分析引擎后,可显示指定会话级的参数设置。在当前会话开启/关闭分页保序功能。
mysql> set libra_preserve_order_for_pagination=on;
mysql> set libra_preserve_order_for_pagination=off;
在 SQL 执行中指定使用分页保序功能
在 SQL 执行的时候,添加 hint 语法显式指定此 SQL 使用分页保序能力。
注意:
如果使用 mysql 客户端访问只读分析引擎,请添加 -c 参数。否则 SQL 中显示指定分页保序无法生效。
mysql> select /*+ SET_VAR(libra_preserve_order_for_pagination=ON) */ t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 order by t1.c1 limit 10,10;