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

PolarDB:高速トラバース

最終更新日:May 24, 2024

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

前提条件

PolarDB for MySQLクラスターのバージョンが8.0で、リビジョンバージョンは次の要件を満たしています。
  • 8.0.1.1.5以降
  • 8.0.2.2.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。 行 ***************************
           id: 1
  select_type: シンプル
        テーブル: lineitem
   パーティション: NULL
         タイプ: index
possible_keys: NULL
          キー: i_l_shipdate
      key_len: 4
          ref: NULL
         行: 59440464
     filtered: 100.00
        エクストラ: インデックス
の使用

テスト結果

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