From 2aa1d8174348c1c18e8d952cde45df7179269fa4 Mon Sep 17 00:00:00 2001 From: kkato Date: Thu, 19 Dec 2024 22:10:40 +0900 Subject: [PATCH 1/5] Update --- doc/src/sgml/planstats.sgml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index d18e37597d1..9819089533a 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -54,12 +54,8 @@ while producing statistics, the results will change slightly after any new ANALYZE. --> -《マッチ度[55.755396]》以下の例はPostgreSQLリグレッションテストデータベース内のテーブルを使用します。 -表示される出力はバージョン8.3で取得しました。 -以前の(または以降の)バージョンとは動作が変わっているかもしれません。 -また、ANALYZEは統計情報を生成する時にランダムなサンプリングを行いますので、結果はANALYZEを新しく行った後に多少変わることに注意してください。 -《機械翻訳》以下の例はPostgreSQLリグレッションテストデータベースのテーブルを使用しています。 -また、ANALYZEは統計を生成する際にランダムサンプリングを使用するため、新しいANALYZEを実行した後は結果がわずかに変化することに注意してください。 +以下の例ではPostgreSQLのリグレッションテストデータベース内のテーブルを使用しています。 +また、ANALYZEは統計情報を生成する時にランダムなサンプリングを行うため、ANALYZEを実行するたびに結果が若干変化することに注意してください。 @@ -560,10 +556,8 @@ tablename | null_frac | n_distinct | most_common_vals count estimates for both relations (num_rows, not shown, but "tenk") together with the column null fractions (zero for both): --> -《マッチ度[62.269939]》今回の場合、すべての値が一意であるため、unique2に関するMCV情報がありません。 -ですので、両リレーションの個別値数とNULL値の部分のみに依存したアルゴリズムを使用することができます。 -《機械翻訳》この場合、unique2に対するMCV情報は存在せず、すべての値は一意であるように見えます(n_distinct = -1)。 -そこで、両方の関係(num_rows、図示せず、ただし"tenk")に対する行数の推定値と列のNULL部分(両方ともゼロ)を使用するアルゴリズムを使用します。 +この場合、unique2 に関する MCV の情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。 +そのため、両方のリレーション(この場合は "tenk")の行数推定値(num_rows、ここでは表示されていません)と、カラムのNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。 selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2) @@ -580,10 +574,8 @@ selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2) Cartesian product of the two inputs, multiplied by the selectivity: --> -《マッチ度[76.946108]》これは、各リレーションにおいて、1からNULL部分を差し引き、個別値数の最大値で割った値です。 -この結合が生成するはずの行数は、2つの入力のデカルト積の濃度に、この選択度を掛けたものとして計算されます。 -《機械翻訳》これは、各リレーションに対してNULL分数を1から減算し、より大きなリレーションの行カウントで割った値です(この値は、一意でない場合にスケーリングされます)。 -結合が発行する可能性のある行数は、2つの入力の直積のカーディナリティに選択性を掛けたものとして計算されます。 +これは、各リレーションにおいて、1からNULL部分を差し引き、それを大きい方のリレーションの行数で割ります(この値は一意でない場合にはスケーリングされます)。 +この結合が生成するはずの行数は、2つの入力のデカルト積のカーディナリティに、この選択度を掛けたものとして計算されます。 rows = (outer_cardinality * inner_cardinality) * selectivity From 0cac90250c8a5f46aa413ae3185d1891c1842342 Mon Sep 17 00:00:00 2001 From: kkato Date: Sat, 21 Dec 2024 18:32:45 +0900 Subject: [PATCH 2/5] Fix --- doc/src/sgml/planstats.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index 9819089533a..18e3b4659a2 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -556,8 +556,8 @@ tablename | null_frac | n_distinct | most_common_vals count estimates for both relations (num_rows, not shown, but "tenk") together with the column null fractions (zero for both): --> -この場合、unique2 に関する MCV の情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。 -そのため、両方のリレーション(この場合は "tenk")の行数推定値(num_rows、ここでは表示されていません)と、カラムのNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。 +この場合、unique2に関するMCVの情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。 +そのため、両方のリレーション(この場合は "tenk")の行数推定値(num_rows、ここでは表示されていません)と、列のNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。 selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2) From 326aa1bb0cb82fdb8836de3d24c205c0a27f8972 Mon Sep 17 00:00:00 2001 From: kkato Date: Tue, 7 Jan 2025 21:00:47 +0900 Subject: [PATCH 3/5] Leave new --- doc/src/sgml/planstats.sgml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index 18e3b4659a2..68f1ae27f4d 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -54,8 +54,8 @@ while producing statistics, the results will change slightly after any new ANALYZE. --> -以下の例ではPostgreSQLのリグレッションテストデータベース内のテーブルを使用しています。 -また、ANALYZEは統計情報を生成する時にランダムなサンプリングを行うため、ANALYZEを実行するたびに結果が若干変化することに注意してください。 +以下の例はPostgreSQLリグレッションテストデータベースのテーブルを使用しています。 +また、ANALYZEは統計を生成する際にランダムサンプリングを使用するため、新しいANALYZEを実行した後は結果がわずかに変化することに注意してください。 From b3c610833fcb16b6fca7674e16393d88508c39bc Mon Sep 17 00:00:00 2001 From: kkato Date: Tue, 7 Jan 2025 21:01:20 +0900 Subject: [PATCH 4/5] Fix --- doc/src/sgml/planstats.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index 68f1ae27f4d..533647c61ad 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -557,7 +557,7 @@ tablename | null_frac | n_distinct | most_common_vals together with the column null fractions (zero for both): --> この場合、unique2に関するMCVの情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。 -そのため、両方のリレーション(この場合は "tenk")の行数推定値(num_rows、ここでは表示されていません)と、列のNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。 +そのため、両方のリレーションの行数推定値((ここでは表示されていませんが"tenk"の)num_rows)と、列のNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。 selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2) From 560f6b9eca11aaa259e6fedca951a4205d4f9e82 Mon Sep 17 00:00:00 2001 From: kkato Date: Tue, 7 Jan 2025 21:01:32 +0900 Subject: [PATCH 5/5] Change to cardinarity --- doc/src/sgml/planstats.sgml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index 533647c61ad..68ee367f351 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -78,7 +78,7 @@ EXPLAIN SELECT * FROM tenk1; completeness. The number of pages and rows is looked up in pg_class: --> -プランナがどのようにtenk1の濃度を決定するかについてはで説明しました。 +プランナがどのようにtenk1のカーディナリティを決定するかについてはで説明しました。 しかし、ここでは完全を期するために説明を繰り返します。 ページ数および行数はpg_classから検索されます。 @@ -181,7 +181,7 @@ selectivity = (1 + (1000 - bucket[2].min)/(bucket[2].max - bucket[2].min))/num_b tenk1: --> つまり、1つのバケット全体に、2番目のバケットとの線形比率を加えたものを、バケット数で割ったものとなります。 -ここで、行の推定値は、選択度とtenk1の濃度を掛け合わせたものとして計算されます。 +ここで、行の推定値は、選択度とtenk1のカーディナリティを掛け合わせたものとして計算されます。 rows = rel_cardinality * selectivity @@ -251,7 +251,7 @@ selectivity = mcf[3] As before, the estimated number of rows is just the product of this with the cardinality of tenk1: --> -前と同様、推定される行数は単に前回同様、この値とtenk1の濃度との積です。 +前と同様、推定される行数は単に前回同様、この値とtenk1のカーディナリティとの積です。 rows = 10000 * 0.003 @@ -673,7 +673,7 @@ ANALYZE t; cardinality of t using the number of pages and rows obtained from pg_class: --> -で説明されているように、pg_classから得られるページ数と行数を使って、tの濃度を決定できます。 +で説明されているように、pg_classから得られるページ数と行数を使って、tのカーディナリティを決定できます。 SELECT relpages, reltuples FROM pg_class WHERE relname = 't'; @@ -779,7 +779,7 @@ EXPLAIN (ANALYZE, TIMING OFF) SELECT * FROM t WHERE a = 1 AND b = 1; estimated number of rows returned by the HashAggregate node) is very accurate: --> -GROUP BY句が生成するグループ数のような、複数列の集合の濃度の見積もりについても、同様の問題が起きます。 +GROUP BY句が生成するグループ数のような、複数列の集合のカーディナリティの見積もりについても、同様の問題が起きます。 GROUP BYの対象が単一の列なら、N個別値の推定(HashAggregateノードが返す推定行数で示されます)はとても正確です。 EXPLAIN (ANALYZE, TIMING OFF) SELECT COUNT(*) FROM t GROUP BY a;