テーブル統計

Prestoは、クエリに対する統計に基づいた最適化をサポートしています。クエリがこれらの最適化を利用するには、Prestoはそのクエリ内のテーブルに関する統計情報を持っている必要があります。

テーブル統計情報は、コネクタによってクエリプランナーに提供されます。現在、統計をサポートしているコネクタはHiveコネクタのみです。

テーブルレイアウト

統計情報は、テーブルレイアウトによってクエリプランナーに公開されます。テーブルレイアウトは、テーブルのデータのサブセットを表し、そのデータの組織化プロパティ(ソート順やバケット化など)に関する情報を格納しています。

テーブルで使用可能なテーブルレイアウトの数と、それらのテーブルレイアウトの詳細情報は、各コネクタに固有です。Hiveコネクタを例に挙げると

  • パーティション化されていないテーブルには、テーブル内のすべてのデータを表すテーブルレイアウトが1つだけあります。

  • パーティション化されたテーブルには、テーブルレイアウトのファミリーがあります。スキャンされるパーティションの各セットは、1つのテーブルレイアウトを表します。Prestoは、クエリからのフィルタリング述語に基づいて、最小数のパーティションで構成されるテーブルレイアウトを選択しようとします。

利用可能な統計情報

Prestoでは、次の統計情報を使用できます。

  • テーブルの場合

    • 行数: テーブルレイアウト内の行の総数

  • テーブル内の各列の場合

    • データサイズ: 読み取る必要があるデータのサイズ

    • NULL値の割合: NULL値の割合

    • 異なる値の数: 異なる値の数

    • 最小値: 列の最小値

    • 最大値: 列の最大値

特定のクエリで使用可能な統計情報のセットは、使用されているコネクタによって異なり、テーブルごと、またはテーブルレイアウトごとにも異なる場合があります。たとえば、Hiveコネクタは現在、データサイズに関する統計情報を提供していません。

テーブル統計は、Presto SQLインターフェースでSHOW STATSコマンドを使用して表示できます。Hiveコネクタの場合、テーブル統計の更新方法については、Hiveコネクタのドキュメントを参照してください。