Hiroaki Nakamura
hnaka****@gmail*****
2015年 8月 11日 (火) 23:34:02 JST
2015年8月11日 22:54 Kouhei Sutou <kou****@clear*****>: > > 須藤です。 > > In <CAN-DUMQdzME0Obr+c=5779-c=MOmJ1JdQ-KeLc38d=2tvMM****@mail*****> > "[groonga-dev,03400] Re: PostgreSQLとgroongaのレコードの紐付けにctidを使うのは大丈夫なのでしょうか?" on Tue, 11 Aug 2015 22:39:33 +0900, > Hiroaki Nakamura <hnaka****@gmail*****> wrote: > > >> VACUUM FULLしたときも大丈夫なのかは試さないとわからないんで > >> すが、GINもctidを格納しているように見えるので大丈夫じゃない > >> かなぁと思っています。 > >> > >> 念のため試してみるか!という気持ちになったら結果を教えてもら > >> えるとうれしいです。 > >> > > > > https://github.com/pgroonga/pgroonga/blob/6d3600c12c5abda068facebacc44751eecd48eb9/README.md > > memosのテーブルでinsertしたあと一部のレコードをdeleteして再度insertした状態でvacuum fullを試してみました。 > > おぉ、ありがとうございます! > > > ということで、現状の実装としてはvacuum fullやtruncateすると > > Groongaのテーブルは新しく作りなおされ、ctidの対応はとれているようです。 > > なるほど。たしかにそれだと大丈夫ですね。 紐付けがとれているという点では問題ないのですが、別の問題として Groonga側に古いテーブルがどんどん残ってしまうという問題があるのかなと思っています。 vacuum fullやtruncateした後に groonga pgrnで接続してtable_listを実行してみると 古いSourcesXXXXも残ったままになっています。 "PostgreSQL: pg_am - PostgreSQL 雑記 - postgresqlグループ" https://postgresql.g.hatena.ne.jp/pgsql/20090719/1248008626 によるとそもそもpg_amにDROP INDEXのときのフックが無いという仕様上の問題が あるみたいなんですが、運用を考えるとゴミとなった古いテーブルを 消すような仕組みを用意して定期的に実行するとかの対応が必要かと 思います。 参照されていないGroongaのテーブルをまとめて消すような仕組みを 作ることは可能でしょうか? Groonga側のテーブル名が変わった時に古い方を自動で消すことが もし可能ならそちらのほうが望ましいです。 > > 本題と外れるのですが、元記事は新規スレッドで投稿するつもりだったのですが、 > > gmail上での宛先コピペ操作ミスなのか、無関係の別スレッドに繋げてしまってすみませんでした。 > > あ、 > > http://osdn.jp/projects/groonga/lists/archive/dev/2015-August/thread.html > > で見たときの話ですか?たぶん、これはアーカイバーのバグです。 > メールのヘッダーにはReferencesがついていないので繋がっていな > いです。大丈夫です。 はい、アーカイブページで見た時の話でした。大丈夫とのことでよかったです。 私のメールだけ署名の後にnext partとかついてるし、てっきり私のメールがおかしいのかと 思ってました。と思ったらこの点に関してはHTMLメールだったからということに今気づきました。 このメールはプレーンテキストモードにして送ってみます。 -- 中村 弘輝 )Hiroaki Nakamura)