すべてのプロダクト
Search
ドキュメントセンター

PolarDB:高速トラバース

最終更新日:Feb 18, 2025

大量のデータを含むクエリが実行されている場合、SQL層がストレージエンジン層からデータを読み取り、計算を実行するため、大量の計算リソースが消費されます。 クエリのパフォーマンスを向上させるために、PolarDB for MySQLはオプティマイザをストレージエンジン層にプッシュする高速トラバース機能を提供します。 このトピックでは、高速トラバース機能について説明します。

前提条件

PolarDB for MySQLクラスターのバージョンが8.0で、リビジョンバージョンは次の要件を満たしています。

  • 8.0.1.1.5以降

  • 8.0.2.2.0以降

クラスターのバージョンを表示する方法については、「エンジンバージョン5.6、5.7、8.0」をご参照ください。

背景

MySQL Community Edition 8.0.13では、COUNT (*) 操作がInnoDBエンジンによって実行されないため、パフォーマンスのオーバーヘッドが大きくなります。 MySQL Community Edition 8.0.18では、InnoDBページのレコードをトラバースできますが、オプティマイザが選択したインデックスに従うことはできません。 代わりに主キーインデックスが使用されます。

PolarDB for MySQLは、オプティマイザによって選択されたインデックスに基づいてページ上のレコードをトラバースできる高速トラバース機能を提供します。 この機能により、テーブルからデータを取得するインデックスや、マルチバージョン同時実行制御 (MVCC) によるバージョンの復元によって引き起こされるページロックの保持が長引くのを防ぎます。

高速トラバース機能を使用する

高速トラバース機能は、サポートされているPolarDB for MySQLクラスターとすぐに使用できます。

性能テスト

このパフォーマンステストでは、TPC-Hスキーマが使用されます。 EXPLAINステートメントを実行して、TPC-Hクエリの実行計画を表示します。

mysql> EXPLAIN SELECT COUNT(*) FROM lineitem\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: lineitem
   partitions: NULL
         type: index
possible_keys: NULL
          key: i_l_shipdate
      key_len: 4
          ref: NULL
         rows: 59440464
     filtered: 100.00
        Extra: Using index

テスト結果

TPC-Hテストは10のスケールファクタで実行されます。 次の図に示すように、高速トラバース機能を有効にしたPolarDBクラスターは、MySQL Community Edition 8.0.13および8.0.18よりも優れたパフォーマンスを提供します。 innodb_parallel_read_threadsパラメーターは1に設定されています。Performance of fast traverse

よくある質問

PolarDB for MySQLinnodb_parallel_read_threadsのデフォルト値は何ですか?

innodb_parallel_read_threadsのデフォルト値は0です。 詳細については、「クラスターとノードパラメーターの設定」をご参照ください。