テーブル統計¶
Prestoは、クエリに対する統計に基づいた最適化をサポートしています。クエリがこれらの最適化を利用するには、Prestoはそのクエリ内のテーブルに関する統計情報を持っている必要があります。
テーブル統計情報は、コネクタによってクエリプランナーに提供されます。現在、統計をサポートしているコネクタはHiveコネクタのみです。
テーブルレイアウト¶
統計情報は、テーブルレイアウトによってクエリプランナーに公開されます。テーブルレイアウトは、テーブルのデータのサブセットを表し、そのデータの組織化プロパティ(ソート順やバケット化など)に関する情報を格納しています。
テーブルで使用可能なテーブルレイアウトの数と、それらのテーブルレイアウトの詳細情報は、各コネクタに固有です。Hiveコネクタを例に挙げると
パーティション化されていないテーブルには、テーブル内のすべてのデータを表すテーブルレイアウトが1つだけあります。
パーティション化されたテーブルには、テーブルレイアウトのファミリーがあります。スキャンされるパーティションの各セットは、1つのテーブルレイアウトを表します。Prestoは、クエリからのフィルタリング述語に基づいて、最小数のパーティションで構成されるテーブルレイアウトを選択しようとします。
利用可能な統計情報¶
Prestoでは、次の統計情報を使用できます。
テーブルの場合
行数: テーブルレイアウト内の行の総数
テーブル内の各列の場合
データサイズ: 読み取る必要があるデータのサイズ
NULL値の割合: NULL値の割合
異なる値の数: 異なる値の数
最小値: 列の最小値
最大値: 列の最大値
特定のクエリで使用可能な統計情報のセットは、使用されているコネクタによって異なり、テーブルごと、またはテーブルレイアウトごとにも異なる場合があります。たとえば、Hiveコネクタは現在、データサイズに関する統計情報を提供していません。
テーブル統計は、Presto SQLインターフェースでSHOW STATSコマンドを使用して表示できます。Hiveコネクタの場合、テーブル統計の更新方法については、Hiveコネクタのドキュメントを参照してください。