2008年2月25日月曜日

postgresqlユーザー会合宿

久々のブログ。

22、23とかけて佐賀県嬉野温泉にてポスグレユーザー会(JPUG)合宿が行われました。
ほんとは写真をいっぱいとってきたかったのだが、カメラが今ないためテキストベースですまん。

んで何をするかというと先日発表されたばっかりのpostgresqlバージョン8.3にてインデクス、先行書き込み効率、ファイルキャッシングなどを有効に活用し、チーム戦で夜通し最も早く早くしていくというチューニング大会ですね。

マシンは動作環境を一律に行うためsun microsystemsさん提供のSun FireというマシンでOSがSolaris。
この提供していただいたマシンはなんとメモリ8GBメモリ (2GB DIMM x 4 DDR/400)、私がやった仕事の中でこういったreadだけだとすべてオンメモリできそうなマシンははじめてでメモリの有効な活用方法などまったく検討つかなかったな。
そしておまけにSolarisというまた初めて使ったディストリビューションですこし戸惑ったな。

普段、触れる機会がないからいいきっかけになり、勉強になった。

んでチーム分けを行って(ちなみに自分はAチーム)、postgresqlのコンパイルから入り、readlineライブラリがなかったり、arコマンドへのパスが通っていなかったり、64bit対応にするなどコンパイルでこけまくったが、チームの壁を乗り越え、みなさんの高度なスキルによってすばやく解決され、データーベースを作り、tableを作成して、いざデータinsert ・・・。 ・・・終わらない。データ量が多すぎるようで時間がかかりすぎているようです。
ちなみにデータ量は3つのテーブルで(10万件、100万件、1000万件)のスケールでした。

データ量を下げて10分ぐらいで入ったようです。残念ながらその時のスケールは忘れてしまいました。

そしてチューニング開始!

Aチームはインデックスやる人やpostgres.confを触る人、count(*)でデータをなめるwarmup.sqlを作る人とチーム内で自然に分担が決まっていき、自分はどっちつかずでただのぞき、おーすげーすげーと口挟むだけでした。

インデックスは最初、各カラムに付けていた形をとっていたのですが、explain analyzeしてみると複合インデックスの方が劇的に早くなり、これでいくようになりました。sqlを掲載いいのかわからないので一応控えておきますが、あしからず。

warmup.sqlはselect count(*) from xxx;などとVacume analyze;をセットにして検証する際に発生するコマンドライン量とメモリへのバッファリングを一括でやってしまうという技もでてきました。

postgresql.confの設定がさすがにかなりの変動を起こしたのですが、記憶している分では以下のようなことが上げられます。

  1. shared_bufferの変更
  2. 先行書き込み同期メソッド(wal_sync_method)をfsyncからfdatasyncへの置き換え
    1. 一番凄まじかった。
  3. wal_buffersを64kb->640kbへ変更
    1. ここも結構変わった。
  4. full_page_writes = on -> off
    1. ここ怪しいところ。
    1. 8.1.2までの時はここはoffだとdownしたとき復旧できなくなる可能性があったようだけど8.3ではもう大丈夫なのかな。

っといったところでしょうか。
※ウル覚えなので間違っているかもしれません。

っとまぁこんな感じに作業をしていると風呂に2度以上入っている方やお酒に酔いしれている方、部屋で寝ている方、ソファーで寝てる方など温泉地とpostgresチューニングという普段味合わない空気感を感じつつ、ぽつぽつと会場から人気がなくなっていき、午前2時ぐらいにその日は終止符が打たれ、ベットイン。

そして2日目、発表では大接戦の末Aチームは不正を働いた?ものの優勝しましてBチームは正常な範囲で順優勝、Cチームはいろいろとやりすぎてデータが壊れ再起不能となって棄権となりました。

Cチームも午前2時まで相当接戦が続いていたけども無念です。

なんかこの一連のスタイルは私が学生時代にやっていたrobocupというロボットプログラミング大会の前夜のホテル内の様子と似ていたような気がします。

まぁこっちは大会前夜なんでぴりぴりしたムードでキャリブレーションをやってましたけどね。(笑

あと、チューニング大会結果発表前にプレゼンテーションなどがありましてskypeの pgbouncerPLProxyの紹介があり、Skype のユーザー管理がpostgresqlで動いていることを初めて知った。
baculaというOSSのバックアップシステム、HA構成をHeartbeatで実際やっている人などの紹介なんかがあり、普段聞かないようなことをまた知ることができたなと思いますね。

東京にいかずにこういうのに参加できるってどんなにすばらしいことか。ほんと貴重です。

そして温泉旅館を出て福岡を案内。九州外の方たちが多かったのでどこがいいかなっと九州支部で悩んだあげくやっぱあそこだろうと太宰府天満宮に行きましたね。
私は幼い頃には毎年正月にお参りいってましたが、最近は全然いかなくなってたので、なんか懐かしい感じ。ちょうど桜が咲いていたのでちょうどよかったな。
九州外の方たちに喜んでいただけたかわかんないですが、わたしが楽しかったのでよしとしましょう。

九州でやってくれてありがとうといいたい。

来年も行こうかな。
仕事やめるから金がないんだった。だれか俺に1円でもいいから投資を!

4 件のコメント:

さんのコメント...

おひさしぶりです。
先輩!!会社辞めるんですか!?
あんだけ僕に転職すると辞めるクセがつくから止めとけって話してたのに(笑
でも、なんか楽しそうですね

津留 大次郎 さんのコメント...

おー ひさ。
>あんだけ僕に転職すると辞めるクセがつくから止めとけって話してたのに
おれは転職ではない。ただやめるだけだから上記と当てはまらない。

津留 大次郎 さんのコメント...

jpugのtakatuskaさんから合宿の詳細が発表されています。
----
http://www.postgresql.jp/events/event_files/gasshuku200802benchmark

・成績の変遷表
・各チームの設定や工夫内容

は、未だ掲載しておりません。
----

メモリ16GBと書いていましたが、間違いで8GBでした。記事を編集しています。

匿名 さんのコメント...

Who knows where to download XRumer 5.0 Palladium?
Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!