Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update planstats.sgml for v17 #3189

Merged
merged 5 commits into from
Jan 9, 2025

Conversation

kkato
Copy link
Contributor

@kkato kkato commented Dec 19, 2024

以下のファイルの 17.0 対応です。

  • planstats.sgml
Details

英語版のv16とv17の差分です。

~/ghq/github.com/kkato/jpug-doc/doc/src/sgml % git diff REL_16_4 REL_17_0 planstats.sgml
diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml
index d2b84b301f5..c7ec749d0a6 100644
--- a/doc/src/sgml/planstats.sgml
+++ b/doc/src/sgml/planstats.sgml
@@ -30,8 +30,6 @@
   <para>
    The examples shown below use tables in the <productname>PostgreSQL</productname>
    regression test database.
-   The outputs shown are taken from version 8.3.
-   The behavior of earlier (or later) versions might vary.
    Note also that since <command>ANALYZE</command> uses random sampling
    while producing statistics, the results will change slightly after
    any new <command>ANALYZE</command>.
@@ -391,18 +389,20 @@ tablename  | null_frac | n_distinct | most_common_vals
 </programlisting>
 
    In this case there is no <acronym>MCV</acronym> information for
-   <structfield>unique2</structfield> because all the values appear to be
-   unique, so we use an algorithm that relies only on the number of
-   distinct values for both relations together with their null fractions:
+   <structname>unique2</structname> and all the values appear to be
+   unique (n_distinct = -1), so we use an algorithm that relies on the row
+   count estimates for both relations (num_rows, not shown, but "tenk")
+   together with the column null fractions (zero for both):
 
 <programlisting>
-selectivity = (1 - null_frac1) * (1 - null_frac2) * min(1/num_distinct1, 1/num_distinct2)
+selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2)
             = (1 - 0) * (1 - 0) / max(10000, 10000)
             = 0.0001
 </programlisting>
 
    This is, subtract the null fraction from one for each of the relations,
-   and divide by the maximum of the numbers of distinct values.
+   and divide by the row count of the larger relation (this value does get
+   scaled in the non-unique case).
    The number of rows
    that the join is likely to emit is calculated as the cardinality of the
    Cartesian product of the two inputs, multiplied by the

@kkato kkato changed the title Update planstats.sgml Update planstats.sgml for v17 Dec 19, 2024
@kkato
Copy link
Contributor Author

kkato commented Dec 19, 2024

@KenichiroTanaka
GitHub Workflowが実行されないので、承認をお願いします。

@KenichiroTanaka
Copy link
Contributor

@kkato
早速の対応ありがとうございます。
承認しました。

ですので、両リレーションの個別値数とNULL値の部分のみに依存したアルゴリズムを使用することができます。
《機械翻訳》この場合、<structname>unique2</structname>に対する<acronym>MCV</acronym>情報は存在せず、すべての値は一意であるように見えます(n_distinct = -1)。
そこで、両方の関係(num_rows、図示せず、ただし"tenk")に対する行数の推定値と列のNULL部分(両方ともゼロ)を使用するアルゴリズムを使用します。
この場合、<structname>unique2</structname> に関する <acronym>MCV</acronym> の情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この場合、<structname>unique2</structname> に関する <acronym>MCV</acronym> の

タグの前後のスペースは無しにしてください。

《機械翻訳》この場合、<structname>unique2</structname>に対する<acronym>MCV</acronym>情報は存在せず、すべての値は一意であるように見えます(n_distinct = -1)。
そこで、両方の関係(num_rows、図示せず、ただし"tenk")に対する行数の推定値と列のNULL部分(両方ともゼロ)を使用するアルゴリズムを使用します。
この場合、<structname>unique2</structname> に関する <acronym>MCV</acronym> の情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。
そのため、両方のリレーション(この場合は "tenk")の行数推定値(num_rows、ここでは表示されていません)と、カラムのNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

カラムのNULL率

カラムは「列」で統一されています。

@kkato
Copy link
Contributor Author

kkato commented Dec 21, 2024

ご指摘ありがとうございます。
修正しました。

@noborus
Copy link
Contributor

noborus commented Dec 22, 2024

ご指摘ありがとうございます。 修正しました。

修正ありがとうございます。確認しました。

《機械翻訳》以下の例は<productname>PostgreSQL</productname>リグレッションテストデータベースのテーブルを使用しています。
また、<command>ANALYZE</command>は統計を生成する際にランダムサンプリングを使用するため、新しい<command>ANALYZE</command>を実行した後は結果がわずかに変化することに注意してください。
以下の例では<productname>PostgreSQL</productname>のリグレッションテストデータベース内のテーブルを使用しています。
また、<command>ANALYZE</command>は統計情報を生成する時にランダムなサンプリングを行うため、<command>ANALYZE</command>を実行するたびに結果が若干変化することに注意してください。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

newの意味は残したほうが良いと思うので、前バージョンの訳のままでも良いと思いました。

《機械翻訳》この場合、<structname>unique2</structname>に対する<acronym>MCV</acronym>情報は存在せず、すべての値は一意であるように見えます(n_distinct = -1)。
そこで、両方の関係(num_rows、図示せず、ただし"tenk")に対する行数の推定値と列のNULL部分(両方ともゼロ)を使用するアルゴリズムを使用します。
この場合、<structname>unique2</structname>に関する<acronym>MCV</acronym>の情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。
そのため、両方のリレーション(この場合は "tenk")の行数推定値(num_rows、ここでは表示されていません)と、列のNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

num_rowsは表示されていて、tenk1,tenk2が表示されていないので、
「両方のリレーション(ここでは表示されていませんが"tenk")の行数推定値(num_rows) 」
だと思います。後々見たときにチェックしづらいので括弧の関係を崩したくないため
「両方のリレーションの行数推定値((ここでは表示されていませんが"tenk"の)num_rows) 」
とするのが良いかもしれません。
(原文の方でnum_rows1,nom_rows2、tenk1,tenk2を崩さず書いてほしいところです...)

Copy link
Contributor

@noborus noborus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません。ちょっとコメントを移動修正。
2つコメントを書いたので確認をお願いします。

今回のバージョンアップで変更していない古い箇所で、
cardinality がカーディナリティではなく他では「濃度」になっているところがあります。
これはカーディナリティにしてしまって良いと思いました。

@kkato
Copy link
Contributor Author

kkato commented Jan 7, 2025

レビューありがとうございます。

返信が遅くなり、申し訳ありません。
修正したので、ご確認よろしくお願いします。

@noborus
Copy link
Contributor

noborus commented Jan 8, 2025

修正ありがとうございます。確認しました。

Copy link
Contributor

@KenichiroTanaka KenichiroTanaka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

対応ありがとうございました。
一通り確認しましたのでマージします。

@KenichiroTanaka KenichiroTanaka merged commit 3f6b726 into pgsql-jp:doc_ja_17 Jan 9, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants