ページング順序保持機能は、読み取り専用分析エンジンがデータクエリを並列実行する際に、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実行時に、ヒント構文を追加して、このSQLでページング順序保持機能を使用することを明示的に指定します。
注意:
mysqlクライアントで読み取り専用分析エンジンにアクセスする場合は、-cオプションを追加してください。そうでないと、SQLで明示的に指定したページング順序保持が効果がありません。
mysql> select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 order by t1.c1 limit 10,10;