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

PolarDB:pg_statistic

最終更新日:May 30, 2024

カタログpg_statisticには、データベースの内容に関する統計データが格納されます。 エントリはANALYZEによって作成され、その後クエリプランナーによって使用されます。 すべての統計データは、それが最新であると仮定しても、本質的に近似であることに留意されたい。

通常、分析されたテーブル列ごとに、stainherit=falseのエントリが1つあります。 テーブルに継承子がある場合、stainherit=trueの2番目のエントリも作成されます。 この行は、継承ツリー上の列の統計、つまりSELECTFROM * で表示されるデータの統計を表します。一方、stainherit=false行は、SELECTFROMのみの結果を表します。

pg_statisticには、インデックス式の値に関する統計データも格納されます。 これらは、実際のデータ列であるかのように記述されます。特に、starelidはインデックスを参照します。 ただし、通常の非式インデックス列にはエントリが作成されません。これは、基になるテーブル列のエントリと重複するためです。 現在、インデックス式のエントリは常にstainherit=falseです。

さまざまな種類の統計がさまざまな種類のデータに適している可能性があるため、pg_statisticは、保存する統計の種類をあまり想定しないように設計されています。 pg_statisticでは、非常に一般的な統計 (nullnessなど) のみに専用の列が指定されます。 それ以外のすべては「スロット」に記憶され、それは関連する列のグループであり、その内容はスロットの列の1つのコード番号によって識別される。 詳細については、src/include/catalog/pg_statistic.hをご参照ください。

テーブルの内容に関する統計情報でさえ機密と見なされる可能性があるため、pg_statisticは一般に公開することはできません。 (例: 給与列の最小値と最大値は非常に興味深いかもしれません。 pg_statsは、現在のユーザーが読み取り可能なテーブルに関する情報のみを公開するpg_statisticの公開ビューです。

データ型

説明

starellid

oid

記述された列が属するテーブルまたはインデックス。

staattnum

int2

説明されている列の番号。

stainherit

bool

trueの場合、統計には指定されたリレーションの値だけでなく、継承子列が含まれます。

stanullfrac

float4

nullである列のエントリの割合。

stawwidth

int4

null以外のエントリの平均格納幅 (バイト単位) 。

stdiscretent

float4

列内の異なるnull以外のデータ値の数。 ゼロより大きい値は、異なる値の実際の数である。 ゼロ未満の値は、テーブル内の行数の乗数の負の値です。たとえば、値の約80% が非nullであり、各非null値が平均で約2回表示される列は、明了= -0.4で表すことができます。 ゼロ値は、異なる値の数が未知であることを意味する。

stakind N

int2

pg_statistic行のN番目のslotに格納されている統計の種類を示すコード番号。

staop N

oid

N番目の「スロット」に格納された統計を導出するために使用される演算子。 たとえば、ヒストグラムスロットは、データのソート順序を定義する < 演算子を示します。 統計の種類が演算子を必要としない場合はゼロ。

スタコールN

oid

照合は、N番目の「スロット」に格納された統計を導出するために使用される。 たとえば、照合可能な列のヒストグラムスロットは、データのソート順序を定義する照合を示します。 非collatableデータのためのゼロ。

stanumbers N

float4

N番目の「スロット」の適切な種類の数値統計、またはスロットの種類が数値を含まない場合はヌル。

stavalues N

anyarray

N番目の「スロット」の適切な種類の列データ値、またはスロット種類がデータ値を格納しない場合はヌル。 各配列の要素値は、実際には特定の列のデータ型、または配列の要素型などの関連型であるため、これらの列の型をanyarrayよりも具体的に定義する方法はありません。