[pgpool-general-jp: 851] Re: シーケンスを含むテーブルへのINSERTが遅い

Tatsuo Ishii ishii @ sraoss.co.jp
2010年 11月 12日 (金) 17:55:25 JST


> 問題1:INTEGER型 + default nexyval('seqname') が悪い
>  
>  pg_catalog.apdsrc ~ 'nextval' から attname を取得して
>  SERIAL型のシーケンス名を作っているようです。
> 
>  snprintf(seq_rel_name, MAX_SEQ_NAME, "%s_%s_seq", table, atrname);
> 
>  今回の場合、シーケンス名はcreate sequence で指定した名前で、
>  seq_rel_name と一致しませんでした。
> 
>  SERIAL型に変更したら、問題なく動きました。

すみません。こういう使い方は想定してませんでした。

> 問題2:table になぜかダブルクォーテーションがつく
> 
>  テーブル名    : tabname
>  SERIAL型の列名: col
>  とした場合、
> 
>  pgpoolが期待しているSQLは、おそらく
>  SELECT 1 FROM tabname_col_seq FOR UPDATE;
>  それが、なぜか
>  SELECT 1 FROM "tabname"_col_seq FOR UPDATE;
>  になります。
> 
>  ログに
>  get_insert_command_table_name: extracted table name: "tabname"
>  と出力されています。
> 
>  これが原因で、tabname を SELECTしているようで、応答が遅いみたいです。
> 
> 
> さて、SERIAL型への変更はよいとして、テーブル名はどうしようもなく、
> 困っております。
> 
> get_insert_command_table_name()より中を見ていけば謎が解明できそうです。
> 
> また、明日頑張ります。

お待たせしました。こちらの方の修正パッチを作りましたので、お試しいただ
けますでしょうか?
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: pgpool.patch
型:         text/x-patch
サイズ:     1748 バイト
説明:       無し
URL:        http://www.sraoss.jp/pipermail/pgpool-general-jp/attachments/20101112/0b73fc6f/attachment.bin 


pgpool-general-jp メーリングリストの案内