pg_statistic
#
The catalog <structname>pg_statistic</structname> stores
statistical data about the contents of the database. Entries are
created by <link linkend="sql-analyze"><command>ANALYZE</command></link>
and subsequently used by the query planner. Note that all the
statistical data is inherently approximate, even assuming that it
is up-to-date.
pg_statistic
カタログはデータベースの内容に関する統計データを保存します。
項目はANALYZE
で作成され、後に問い合わせプランナで使用されます。
最新のものと思ってもすべての統計データは本質的に大雑把なものであることに注意してください。
Normally there is one entry, with <structfield>stainherit</structfield> =
<literal>false</literal>, for each table column that has been analyzed.
If the table has inheritance children or partitions, a second entry with
<structfield>stainherit</structfield> = <literal>true</literal> is also created. This row
represents the column's statistics over the inheritance tree, i.e.,
statistics for the data you'd see with
<literal>SELECT <replaceable>column</replaceable> FROM <replaceable>table</replaceable>*</literal>,
whereas the <structfield>stainherit</structfield> = <literal>false</literal> row represents
the results of
<literal>SELECT <replaceable>column</replaceable> FROM ONLY <replaceable>table</replaceable></literal>.
通常は、解析されるテーブル列毎に、stainherit
= false
を持つ1つの項目が存在します。
テーブルが継承された子あるいはパーティションを持つ場合、stainherit
= true
を持つ2つ目の項目が作成されます。
この行は継承ツリー全体に渡る列の統計情報、つまり、SELECT
で確認できるデータに対する統計情報を表します。
一方でcolumn
FROM table
*stainherit
= false
の行はSELECT
の結果を表します。
column
FROM ONLY table
<structname>pg_statistic</structname> also stores statistical data about
the values of index expressions. These are described as if they were
actual data columns; in particular, <structfield>starelid</structfield>
references the index. No entry is made for an ordinary non-expression
index column, however, since it would be redundant with the entry
for the underlying table column. Currently, entries for index expressions
always have <structfield>stainherit</structfield> = <literal>false</literal>.
pg_statistic
はインデックス式の値についての統計データも格納します。
これらはあたかも値が実際のデータ列であるかのように表現されます。
特にstarelid
はインデックスを参照します。
これは元のテーブル列の項目に対して冗長となるので、普通の式を持たないインデックス列では項目は作成されません。
現在インデックス式用の項目は常にstainherit
= false
を持ちます。
Since different kinds of statistics might be appropriate for different
kinds of data, <structname>pg_statistic</structname> is designed not
to assume very much about what sort of statistics it stores. Only
extremely general statistics (such as nullness) are given dedicated
columns in <structname>pg_statistic</structname>. Everything else
is stored in <quote>slots</quote>, which are groups of associated columns
whose content is identified by a code number in one of the slot's columns.
For more information see
<filename>src/include/catalog/pg_statistic.h</filename>.
異なる種類のデータに対しては違った種類の統計が相応しいことからpg_statistic
はどのような情報を保存するか深く推定しないように設計されています。
(例えばNULLであるような)極端に一般的な統計のみpg_statistic
の特定の列に入ります。
その他すべてはスロット列の内の1つのコード番号でその内容が識別される相関している列のグループである「スロット」に保存されます。
src/include/catalog/pg_statistic.h
を参照してください。
<structname>pg_statistic</structname> should not be readable by the
public, since even statistical information about a table's contents
might be considered sensitive. (Example: minimum and maximum values
of a salary column might be quite interesting.)
<link linkend="view-pg-stats"><structname>pg_stats</structname></link>
is a publicly readable view on
<structname>pg_statistic</structname> that only exposes information
about those tables that are readable by the current user.
pg_statistic
はテーブル内容に関する統計情報と言えども秘密の情報とみなされますので、一般のユーザが読み取り可能であってはいけません。
(給与列の最高額と最低額などは誰もが興味をそそられる良い例ですよね。)
pg_stats
は一般のユーザが読み取り可能なpg_statistic
に対するビューで、既存のユーザが読んでも差し支えないテーブルの情報のみを開示しています。
表51.51 pg_statistic
の列
Column Type 列 型 Description 説明 |
---|
The table or index that the described column belongs to 記述された列が属するテーブルもしくはインデックス |
The number of the described column 記述された列数 |
If true, the stats include values from child tables, not just the values in the specified relation trueの場合、統計情報には指定されたリレーションの値だけではなく、子テーブルの値も含まれます |
The fraction of the column's entries that are null NULL値である列項目の割合 |
The average stored width, in bytes, of nonnull entries 非NULL項目の平均保存幅(バイト単位) |
The number of distinct nonnull data values in the column.
A value greater than zero is the actual number of distinct values.
A value less than zero is the negative of a multiplier for the number
of rows in the table; for example, a column in which about 80% of the
values are nonnull and each nonnull value appears about twice on
average could be represented by <structfield>stadistinct</structfield> = -0.4.
A zero value means the number of distinct values is unknown.
列内で非NULL個別値を持つデータ数。
ゼロより大きい値は実際の個別値の数です。
ゼロより小さい値はテーブル内の行数に対する乗数を負にしたものです。
例えば、約80%の値が非NULLで、それぞれの非NULL値が平均して2回ほど出現する列は |
A code number indicating the kind of statistics stored in the
<replaceable>N</replaceable>th <quote>slot</quote> of the
<structname>pg_statistic</structname> row.
|
An operator used to derive the statistics stored in the
<replaceable>N</replaceable>th <quote>slot</quote>. For example, a
histogram slot would show the <literal><</literal> operator
that defines the sort order of the data.
Zero if the statistics kind does not require an operator.
|
The collation used to derive the statistics stored in the
<replaceable>N</replaceable>th <quote>slot</quote>. For example, a
histogram slot for a collatable column would show the collation that
defines the sort order of the data. Zero for noncollatable data.
|
Numerical statistics of the appropriate kind for the
<replaceable>N</replaceable>th <quote>slot</quote>, or null if the slot
kind does not involve numerical values
|
Column data values of the appropriate kind for the
<replaceable>N</replaceable>th <quote>slot</quote>, or null if the slot
kind does not store any data values. Each array's element
values are actually of the specific column's data type, or a related
type such as an array's element type, so there is no way to define
these columns' type more specifically than <type>anyarray</type>.
|