[Pg_study 00018] Re: 次回(5/31)のプレ勉強会について

江川大地 daichi.egawa @ gmail.com
2014年 5月 24日 (土) 22:10:49 JST


江川です。

田中さん、参考になる資料、ありがとうございます。
ついうっかり、analyze.cを読む休日になってしまいました。

時間の兼ね合いもありますが、メモリ管理のあたりは軽く触れるくらいにして、
次回の方にメモリマネージャーを読んでもらうとかにしてもいいかもしれませんね。

些細な指摘で恐縮ですが、、、

1) 「analyze_rel()を読む」の部分
> 6.表の種類(一般の表か、ViewかマテViewか、外部テーブルか)
重箱の隅をつつくようですが、VIEWかまでチェックしてます?

また、それぞれのrelationに対して、どういった処理をするのかは敢えて書いていないのでしょうか?
# 外部テーブルはどう扱うのか、スキップする表はないのかなど

> 7.do_analyze_relを実行する
> 8.パーティション表だったらdo_analyze_relを実行する

コードには忠実だと思うのですが、このように書くと、パーティション表の場合もそうでない場合も同じに見えます。
「パーティション表の場合は、(再帰的に)do_analyze_relを実行する」など少し違うということを書くといいのかなと。

2)「do_analyuze_rel()を読む」 の部分
>   9.パーティション表でない場合は統計情報を更新

これだと、最終的にパーティションに関わるテーブルの場合、まったく統計情報が更新されないように感じてしまいました。
もう少し、パーティションの場合の動きをしっかり書くと勉強になりますー

正直、どのくらいのレベルの方々の集まりになるか分からないのですが、
以下の点も解説されると、どうしてそういうコードになるのか分かっていいと思いました。
# 当日、口頭で補うとしてたのかもしれませんが…

3) なぜデータ型が使える演算子によって、処理が変わるのか
4) なぜサンプルの行数を取得するのか


併せて、統計情報を計算するところが、ANALYZEのメインかと思うので、
もう少し、教えていただけると嬉しいです(時間があれば、compute_index_stats()にも)w

あと、技術的な内容ではなくて申し訳ないですが、
当日、ホワイトボードで結構ですので、analyzeの大きな作りは
フローチャートで示していただけると嬉しいかもしれませんー

以上です!


Thanks and Regards,
Daichi Egawa


2014年5月24日 8:53 Suzuki Hironobu <hironobu @ interdb.jp>:

> 一カ所、補足します。
>
>
>
>
>>>>>
>>>> (4)21ページ
>>>> バッファストラテジで、BAS_VACUUM(256[kbyte]のring-buffer)を選択してい
>>>> ますが、これの意味するところは何でしょうか?
>>>> #通常はBAS_NORMALでring-bufferを使わないわけですが。
>>>>
>>> まずは④で説明したとおり、必要以上にメモリ上からデータを追い出さない
>>> ようにするためです。さらにこの256KbytesというサイズはCPUのL2キャッシュを
>>> 考慮した値が設定されています。丁度前回の早水さんのセッションを追補で きるため
>>> しくみ分科会としては良い教材と思います。資料に説明を加えます。
>>>
>>
>>
> 早水さんの講演は勉強会のレベルを相当底上げしたので、もしもキャッシュの話 題をもう一度するのであれば、仮説を立てて実験した上で発表すること を皆が
> 期待するとおもいますし、我々もそういう人が現れるのを期待しています。そう しないと早水さんに講演していただいた意味もないですし。
> #知識よりもattitude(仮説を立て、徹底的に検証する)が重要と
> #いうのが本当の主題だったと思います。
>
>
> analyzeの文脈でキャッシュの話をするのであれば少なくとも
> 「(もっとキャッシュが大きなCPUもあるので)ring-bufferのサイズを256kよりも 大きくしたらanalyzeの実行速度にどの程
> 度の影響があるのか? 単にシーケン シャルスキャンするだけなら、L2キャッシュは関係ないのでは?」
>
> 「ドキュメントにはL2キャッシュとあるが、最近のCPUはマルチコアだし、 キャッシュの関係がもっと複雑。ring-bufferとして確保し
> た領域が、実際の CPU毎にどこに確保されて、どんなアクセスをされるのか、実際に確認する」
>
> 「たまたま同じテーブルを、通常のプロセスとanalyzeを実行するプロセスが同 時にアクセスしたとすると、ring-bufferは共用され
> るのか? 共用すると仮定 して、analyzeのプロセスから遠いコアで確保された場合、analyze処理に与える 影響は?」
>
> などなど、
> 定性的な話はもとより、簡単に実験可能な仮説は実際に実験していただいた上で、
> その実験方法ふくめて皆で議論するようなレベルにしていきたいと考えています。
> #幸い、既に常連さんの多くはそのレベルで話をしているようですが。
>
>
>
> _______________________________________________
> Pg_study mailing list
> Pg_study @ ml.postgresql.jp
> http://ml.postgresql.jp/mailman/listinfo/pg_study
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://ml.postgresql.jp/pipermail/pg_study/attachments/20140524/a3283fd4/attachment.html>


Pg_study メーリングリストの案内